下载docker-compose.yml
wget https://raw.githubusercontent.com/DIYgod/RSSHub/master/docker-compose.yml
创建 volume 持久化 Redis 缓存
$ docker volume create redis-data
启动
$ docker-compose up -d``` <!--more-->浏览器访问 `ip:1200` 看到以下界面即部署完成>如果是本地部署,则访问`localhost:1200`![2016493769.png][2]### docker-compose配置文件 [配置文件文档][3]```YML version: '3'services: rsshub: image: diygod/rsshub restart: always ports: - '1200:1200' #监听端口 environment: NODE_ENV: production #是否显示错误输出(production 关闭输出) CACHE_TYPE: redis #缓存类型 REDIS_URL: 'redis://redis:6379/' # Redis 连接地址 PUPPETEER_WS_ENDPOINT: 'ws://browserless:3000' #用于 puppeteer.connect 的浏览器 websocket 链接 depends_on: - redis - browserless browserless: # See issue 6680 image: browserless/chrome:1.43-chrome-stable restart: always ulimits: core: hard: 0 soft: 0 redis: image: redis:alpine restart: always volumes: - redis-data:/datavolumes: redis-data:
在宝塔创建站点,选择数据库MySQL
Tips:可以第一行随意填写一个域名,第二行填写ip:ports,建站完成后在网站设置中删除第一行的域名。
这样可以实现单ip无域名建立多个网站,不浪费服务器资源
前往/www/wwwroot/
目录,打开刚刚创建网站根目录,删除根目录中宝塔默认创建的所有文件(.user.ini
可忽略)
从FreshRSS官网下载源码,并解压到根目录。
打开软件商店-PHP设置-禁用函数,找到openlog
和syslog
,点删除取消禁用
选择 安装扩展 ,安装fileinfo
,耐心等待安装完成。
访问创建网站时设置的域名或ip地址,即可进入FreshRSS安装程序。
根据网页提示设置用户名及密码,数据库地址填localhost
本地数据库,数据库用户名、数据库名、数据库密码根据之前创建网站时的信息填写。
登陆后在右上角齿轮中打开设置,点击认证
勾选
在左侧用户账户选项中,最下方的API管理中输入想要设定的api密码,点击钥匙图标保存并提交
下方的地址即是用于手机端RSS应用的地址
仓库地址RssHub Radar
安装后打开插件设置,将自定义 RSSHub 域名
更改为你的RSSHub域名
在下方一键订阅中勾选FreshRSS
,链接可在FreshRSS 设置-用户账户-认证口令下方找到
注意,如果未配置https,请务必不要选择https,否则会出现下面的情况
你可以找到任何一个RSSHub所支持的网站支持路由列表
此时点击RssHub Radar插件,点击一键订阅,即可订阅当前网站
组件 | 型号 | 数量 | 备注 |
---|---|---|---|
Ardunio mini pro | 5V/16M | 2 | |
L298N电机驱动模块 | 1 | ||
带底板HC-05主从机一体蓝牙模块 | HC05原装版 | 2 | 原装和非原装都可 |
游戏摇杆控制杆传感器 JoyStick模块 | 1 | ||
18650电池盒 | 2节带线 | 1 | 可买3节装 |
18650锂电池 3.7V | 2000-2100HAM | 2 | 建议买3节以得到11V电压 |
USB转TTL CH340G模块 | CH340G | 1 | |
M3单头 六角铜柱 螺柱 | M3*20+6(10个) | 1 | |
M3单头 六角铜柱 螺柱 | 平头螺丝M3*5(100个) | 1 | |
M3单头 六角铜柱 螺柱 | 六角螺母M3 内径3MM(100个) | 1 | |
杜邦线 一排40根 | 公对公(10CM) | 1 | |
杜邦线 一排40根 | 公对母(10CM) | 1 | |
杜邦线 一排40根 | 母对母(10CM) | 1 | |
间距2.54MM单排排针 (20个) | 1*40PIN | 1 | |
Arduino MB102大面包板+电源模块 | 1 | ||
洞洞板 | 7*9cm | 1 | |
微型小船形开关 | 黑色2脚2档铜脚(5只) | 1 | |
智能小车底盘 强磁电机 | 1 | 两轮 | |
小车底板 | 1 | 圆形(当作上盖,盖住接线) | |
下方为购买后未用到的组件(目前未使用或使用中出现问题) | |||
18650锂电池充电板 | TYPE-C USB接口 | 1 | |
HC-SR04 超声波传感器 | 1 | ||
3.7V转12V迷你DC-DC升压模块 | 1 | 输出电流不达标 | |
蜂鸣器 | 3-~12V无源通用电磁式16欧2kHz(5只) | 1 | |
MT3608 2a升压板 DC-DC升压模块 | 1 |
串行:0(RX)和1(TX) 用于接收(RX)和发送(TX)TTL串行数据。(一定要将其他设备的RXD、TXD分别接在pro mini 的TXD、RXD接口上,即发送对接收)
PWM: 3、5、6、9、10和11。 提供带AnalogWrite 功能的8位PWM输出。
RAW用于为电路板提供原始电压
VCC3.3V或5V电源
GND接地引脚
注意:如果使用5V电源供电则接VCC GND ,7~9V电源 RAW GND
你也可以选用Ardunio uno等其他型号
可以看到有3个跳线帽
板载5V使能、通道A使能和通道B使能
如果在12V供电处输入7~12V电压,可以安装上板载5V使能跳线帽,此时可以从5V供电处得到一个5V输出,可用于给pro mini 或其他组件供电。
当驱动电压高于12V,小于等于24V时,必须拔掉板载5V使能跳线帽,然后在5V供电端口外部接入5V电压对L298N内部逻辑电路供电,此时pro mini 等组件需外部单独供电。
可通过通道A使能及通道B使能这两个端口实现PWM调速(使用PWM调速时需取下跳线帽)
注意:L298N使用时需要与pro mini共地
网上售卖的分为兼容版和原装版两种,区别不是很大,我买的时候买了一个兼容板和原装板
USB转TTL | HC-05 |
---|---|
TXD | RXD |
RXD | TXD |
GND | GND |
5V | VCC |
注意:我这里兼容版是按照表格里的接线方法接线的,使用正常。使用原装版时,按照此方法电脑提示设备运转不正常,将USB转TTL的 VCC 对应了HC-05上的 VCC后,运作正常
#define joyX A0#define joyY A1int button=2;int buttonState = 0;int buttonState1 = 0;void setup() { pinMode(7,OUTPUT); pinMode(button,INPUT); digitalWrite(button, HIGH); Serial.begin(9600);}void loop(void){ Serial.print(analogRead(1)); //读取摇杆Y轴的值,串口显示 Serial.print(","); Serial.print(analogRead(0)); //读取摇杆X轴的值,串口显示 Serial.println(","); delay(1000);}
打开串口监视器 可以看到随着摇杆的运动,数据在不断变换
默认的位置在 513,525 左右,这是中间位置(不同摇杆这个数值可能不同)。
其值介于0到1023之间
将零件自行组装
请根据体感自行调整导柱长度,我的下方2个万向轮处给的8根导柱过长,导致小车不能直行,于是手动将其磨短了4mm左右。
IDE的使用为Arduino官方的IDE,下载地址https://www.arduino.cc/en/Main/Software
int xAxis, yAxis;void setup() { Serial.begin(38400); //蓝牙模块的默认通讯速率}void loop() { xAxis = analogRead(A0); //读取X轴数据 yAxis = analogRead(A1); //读取Y轴数据 //通过串口发送到从属HC-05蓝牙模块 Serial.write(xAxis/4); //除以4以将数值从0-1023转换为0-256 (1字节) Serial.write(yAxis/4); delay(20);}
通过将操纵杆X、Y轴的数值除以4,可以将其从0-1023转换为0-255之间的值,就可以通过蓝牙设备将其作为1个字节发送,这样易于从属设备接收。
#define enA 10#define in1 3#define in2 5#define enB 11#define in3 6#define in4 9int xAxis, yAxis;unsigned int x = 0;unsigned int y = 0;int motorSpeedA = 0;int motorSpeedB = 0;void setup() { pinMode(enA, OUTPUT); pinMode(enB, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); Serial.begin(38400); //蓝牙模块的默认通讯速率}void loop() { //默认值,摇杆在中心位置时不移动,依据前面摇杆测试自行填写,摇杆之间可能会有所不同 x = 513 / 4; y = 525 / 4; //从蓝牙主设备读取数据,串行接收到2个字节的数据,即X轴、Y轴,使用 Serial.read 函数读取 while (Serial.available() >= 2) { x = Serial.read(); delay(10); y = Serial.read(); } delay(10); //将接收到的值从0-255转换成0-1023 xAxis = x*4; yAxis = y*4; //增加一点公差,并将470到550的值视为中心.如果向后移动摇杆的Y轴并且该值低于470,那么将两个电动机的旋转方向设置为向后,否则向前 //Y轴用于前进及后退 if (yAxis < 470) { //马达A前进 digitalWrite(in1, HIGH); //此处的 LOW 和 HIGH 请根据你的马达接线方式自行调整 digitalWrite(in2, LOW); //马达B前进 digitalWrite(in3, HIGH); digitalWrite(in4, LOW); //将Y轴的下降值从470转换为0,将PWM值从0转换为255,即电动机的速度 motorSpeedA = map(yAxis, 470, 0, 0, 255); motorSpeedB = map(yAxis, 470, 0, 0, 255); } else if (yAxis > 550) { //马达A后退 digitalWrite(in1, LOW); digitalWrite(in2, HIGH); //马达B后退 digitalWrite(in3, LOW); digitalWrite(in4, HIGH); //将Y轴的上升值从550转换为1023,将PWM值从0转换为255,即电动机的速度 motorSpeedA = map(yAxis, 550, 1023, 0, 255); motorSpeedB = map(yAxis, 550, 1023, 0, 255); } //如果摇杆在中心,则速度为0 else { motorSpeedA = 0; motorSpeedB = 0; } //X轴用于左转及右转 if (xAxis < 470) { //将X轴的下降值从470转换为0,将PWM值从0转换为255 int xMapped = map(xAxis, 470, 0, 0, 255); //左转:降低左马达速度,增大右马达速度 motorSpeedB = motorSpeedA + xMapped; motorSpeedA = motorSpeedB - xMapped; //将速度限制在0-255之间 if (motorSpeedA < 0) { motorSpeedA = 0; } if (motorSpeedB > 255) { motorSpeedB = 255; } } if (xAxis > 550) { //将X轴的上升值从550转换为1023,将PWM值从0转换为255 int xMapped = map(xAxis, 550, 1023, 0, 255); //右转:降低右马达速度,增大左马达速度 motorSpeedB = motorSpeedA - xMapped; motorSpeedA = motorSpeedB + xMapped; //将速度限制在0-255之间 if (motorSpeedA > 255) { motorSpeedA = 255; } if (motorSpeedB < 0) { motorSpeedB = 0; } } //根据施加的电压和电动机本身,在较低速度下,电动机将无法开始运行,并且会产生嗡嗡声,此处实际上是将速度限制在了75-255之间 //PWM信号的值低于75,电动机将无法运动(可自行根据马达和电压不同调整) if (motorSpeedA < 75) { motorSpeedA = 0; } if (motorSpeedB < 75) { motorSpeedB = 0; } analogWrite(enA, motorSpeedA); //向马达A发送PWM信号 analogWrite(enB, motorSpeedB); //向马达B发送PWM信号}
目前我们手里有两个HC-05蓝牙模块,我们需要将其中一个设置为主机,另一个设置为从机,来实现摇杆操控,为了实现这一点,我们需要在AT模式下使用AT命令。
在购买HC-05蓝牙模块时,卖家应该会发给你关于HC-05蓝牙模块的使用说明和蓝牙测试软件,如果没有,我这里有提供的材料
驱动及测试工具.zip
HC-05蓝牙模块出厂默认就是从机模式,配对码为1234(配对码可自行更改,但要确保主机和从机一致,指令集在上方附件中有提供),在此处,我们只需要将其中一个改为主机模式,然后通过绑定地址的方式让主机自动连接到从机。
以下为从机配置示例
ATOKAT+UART? +UART:9600,0,0 //表示当前波特率为9600OKAT+UART=38400,0,0,\r\n //这里是兼容版的蓝牙模块,需要输入 \r\n 对于原装版的蓝牙模块不需要输入,直接输入 AT+UART=38400,0,0, 即可OKAT+UART?+UART:38400,0,0OKAT+ROLE? //表示蓝牙模块处于从机模式+ROLE:0OKAT+ADDR?+ADDR:98d3:71:fdde39 //记下这个地址OK
_以下为主机_配置示例
ATOKAT+UART? +UART:9600,0,0OKAT+UART=38400,0,0,OKAT+UART?+UART:38400,0,0OKAT+ROLE?+ROLE:0OKAT+ROLE=1 //设置为主机模式OKAT+CMODE=0 //设置为固定地址连接模式OKAT+BIND=98d3,71,fdde39 //绑定之前的蓝牙地址,注意,在填写地址时,我们需要使用逗号而不是冒号OK
这样,蓝牙模块的设置就完成了,断电后重新上电,两块蓝牙模块会自动配对连接
其他指令及详细说明请参阅上方附件中的HC-05指令集文档
将USB转TTL与 mini pro 连接(连接mini pro只有6个排针那一侧的接口)
USB转TTL | mini pro |
---|---|
RXD | TXD |
TXD | RXD |
GND | GND |
VCC | VCC |
打开arduino的IDE,将上方程序填入,在工具栏中,选择 Arduino Pro or Pro mini,选择处理器,比如我买的这一块是5V/16M,选择端口,对应端口为CH340的端口,可以在设备管理器找到
点击上传按钮,在下方状态栏从编译项目变成上传中,马上按下pro mini 上的红色复位键,这里要多次尝试确认时机,就会提示上传完成,这时程序就写入了pro mini 中了
依次将小车和遥控器程序分别上传到两块pro mini 中
实际中,我这里马达out3 和out4 接线交换了一下,即out3为黑线 out4 为橙线,若出现左右转相反请自行修改代码
本来是打算全都用洞洞板连接,结果实际操作时发现不太好设计,于是就只是做了一个固定作用。其实可以不用洞洞板,只需要使用热熔胶固定即可,
图片左下方的是充电模块,因为一开始设计的时候,是打算两个电池并联,通过充电模块,再通过升压模块来给小车提供电源,但是实际使用时发现 3.7V转12V迷你DC-DC升压模块
出现问题,无法提供足量的电流,导致启动正常,电机运动会立刻断电
左侧的HC-SR04超声波模块 因为是发现升压模块出问题后重新修改的代码,并没有将其加入。
下方的是电源供给,将排针固定在了一小块洞洞板上,下方焊接在一起,接入电源的正负极即可。
至于遥控器,因为我没有找到合适的盒子来放置摇杆,目前是在面包板上使用,只是一个原型。
若使用 yum install nodejs npm -y 安装,安装后的 nodejs 版本为 6.17.1,版本低,部分应用运行会报错。
如果已经使用yum install nodejs npm -y
安装,则需要先卸载当前 nodejs
yum remove nodejs npm -y
/usr/local/lib/usr/local/include/usr/local/bin
目前官网最新的 nodejs 为 12.14.1
wget https://nodejs.org/dist/v12.14.1/node-v12.14.1-linux-x64.tar.xz
xz -d node-v12.14.1-linux-x64.tar.xztar -xf node-v12.14.1-linux-x64.tar
上述下载位置为~/node-v12.14.1-linux-x64
⚠️必须给全路径
ln -s ~/node-12.14.1-linux-x64/bin/node /usr/bin/nodeln -s ~/node-v12.14.1-linux-x64/bin/npm /usr/bin/npm
node -vnpm -v
正确输出版本号则安装完毕
]]>系统版本:CentOS 7.4 本文的系统命令都是在 root 账号下执行的,假如非 root 账号执行,提示没有权限,可在命令前加 sudo
系统版本:CentOS 7.4
本文的系统命令都是在 root 账号下执行的,假如非 root 账号执行,提示没有权限,可在命令前加sudo
cd /etc/yum.repos.d/cp /CentOS-Base.repo /CentOS-Base-repo.bak
wget http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
mv Centos-7.repo CentOS-Base.repo
yum makecacheyum update
yum -y install yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates |sort -r
4. 安装指定版本, 当前 centos 可用为 18.03.1.ce-1.el7.centos
yum install docker-ce-18.03.1.ce-1.el7.centos
中途会有二次确认,按 Y 即可
安装完成后输入docker version
可查看当前版本
CentOS 7 自带 python 版本为 python2.7
yum -y groupinstall "Development tools"yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
python3.7 以上版本,需要额外安装
yum install libffi-devel -y
wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tar.xz
mkdir /usr/local/python3
tar -xvJf Python-3.7.6.tar.xzcd Python-3.7.6./configure --prefix=/usr/local/python3make && make install
ln -s /usr/local/python3/bin/python3 /usr/bin/python3ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
python3
yum update
vi /etc/docker/daemon.json
按i
开启编辑模式,在其中输入如下内容
{"registry-mirrors": ["https://registry.docker-cn.com"]}
:wq
保存退出
如果保存出错"/etc/docker/daemon.json" E212: Can't open file for writing
那么手动创建docker
文件夹后再创建daemon.json
文件
cd /etcmkdir dockercd /etc/dockervim daemon.json
systemctl start docker
下载镜像
docker pull tikazyq/crawlab:latest
4. 安装 docker-compose
下载 Docker Compose 的当前稳定版本
curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
将可执行权限应用于二进制文件
chmod +x /usr/local/bin/docker-compose
测试安装
docker-compose --version
5. 查找 docker-compose.yml 文件位置
find / -name "docker-compose.yml*"
cd /var/lib/docker/overlay2/XXXX/diff/app/
此处XXXX
替换为你的路径
6. 配置 docker-compose.yml 文件
参考官方文档
7. 启动 Crawlab
docker-compose up -d #默认为守护进程模式,容器以后台方式运行
第一次启动会下载安装数据库 Redis 和 Mongodb
8. 访问 Crawlab
在浏览器中输入 http://你的ip:8080
即可看到 Crawlab 界面
⚠️在服务器防火墙放行 8080 端口
9. 再启动
更新后
# 关闭并删除 Docker 容器docker-compose down# 拉取最新镜像docker pull tikazyq/crawlab:latest# 启动 Docker 容器docker-compose up -d
重启后
查找 docker-compose.yml 文件位置
cd 到 docker-compose.yml 所在文件目录下
启动
docker-compose up -d
参考文档:
1.https://blog.csdn.net/kai402458953/article/details/100035672
2.https://blog.csdn.net/kai402458953/article/details/100026109
3.https://www.zhihu.com/question/277141716
官方文档:
https://docs.crawlab.cn/Installation/Docker.html
项目地址:
https://github.com/crawlab-team/crawlab