本文仅展示使用docker 方式配置
在任意目录下创建 docker-compose.yml
相比官方的本地配置需要多一些配置选项:
version: '3'
services:
master:
image: zkqiang/crawlab-lite:latest
container_name: master
ports:
- "8080:8080"
volumes:
- "./data:/app/data" # 数据持久化的挂载
restart: always # 自动重启
network_mode: "host" # 配置使用主机上网
environment: # 配置主机外网端口
CRAWLAB_USER_USERNAME: xxx# login username 用户名
CRAWLAB_USER_PASSWORD: xxx# login password 用户密码
CRAWLAB_API_ADDRESS: "http://服务器ip:8000" # backend API address 后端 API 地址. 适用于 https 或者源码部署
在目录下运行命令:
docker-compose up -d
访问 http://服务器ip:8080,这时候似乎没有启动,因为我的情况是主机80端口被占用,导致容器里的80端口启动冲突。所以下一步就是关闭容器里的 80 端口
我们使用 docker ps
查看容器 id ( CONTAINER ID )
然后我们进入容器:
sudo docker exec -it CONTAINER ID /bin/bash
进入了容器会显示
root@iZ2zehbxenfwlucqyevp4vZ:/app/backend#
这时候容器是跟随主机联网的,那先装个 nano
apt install nano
修改nginx
nano /etc/nginx/sites-enabled/default
把文件里的80端口相关的注释掉,保存,重启nginx
service nginx start
访问 http://服务器ip:8080,显示正常了。
在容器内操作:
下载并安装最新的Google Chrome版本
执行如下命令:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i --force-depends google-chrome-stable_current_amd64.deb
查看谷歌浏览器的版本号 google-chrome --version
这个版本一定要和 chrome driver 的版本对应,不然用不了。
国内可以访问下面的地址下载chrome http://npm.taobao.org/mirrors/chromedriver/ 点开一个驱动版本有个notes.txt文件 里面有浏览器和驱动的版本对应。
比如文件显示: 就是87 的ChromeDriver 只支持 87 的chrome
---------ChromeDriver 87.0.4280.20 (2020-10-15)---------
Supports Chrome version 87
安装ChromeDriver
1、安装xvfb以便我们可以无头奔跑地运行Chrome sudo apt-get install xvfb
2、安装依赖 sudo apt-get install unzip
3、下载安装包 :这里可以直接去淘宝的镜像下载。找到对应的版本:比如:
http://npm.taobao.org/mirrors/chromedriver/87.0.4280.20/chromedriver_linux64.zip
然后:
wget -N http://npm.taobao.org/mirrors/chromedriver/87.0.4280.20/chromedriver_linux64.zip
4、解压缩+添加执行权限 unzip chromedriver_linux64.zip
chmod +x chromedriver
5、移动 sudo mv -f chromedriver /usr/bin/chromedriver
安装selenium
pip install selenium
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument("window-size=1024,768")
chrome_options.add_argument("--no-sandbox")
self.driver = webdriver.Chrome(chrome_options=chrome_options)