zoukankan      html  css  js  c++  java
  • ubuntu云服务器配置爬虫库

    用的是腾讯云学生机

    系统是ubuntu18.04

    安装anacondas

    是从清华大学的镜像源里找到自己喜欢的版本

    https://repo.anaconda.com/archive

    使用wget来直接安装指定版本的anacondas

    wget https://repo.anaconda.com/archive/Anaconda3-5.3.1-Linux-x86_64.sh
    

    运行安装包的脚本文件

    bash Anaconda3-5.3.1-Linux-x86_64.sh
    

    按提示完成安装~

    配置anacondas环境变量

    打开配置文件

    sudo vim ~/.bashrc
    

    在最后一行中加入自己安装的anaconda下bin的路径

    #set Anaconda3 environment
    export PATH="/home/ubuntu/anaconda3/bin:$PATH"
    

    使文件立即生效

    source ~/.bashrc
    

    配置jupyter

    生成一个sha1加密的密文

    vim generateSha.py
    

    在里边写入

    from notebook.auth import passwd
    print(passwd('google'))
    

    运行py文件得到一串sha1加密的密文,记下来

    sha1:eb9b3623beca:60166d5389186cff356195341f2b92c77735caf8

    python generateSha.py
    

    查看jupyter配置文件的路径

    jupyter notebook --generate-config
    

    打开jupyter配置文件

    vim /home/ubuntu/.jupyter/jupyter_notebook_config.py
    

    加入以下内容

    c.NotebookApp.ip = '*'
    c.NotebookApp.port = 8888
    c.NotebookApp.open_browser = False
    c.NotebookApp.password = u'sha1:175857feb4bc:81edf72d2ad0f8f634dc8aa3ca8f195f2580219a'
    

    意外:通常Xshell如果断开连接后需要重新使文件立即生效

    source ~/.bashrc
    

    创建一个jupyter-workplace的工作空间,用存放咋们的工程

    mkdir jupyter-workplace
    

    进入jupyter-workplace文件夹

    cd jupyter-workplace
    

    启动jupyter,让其在后台运行并输出日志到jupyter.log中

    nohup jupyter notebook --allow-root > jupyter.log 2>&1 &
    

    修改jupyter权限,否则会出现创建ipynb被拒绝的情况

    sudo chmod 777 ~/.local/share/jupyter/
    

    安装请求库

    requests安装

    (anacandas已有)

    pip安装

    pip install -i https://pypi.doubanio.com/simple/ requests
    

    Selenium安装

    pip install -i https://pypi.doubanio.com/simple/ Selenium
    

    ChromeDriver安装

    (嘤嘤嘤装不上,go die了)


    假如你是国外的云服务器:下载指令,卧槽我忘了国内服务器访问不了谷歌平台。。嗨呀这条指令只适用海外的服务器

    wget -O gdrive https://sites.google.com/site/wun913/Home/gdrive-linux-x64
    

    假如你是国内的云服务器:

    搭个梯子到这里下载以后,再用Xtfp啥的文件传输工具传到服务器吧。。

    https://sites.google.com/site/wun913/Home/gdrive-linux-x64


    root权限下:移动 gdrive 到 /usr/bin

    mv gdrive-linux-x64 /usr/bin/gdrive
    

    添加执行权限

    chmod +x /usr/bin/gdrive
    

    aiohttp安装

    pip install -i https://pypi.doubanio.com/simple/ aiohttp
    

    安装解析库

    lxml安装

    (忘了看anacondas有没有装了就报错了,好像是自带了0 0)

    先安装必要的库

    sudo apt-get install -y python3-dev build-essential libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev
    

    再pip安装

    pip install -i https://pypi.doubanio.com/simple/ lxml
    

    Beautiful Soup安装

    (anacondas自带了)

    pip install -i https://pypi.doubanio.com/simple/ beautifulsoup4
    

    pyquery安装

    pip install -i https://pypi.doubanio.com/simple/ pyquery
    

    tesserocr安装

    安装各种版本的依赖

    sudo apt-get install -y tesseract-ocr libtesseract-dev libleptonica-dev
    

    安装完以后可以用命令运行一下查看语言

    tesseract --list-langs
    

    他只支持几种语言,想要安装其他语言的话就得去为https://github.com/tesseract-ocr/tessdata下载

    克隆到服务器上

    git clone https://github.com/tesseract-ocr/tessdata.git
    

    迁移到tesseract中

    sudo mv tessdata/* /usr/share/tesseract-ocr/tessdata
    

    再用pip安装

    pip install -i https://pypi.doubanio.com/simple/ tesserocr
    

    安装数据库

    mysql安装

    apt安装

    sudo apt-get update 
    sudo apt-get install -y mysql-server mysql-client
    

    MongoDB安装

    apt安装

    sudo apt install -y mongodb
    

    使mongoDB在端口27017上运行,数据文件保存到/data/db路径下

    mongod --port 27017 --dbpath /data/db 
    

    进入mongo数据库创建一个角色信息用于远程访问

    进入mongo数据库

    mongo --port 27017
    

    创建一个数据库角色,名为moon,密码为123,权限为root,使用的数据库为admin

    db.createUser({user:'moon',pwd:'123',roles:[{role:'root',db:'admin'}]})
    

    查看mongo配置文件路径

    ps -ax | grep mongod
    

    修改mongo配置文件使得能够远程访问

    sudo vi /etc/mongod.conf
    

    net部分和security修改如下:

    net: 
    	port: 27017 
    	bindip: 0.0.0.0
    security:
    	authorization:enabled
    

    重启mongoDB服务

    sudo systemctl restart mongodb
    

    其他相关指令


    更新用户密码

    use admin
    db.changeUserPassword('tank2','test');  
    

    查看服务当前状态

    sudo systemctl status mongodb
    

    停止服务

    sudo systemctl stop mongodb
    

    启动服务

    sudo systemctl restart mongodb
    

    禁用自启动

    sudo systemctl disable mongodb
    

    开启自启动

    sudo systemctl enable mongodb
    

    Redis安装

    apt安装

    sudo apt-get -y install redis-server
    

    进入Redis命令行验证是否安装成功

    进入Redis命令行

    redis-cli
    

    输入两条指令

    set 'name' 'Germey'
    
    get 'name'
    

    这样就成功了,但是还没有办法远程连接,于是接着。。

    image-20200706220444004

    打开本地文件

    vim /etc/redis/redis.conf
    

    注释掉这一行

    bind 127.0.0.1
    

    image-20200706220711318image-20200706220726579

    取消注释这一行

    requirepass foobared
    

    可以在vim搜索来找到这一行,foobared为当前密码,自行修改成自己想要的密码

    image-20200706221217261image-20200706221234027

    之后重启Redis服务

    sudo /etc/init.d/redis-server restart
    

    image-20200706221535727

    其他指令


    关闭Redis服务

    sudo /etc/init.d/redis-server stop
    

    开启Redis服务

    sudo /etc/init.d/redis-server start
    

    安装存储库

    PyMySQL安装

    pip install -i https://pypi.doubanio.com/simple/ pymysql
    

    PyMongo安装

    pip install -i https://pypi.doubanio.com/simple/ pymongo
    

    Redis-py安装

    pip install -i https://pypi.doubanio.com/simple/ redis
    

    RedisDump安装

    如果没有Ruby,先apt安装

    sudo apt-get install ruby-full
    

    再使用gem来安装RedisDump

    gem install redis-dump
    

    安装Web库

    Flask安装

    (已自带)

    pip install -i https://pypi.doubanio.com/simple/ flask
    

    Tornado安装

    (已自带)

    pip install -i https://pypi.doubanio.com/simple/ tornado
    

    安装App爬取相关库

    Charles安装

    这个好像没必要装在服务器上,因为是图形化界面的

    mitmproxy安装

    方法一:


    到https://github.com/mitmproxy/mitmproxy/releases/下载二进制包

    用Xftp传到服务器后解压,

    tar -zxvf mitmproxy-5.1.0.tar.gz
    

    进入安装的根目录,将三个文件移动到/usr/bin

    sudo mv mitmproxy mitmdump mitmweb /usr/bin
    

    方法二:


    先安装必要的库

    sudo apt-get install openssl 
    sudo apt-get install libssl-dev
    sudo apt-get install libc6-dev gcc
    sudo apt-get install -y make build-essential zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm tk-dev
    

    再用pip安装,一定要注意把--ignore-installed加上

    pip install mitmproxy --ignore-installed
    

    原文链接:https://blog.csdn.net/qq_39889867/article/details/83477480


    Appium安装

    ubuntu就是舒服。。只需要三条指令

    先安装nodejs

    sudo apt-get install nodejs
    

    再安装npm

    sudo apt-get install npm
    

    最后用npm安装appium

    npm install -g appium
    

    npm --registry http://registry.cnpmjs.org install -g appium

    安装爬虫框架

    pyspider安装

    pip install -i https://pypi.doubanio.com/simple/ pyspider
    

    Scrapy安装

    确保这些库已经安装

    sudo apt-get install build-essential python3-dev libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev
    

    之后使用Pip安装

    pip install Scrapy
    

    Scrapy-Splash安装

    通过docker来安装,安装好以后会自动启动服务运行,按ctrl+c退出

    docker run -p 8050:8050 scrapinghub/splash
    

    再加个参数-d使得Docker以守护态运行,这样的话它就一直在服务器上运行了

    docker run -d -p 8050:8050 scrapinghub/splash
    

    image-20200707102325335

    再用pip安装它的库

    pip install scrapy-splash
    

    Scrapy-Redis安装

    pip install scrapy-redis
    

    安装部署相关库

    Docker安装

    方法一:


    curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
    
    curl -sSL https://get.daocloud.io/docker | sh
    

    验证docker是否安装成功

    docker run hello-world
    

    方法二:


    apt安装

    sudo apt install docker.io
    

    启动docker

    systemctl start docker
    

    验证docker是否安装成功

    docker run hello-world
    

    开机自启动

    systemctl enable docker
    

    修改默认配置文件,咋们换个下载源

    sudo vim /etc/docker/daemon.json
    

    加入以下内容,把源换成中科大的

    { 
    
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] 
    
    }
    

    重启一下docker

    systemctl enable docker
    systemctl start docker
    

    Scrapyd安装

    1.安装

    首先pip安装

    pip install scrapyd
    

    找到配置文件

    find / -name "default_scrapyd.conf"
    

    image-20200707105813858

    2.配置文件

    打开配置文件

    vim /home/ubuntu/anaconda3/lib/python3.7/site-packages/scrapyd/default_scrapyd.conf
    

    bind_address = 127.0.0.1修改成bind_address = 0.0.0.0允许远程访问

    [scrapyd]
    eggs_dir    = eggs
    logs_dir    = logs
    items_dir   =
    jobs_to_keep = 5
    dbs_dir     = dbs
    max_proc    = 0
    max_proc_per_cpu = 4
    finished_to_keep = 100
    poll_interval = 5.0
    bind_address = 0.0.0.0
    http_port   = 6800
    debug       = off
    runner      = scrapyd.runner
    application = scrapyd.app.application
    launcher    = scrapyd.launcher.Launcher
    webroot     = scrapyd.website.Root
    
    [services]
    schedule.json     = scrapyd.webservice.Schedule
    cancel.json       = scrapyd.webservice.Cancel
    addversion.json   = scrapyd.webservice.AddVersion
    listprojects.json = scrapyd.webservice.ListProjects
    listversions.json = scrapyd.webservice.ListVersions
    listspiders.json  = scrapyd.webservice.ListSpiders
    delproject.json   = scrapyd.webservice.DeleteProject
    delversion.json   = scrapyd.webservice.DeleteVersion
    listjobs.json     = scrapyd.webservice.ListJobs
    daemonstatus.json = scrapyd.webservice.DaemonStatus
    

    3.启动服务

    启动scrapyd服务

    scrapyd
    

    这时候可以看到

    image-20200707110816766

    4.访问认证(nginx实现)

    安装nginx

    sudo apt install nginx
    

    在nginx配置文件目录下,创建一个scrapyd配置文件,sites-enabled这个文件夹下后缀名有没有无所谓

    vim /etc/nginx/sites-enabled/scrapyd
    

    配置信息如下

    server { 
    	listen 6801; 
    	location / { 
    		proxy_pass http://127.0.0.1:6800/; 
    		auth_basic "Restricted"; 
    		auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
    	}
    }
    
    

    到/etc/nginx/conf.d创建一个用户名为moon的密码文件.htpasswd

    cd /etc/nginx/conf.d
    htpasswd -c .htpasswd moon
    

    查看一下密码

    cat .htpasswd
    

    意外:假如还有没有htpasswd会找不到指令,得先安装一下

    sudo apt install apache2-utils
    

    重启nginx服务

    sudo nginx -s reload
    

    5.其他指令

    按ctrl+c退出,执行指令让它在后台运行

    setsid scrapyd
    

    如果想停止他的进程可以查他的PID

    ps -ef | grep -i scrapyd
    

    结束它的生命

    kill -9 PID
    

    但是这样不方便,所以自己写脚本来管理它(不方便就方便了我配置不动了QAQ就是不行

    在/etc/init.d下新建一个脚本文件

    vim /etc/init.d/scrapyd
    

    加入以下信息进行配置

    #!/bin/bash
    PORT=6800
    #这里是你的scrapyd安装目录,在前面已经有过怎么查找到这个目录了
    HOME="/home/ubuntu/anaconda3/lib/python3.7/site-packages/scrapyd"
    #这里是通过python安装后,scrapyd的执行目录
    BIN="/home/ubuntu/anaconda3/bin/scrapyd"
     
    pid=`netstat -lnopt | grep :$PORT | awk '/python/{gsub(//python/,"",$7);print $7;}'`
    start() {
       if [ -n "$pid" ]; then
          echo "server already start,pid:$pid"
          return 0
       fi
     
       cd $HOME
       nohup $BIN >> $HOME/scrapyd.log 2>&1 &
       echo "start at port:$PORT"
    }
     
    stop() {
       if [ -z "$pid" ]; then
          echo "not find program on port:$PORT"
          return 0
       fi
     
       #结束程序,使用讯号2,如果不行可以尝试讯号9强制结束
       kill -9 $pid
       echo "kill program use signal 9,pid:$pid"
    }
     
    status() {
       if [ -z "$pid" ]; then
          echo "not find program on port:$PORT"
       else
          echo "program is running,pid:$pid"
       fi
    }
     
    case $1 in
       start)
          start
       ;;
       stop)
          stop
       ;;
       status)
          status
       ;;
       *)
          echo "Usage: {start|stop|status}"
       ;;
    esac
     
    exit 0
    

    赋予可执行权限

    chmod u+x scrapyd
    

    测试

    开启服务

    service scrapyd start
    

    查看状态

    service scrapyd status
    

    关闭状态

    service scrapyd stop
    

    Scrapyd-Client安装

    pip安装

    pip install scrapyd-client
    

    验证安装是否成功

    scrapyd-deploy -h
    

    Scrapyd-API安装

    pip安装

    pip install python-scrapyd-api
    

    验证安装是否成功

    from scrapyd_api import ScrapydAPI 
    scrapyd = ScrapydAPI('http://localhost:6800') 
    print(scrapyd.list_projects())
    

    输出

    Scrapyrt安装

    pip安装

    pip install scrapyrt
    

    顺带记一下~启动scrapyrt服务

    scrapyrt
    

    Gerapy安装(么装上···

    pip安装

    pip install gerapy
    

    呕了装了一天。。太难了把各种版本冲突,大部分是正常的了以后需要用的时候再装或者弄几个虚拟环境装来用吧。。

    拓展:杀死后台进程和

    查看进程号

    ps -aux
    

    查看进程占用的端口

    netstat -atunp
    

    include /etc/nginx/conf.d/*.conf

    根据Pid杀死某个进程

    kill pid
    

    拓展:vim查找关键字

    比如想找requirepass,先按一下ESC再输入/requirepass/,然后回车!

    拓展:在linux下查找文件路径

    find / -name "default_scrapyd.conf"
    
  • 相关阅读:
    MVC中添加执行统计功能
    SVN 全局忽略列表
    WebApi当中微软又犯了一次2
    SQL性能更总
    【懒人专用】快速构建Web请求
    js中模拟多个字母的split
    分页起始位置的懒汉判断方法
    文档摆放
    转: 多线程环境下调用 HttpWebRequest 并发连接限制
    bash命令根据历史记录补全
  • 原文地址:https://www.cnblogs.com/lightice/p/13258205.html
Copyright © 2011-2022 走看看