这里主讲centos7 环境建站

  • 一、centos7系统安装
  • 二、安装Apache
  • 三、安装php
  • 四、安装Mysql
  • 五、安装扩展
  • 六、配置与启动
  • 七、安装python3
  • 八、安装scrapyd
  • 九、安装scrapyd-client
  • 十、定时任务
  • 十一、Crypto 解密
  • 报错


  • 安装前 检查以下是否已经安装,是否符合自己使用的版本(将xxx换成具体名称)
rpm -qa |grep xxx
  • 卸载包
rpm -qa|grep xxx
  • 清理
yum remove xxx

一、centos7系统安装

这里不做过多了解,一般购买服务器都会提供系统版本安装的

  • 安装gcc、gcc-c++ 等,因为以下安装需要先安装一些依赖包
# 网友提供以来安装
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
# 实际安装时缺少的依赖
yum install gcc gcc-c++
yum install make 
yum install wget
yum -y install zlib*
yum install net-tools
yum install sqlite-devel
yum install openssl
yum install openssl-devel
yum install curl
  • 使用 passwd root 修改登录密码

二、安装Apache

yum -y install httpd

三、安装php

yum -y install php

安装php-fpm

yum -y install php-fpm

四、安装Mysql

yum -y install mysql
  • 查看日志情况
    登录mysql 执行:show variables like ‘log_%’;

五、安装扩展

yum -y install mysql-server
yum -y install php-mysql
yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql
yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-devel
yum -y install mysql-connector-odbc mysql-devel libdbi-dbd-mysql
yum install php-pdo
# 有些系统 需要安装mysqli
yum install php-mysqli

六、配置与启动

  • 启动Apache
service httpd start
  • 启动Mysql
service mysqld start
  • 配置Mysql
// 进入mysql
mysql
// 选择db
use mysql
// 修改 root 密码
update user set authentication_string=password('密码') where user='root'
// exit 退出后重新登录  
// 回车后 输入密码
mysql -u root -p
// 查看用户表
SELECT `Host`,`User` FROM user;
// 更新用户表 可以远程登录
UPDATE user SET `Host` = '%' WHERE `User` = 'root' LIMIT 1;
// 刷新修改
flush privileges;
// exit 退出后重启mysql服务
service mysqld restart

// 相关 命令
show databases; 查看数据库实例
use dataName;  进入数据库实例
show tables; 查看数据库表
desc tableName; 查看数据库表结构
show create table tableName; 查看建表sql语句
  • 索引
//添加 唯一索引
alter table table_name add unique (column_list) ;

//删除表m_content中index_name类型索引
DROP INDEX index_name  ON m_content
//添加表m_content中index_name类型索引
ALTER TABLE `m_content` ADD INDEX index_name ( `chapter_id`, `imgurl` )
//查看表m_content中所有 索引
SHOW INDEX FROM m_content
  • Apache配置
    自行检查 各服务安装情况:echo phpinfo();
    apache配置文件在:/etc/httpd/conf
    apache工作目录在:/var/www/html,工作目录更换后需要配置权限
    关闭权限控制器 使用setenforce 0
    关闭关闭防火强 service iptables stop
    以上重启无效

    开启.htaccess及.htaccess的使用方法
    将 AllowOverride None 改为 AllowOverride All

mysql 5.5.3以上支持utf8mb4, utf8mb4兼容四字节的unicode和utf8
这里php使用的是 pdo访问数据库
如果不是符合自己使用的版本,百度手动安装

七、安装python3

  • 以python3.6为例
// 下载
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
// 解压
tar -zxvf Python-3.6.0.tgz
// 进入
cd Python-3.6.0
// 编译安装到  /usr/local/python3
./configure --prefix=/usr/local/python3
// 安装
make && make install

// 建立python3的软链
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

// 检查Python3及pip3是否正常可用:返回版本表示正常
python3 -V
pip3 -V
  • 执行文件在这个目录下 /usr/local/python3/bin
    有的网友说要添加到环境变量,我没有添加

八、安装scrapyd

官方文档

pip3 install scrapyd
  • 默认安装在python3/bin下有scrapyd文件
  • 创建目录 /etc/scrapyd
  • 创建文件 scrapyd.conf
[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 = 127.0.0.1  最好不要开放 外网  不安全  请删除这段中文说明
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

具体含义 自行百度

  • 启动
/usr/local/python3/bin/scrapyd
  • 检查启动情况
127.0.0.1:6800
  • 后台运行
nohup python3 scrapyd 2>&1 &
  • 配置
    设置爬虫(你的项目)根目录下scrapy.cfg配置文件
    编辑项目名称project = projectA (可以默认)
    deploy下添加 url = http://127.0.0.1:6800/ (ip地址与scrapyd.conf相同)
    如图

九、安装scrapyd-client

pip3 install scrapyd-client
  • 将python3/bin下 scrapyd-deploy文件复制到爬虫根目录
  • 进入项目进行部署你的爬虫(爬虫有改动需要重新部署)
python3 scrapyd-deploy default -p projectA
  • 查看当前主机已经部署的Scrapy项目
curl http://127.0.0.1:6800/listprojects.json
  • 执行爬虫
curl http://127.0.0.1:6800/schedule.json -d project=projectA -d spider=爬虫name
  • 停止爬虫
curl http://127.0.0.1:6800/cancel.json -d project=spider_demo -d job=097cd29aa6ef11e8ab735254003796ff
  • 删除部署
curl http://127.0.0.1:6800/delproject.json -d project=projectA
  • 查看job
curl http://127.0.0.1:6800/listjobs.json?project=m_manhuabei

十、定时任务

官网:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html

  • 创建、编辑计划任务的命令为 crontab -e
  • 查看当前计划任务命令为 crontab -l
  • 删除某条计划任务为 crontab -r
  • crontab服务操作说明:
    启动服务
/sbin/service crond start

关闭服务

/sbin/service crond stop

重启服务

/sbin/service crond restart

重新载入配置

/sbin/service crond reload

例子:
每分钟执行testH.py文件

crontab */1 * * * * /usr/bin/curl  python3 testH.py
//  每天凌晨2点30分执行
30 */2 * * * curl http://127.0.0.1:6800/schedule.json -d project=aProject -d spider=bSpider

// 每天12点、0点 执行
0 */12 * * * curl http://127.0.0.1:6800/schedule.json -d project=aProject -d spider=bSpider

// 每天凌晨2点执行
0 2 * * * curl http://127.0.0.1:6800/schedule.json -d project=aProject -d spider=bSpider

日志位置: /var/log/cron

十一、Crypto 解密

安裝Crypto 解密使用
一般安裝完后显示找不见Crypto,找到python\lib\site-packages下的Crypto,把C改为大写C

报错 No module named ‘Crypto.Cipher’”
pip install pycryptodome


  • 查看 磁盘使用情况
du -h --max-depth=1 /

排序显示

du -h --max-depth=1 / | sort -n

报错

PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib64/php/modules/mysql.so’ - libmysqlclient.so.18: cannot open shared object file: No such file or directory in Unknown on line 0

我遇到错误的原因是:项目运行一段时间后 mysql出错重新安装的,运行一段时间后莫名其妙就报错了

我的解决方法是:

  • 卸载php 重新安装 没用
  • 找到libmysqlclient.so.18 将目录添加到 etc/ld.so.conf 后 执行 ldconfig 刷新 解决

  • 重启服务(service httpd resatrt)