新资源服务器安装配置步骤(CentOS 7.* 64位)
如果系统是新装系统没有其他项目,推荐使用***宝塔***面板来安装PHP的环境:
# 宝塔环境一键安装命令,使用了宝塔面板直接跳过下面的 1、2、3、4、5 步
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
如果不使用宝塔面板可以选择自行安装环境:
注意事项:
1、必须安装LAMP(因为程序中有的函数需要依赖Apache服务才能运行)
2、安装过程中为了方便安装,请将原服务器的目录直接原样拷贝到新服务器上:
例如:
/home 目录下的所有全部拷贝到新服务器的/home目录下
/bookdata 目录 直接拷贝到 新服务器的 / 根目录下
1 安装 apche
yum -y install httpd
2 修改CentOS 7.x的源
yum install -y epel-release
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
3 使用yum list命令查看可安装的包(Packege)。
yum list --enablerepo=remi --enablerepo=remi-php56 | grep php
4 安装PHP5.6
yum -y install --enablerepo=remi --enablerepo=remi-php56 php*
#查看是否已安装成功
php -v
5 安装 ZendGuardLoader 扩展加密php5.6
#下载
wget http://downloads.zend.com/guard/7.0.0/zend-loader-php5.6-linux-x86_64_update1.tar.gz
#解压
tar xzvf zend-loader-php5.6-linux-x86_64_update1.tar.gz
#将so文件复制到/usr/lib64/php/modules/
cp ZendGuardLoader.so /usr/lib64/php/modules/
6 配置php
#打开PHP配置文件 php.ini
vim /etc/php/php.ini
#将默认的字符编码改成GBK
default_charset = "GBK"
#在最后一行添加一下这段、
[zend]
zend_extension= /usr/lib64/php/modules/ZendGuardLoader.so
7 jdk安装
# 查看java 版本,
java -version
# 如果没有,请安装
yum install java-1.8.0-openjdk.x86_64
# 查看java 版本,
java -version #有版本信息说明安装成功
#查看JDK信息
rpm -qa | grep java
8 安装selenium
# 将selenium-server-standalone-3.8.1.jar放在/home/httpd/selenium目录下 直接执行下面命令即可
#注:selenium 所有版本不加参数都快可用于chrome自动化。 selenium 3.5-3.8.1 版本需要加参数才可用于firefox自动化,其他版本加不加参数都不能firefox自动化
#如果没有selenium-server-standalone-3.8.1.jar,从旧服务器中拷贝selenium-server-standalone-3.8.1.jar到新服务器/home/selenium目录下,执行一下命令
cd /home/httpd/selenium
java -jar selenium-server-standalone-3.8.1.jar -enablePassThrough false
#加入开机启动项 (由于在执行rc.local脚本时PATH环境变量未全部初始化,需在执行/etc/profile 后才被添加到环境变量PATH中,因此java须加绝对路径,java绝对路径根据自己系统来加)
echo " /usr/local/jdk1.8.0_181/bin/java -jar /home/httpd/selenium/selenium-server-standalone-3.8.1.jar -enablePassThrough false >/dev/null 2>&1 &" >> /etc/rc.local
#centos7下rc.local默认不启动,需要做如下设置
chmod +x /etc/rc.d/rc.local
systemctl enable rc-local.service
9 安装composer
#安装composer,须在 php5.6下,php5.4不认,在selenium下执行命令,或生成composer.phar在seleniu目录下
cd /home/selenium
curl -sS https://getcomposer.org/installer | php
#也可以不安装composer , 但是需要将/bookdata/vender/目录拷贝到新服务器一样的路径下即可
10 安装 facebook/webdriver
#已经拷贝了vender文件夹此步骤不需要做了。
#移动composer执行文件解决找不到的问题
mv composer.phar /usr/local/bin/composer
#切换成阿里国内composer镜像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
#安装
composer require facebook/webdriver
11 安装谷歌和火狐浏览器的webdriver组件
# 安装以下2个插件
chromdriver geckodriver
#进入安装目录
cd /home/httpd/selenium
#解压
unzip chromedriver_2.41_linux64.zip
#配置可执行环境
mv chromedriver /usr/bin/
chmod +x /usr/bin/chromedriver
#解压
tar xzvf geckodriver-v0.21.0-linux64.tar.gz
mv geckodriver /usr/bin/
chmod +x /usr/bin/geckodriver
#安装Chrome浏览器
chrome浏览器(必须在非root账号下安装)
增加用户selenium,同时赋予755权限,因为后面key token都放在这个用户目录下
useradd selenium
#添加密码 bkabizsky1234
echo "selenium:bkabizsky1234" | chpasswd
chmod 755 /home/selenium -R
vim /etc/yum.repos.d/google-chrome.repo
#加入如下内容
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
#然后:执行下面语句 (在非root账号selenium下执行 如报错is not in the sudoers file 则visudo 最后加一行
selenium ALL=(ALL) ALL
su - selenium
#将会免输密码交互把google-chrome-stable script in /usr/bin/
#同时由于Google官方源可能在中国无法使用,导致安装失败或者在国内无法更新,可以添加参数 --nogpgcheck 来安装:
#安装成功后,运行如下,注意在root下必须加非沙盒参数 --no-sandbox
#执行下面命令查看Chrome版本
google-chrome --no-sandbox --version 查看chrome版本,一般centos7下yum安装的80.0
#执行以下命令查看百度页面的截图
google-chrome-stable --no-sandbox --headless --disable-gpu --window-size=1360x768 --screenshot https://www.baidu.com/
#出现图片的扩展名的就说明可以了
#执行成功会在当前目录生成百度首页截图(会报一个错,但没什么影响,是个缺少UI的提示)
#安装firefox 的webdriver组件 及flash插件
yum -y install firefox
#安装flash for flash
cd /home/httpd/selenium
mkdir ~/.mozilla
mkdir ~/.mozilla/plugins
mkdir FirefoxFlashPlayer
tar xzvf install_flash_player_11_linux.x86_64.tar.gz -C FirefoxFlashPlayer
\cp FirefoxFlashPlayer/libflashplayer.so /usr/lib64/mozilla/plugins/ -f
\cp FirefoxFlashPlayer/libflashplayer.so ~/.mozilla/plugins/ -f
rm -rf FirefoxFlashPlayer
12 为chrome和firefox增加中文支持
#查看centos7是否支持zh_CN包,centos7默认应该都有
locale -a
#修改 /etc/locale.conf 为和windows7保存一致 默认 LANG=en_US.UTF-8 改为 LANG=zh_CN.GBK
localectl set-locale LANG=zh_CN.GBK
source /etc/locale.conf # 重新加载配置文件
locale #查看是否已改成中文首选,列表中带有 zh_CN 的就可以了
#增加中文字体
mkdir /usr/share/fonts/chinese
cd /home/httpd/selenium
\cp simsun.ttc /usr/share/fonts/chinese -f
\cp simhei.ttf /usr/share/fonts/chinese -f
chmod -R 755 /usr/share/fonts/chinese
yum -y install ttmkfdir
ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir
vim /etc/fonts/fonts.conf
将 <dir>/usr/share/fonts</dir> 替换为 <dir>/usr/share/fonts</dir> <dir>/usr/share/fonts/chinese</dir>
fc-cache #清除一下缓存
最后再次通过fc-list看一下字体列表: 有中文字体 zh_CN 在列就ok了
这样改过后,chrome浏览QQ邮箱就自动从乱码改成中文了,但firefox还是英文界面
还要改firefox默认语言为zh_CN,但目前未找到方法,只能在selenium启动firefox时设置启动参数intl.accept_languages=zh-CN,测试有效
13 配置apache 的ssl https
yum install mod_ssl openssl
#安装好之后 会自动生成一个/etc/httpd/conf.d/ssl.conf文件 和 /etc/httpd/conf.modules.d/00-ssl.conf文件
#然后把你下载好的证书解压后得到的文件夹改名成cert,然后上传到服务器 放到 /etc/httpd/ 目录下
开始配置ssl.conf文件
#开启443端口 默认已经开启443端口
#找到对应的修改(这里用的是阿里云的免费证书)
DocumentRoot "/bookdata/zhongshutu"
ServerName 域名:443
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
SSLCertificateFile cert/public.crt
SSLCertificateKeyFile cert/214774279910920.key
SSLCertificateChainFile cert/chain.crt
#然后重启apache就好了
14 其他配置
#国图网站的艺术库登陆网页有个js,调用 192.168.182.155 下的js,结果就导致阻塞的问题。
#目前通过如下方法间接解决了该问题,即通过iptables设置ip转发,将错误ip转发一个正常ip或127.0.0.1即可。在/etc/rc.d/rc.local下加入以下语句不灵 绝对路径也不行
iptables -t nat -A OUTPUT -d 192.168.182.155 -j DNAT --to-destination 127.0.0.1
用service iptables save 永久保存,restart即可 也可在iptables中增加下面行
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [5:318]
:POSTROUTING ACCEPT [5:318]
-A OUTPUT -d 191.168.182.155/32 -j DNAT --to-destination 127.0.0.1
-A OUTPUT -d 192.168.182.155/32 -j DNAT --to-destination 127.0.0.1
COMMIT
#国图掌上阅读书库的登陆网页有个js,调用 http://qzonestyle.gtimg.cn 下的js,也有这个问题。
#可修改/etc/hosts 增加
127.0.0.1 qzonestyle.gtimg.cn
ip不能用 /etc/hosts 文件重定向,只有iptables重定向
#国图采集系统其他设置:
/usr/sbin/setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" `grep SELINUX=enforcing -l /etc/sysconfig/selinux`
service sendmail stop
chkconfig --del sendmail
service postfix stop
chkconfig --del postfix
yum -y remove sendmail
yum -y remove postfix
rm -f /etc/cron.daily/0logwatch
chkconfig httpd on
service httpd start
### 加#号 避免 rm mv cp 等安装时出现交互提示 source立即生效不重启,但好像无效,必须重启 \cp 就可以了
cd ~root/
sed -i "s/alias/#alias/g" `grep alias -l /root/.bashrc`
source .bashrc
cat .bashrc
mkdir -p ~/.ssh
chmod 700 ~/.ssh
yum -y install net-tools
yum -y install psmisc # killall
#建lib和X11目录
cd /usr
mkdir X11R6
cd X11R6
mkdir lib
cd lib
mkdir X11
cd X11
mkdir fonts
cd fonts
mkdir TTF
\cp /home/httpd/selenium/simhei.ttf /usr/X11R6/lib/X11/fonts/TTF/
\cp /home/httpd/selenium/simsun.ttc /usr/X11R6/lib/X11/fonts/TTF/
\cp /home/httpd/selenium/arial.ttf /usr/X11R6/lib/X11/fonts/TTF/
#卸载centos 7 的防火墙 采用iptables
systemctl stop firewalld.service
yum -y remove firewalld
#卸载可能的邮件服务,避免冲突
yum -y install iptables-services
systemctl enable iptables
\cp /home/httpd/selenium/iptables /etc/sysconfig/iptables -f
chkconfig iptables on
service iptables start
crontab -e
* * */14 * * php /home/selenium/gentoken.php > /dev/null 2>&1
*/5 * * * * php /bookdata/zhongshutu/clearprocess.php > /dev/null 2>&1
*/5 * * * * php /bookdata/zhongshutu/retrycraw.php > /dev/null 2>&1
* * * * * php /bookdata/zhongshutu/dealqueue.php > /dev/null 2>&1
* * * * * sleep 10; php /bookdata/zhongshutu/dealqueue.php > /dev/null 2>&1
* * * * * sleep 20; php /bookdata/zhongshutu/dealqueue.php > /dev/null 2>&1
* * * * * sleep 30; php /bookdata/zhongshutu/dealqueue.php > /dev/null 2>&1
* * * * * sleep 40; php /bookdata/zhongshutu/dealqueue.php > /dev/null 2>&1
* * * * * sleep 50; php /bookdata/zhongshutu/dealqueue.php > /dev/null 2>&1
visudo 增加
apache ALL=NOPASSWD:/usr/bin/kill
#必须始终系统根目录对apache用户可写,否则验证码图片和cookie文件生成不了
chmod 777 /bookdata/zhongshutu
cd /bookdata/zhongshutu
cp /usr/bin/cp changelist
cp /usr/bin/rm deletelist
chmod 4755 changelist
chmod 4755 deletelist
chmod 777 system.ini
chmod 777 -R log
mkdir book
mkdir book1
mkdir magazine
mkdir picture
mkdir audio
mkdir video
chown apache:apache book -R
chown apache:apache book1 -R
chown apache:apache magazine -R
chown apache:apache picture -R
chown apache:apache audio -R
chown apache:apache video -R
chown apache:apache vcode.png
chmod 755 -R book
chmod 755 -R magazine
chmod 755 -R picture
chmod 755 -R audio
chmod 755 -R video
15 安装mysql数据库
# 推荐安装MariaDB
yum -y install mariadb mariadb-server
# 启动服务
systemctl start mariadb
注意事项
1、系统页面上的数据是乱码问题,这个问题只针对是从数据库查询出来的数据
解决办法:
# 修改mysql配置项
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
default-character-set=utf8 #这句是需要添加的,注意是在client里
[mysqld]
character-set-server = latin1 #这句是需要添加的,注意是在mysqld里
port = 3306
socket = /tmp/mysql.sock
datadir = /www/server/data
default_storage_engine = InnoDB
另外检查一下创建数据库的时候字符集是否是 latin1
重启mysql服务,问题能够得到解决。
2、通过Navicat导入sql文件特别的慢解决:
推荐安装 MariaDB 最新版本 , 这个数据库完全和mysql一样的功能,甚至比MySQL性能要好一些。
3、如果网站环境用了宝塔的一些注意事项:
a、网站的域名配置:
这里为了之后能通过ip地址访问项目,需要添加ip地址,直接填写ip点击添加按钮即可。
b、项目可能运行不起来,或者有些功能不能正常使用那么我们检查一下"网站目录"的设置。关掉防跨站攻击。
c、“伪静态” 设置为default即可
d、“配置文件” 的设置 , 需要在配置文件最后一个 之前添加如下配置,报错,重新加载配置,重启服务即可。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/v1/apikey$ /gettoken.php
RewriteRule ^/v1/book/cxstar/([0-9\-]+)/?$ /getbook1.php?action=get&csdn=$1
RewriteRule ^/v1/book/cxstar/([0-9\-]+)/add$ /getbook1.php?action=add&csdn=$1
RewriteRule ^/v1/book/cxstar/([0-9\-]+)/del$ /getbook1.php?action=del&csdn=$1
RewriteRule ^/v1/book/cxstar$ /getbook1.php
RewriteRule ^/v1/book/([A-Z][0-9\-]+)/?$ /getbook.php?action=get&id=$1
RewriteRule ^/v1/book/([A-Z][0-9\-]+)/add$ /getbook.php?action=add&id=$1
RewriteRule ^/v1/book/([A-Z][0-9\-]+)/del$ /getbook.php?action=del&id=$1
RewriteRule ^/v1/book/([A-Z][0-9\-]+)/cover$ /getbook.php?action=cover&id=$1
RewriteRule ^/v1/book$ /getbook.php
RewriteRule ^/v1/magazine/([A-Z][0-9\-]+)/?$ /getmagazine.php?action=get&id=$1
RewriteRule ^/v1/magazine/([A-Z][0-9\-]+)/add$ /getmagazine.php?action=add&id=$1
RewriteRule ^/v1/magazine/([A-Z][0-9\-]+)/del$ /getmagazine.php?action=del&id=$1
RewriteRule ^/v1/magazine/([A-Z][0-9\-]+)/cover$ /getmagazine.php?action=cover&id=$1
RewriteRule ^/v1/magazine$ /getmanazine.php
RewriteRule ^/v1/picture/([A-Z][0-9\-]+)/?$ /getpicture.php?action=get&id=$1
RewriteRule ^/v1/picture/([A-Z][0-9\-]+)/add$ /getpicture.php?action=add&id=$1
RewriteRule ^/v1/picture/([A-Z][0-9\-]+)/del$ /getpicture.php?action=del&id=$1
RewriteRule ^/v1/picture/([A-Z][0-9\-]+)/demo$ /getpicture.php?action=cover&id=$1
RewriteRule ^/v1/picture$ /getpicture.php
RewriteRule ^/v1/audio/([A-Z][0-9\-]+)/?$ /getaudio.php?action=get&id=$1
RewriteRule ^/v1/audio/([A-Z][0-9\-]+)/add$ /getaudio.php?action=add&id=$1
RewriteRule ^/v1/audio/([A-Z][0-9\-]+)/del$ /getaudio.php?action=del&id=$1
RewriteRule ^/v1/audio/([A-Z][0-9\-]+)/cover$ /getaudio.php?action=cover&id=$1
RewriteRule ^/v1/audio$ /getaudio.php
RewriteRule ^/v1/video/([A-Z][0-9\-]+)/?$ /getvideo.php?action=get&id=$1
RewriteRule ^/v1/video/([A-Z][0-9\-]+)/add$ /getvideo.php?action=add&id=$1
RewriteRule ^/v1/video/([A-Z][0-9\-]+)/del$ /getvideo.php?action=del&id=$1
RewriteRule ^/v1/video$ /getvideo.php
RewriteRule ^/v1/book1/([A-Z][0-9\-]+)/?$ /getbook1.php?action=get&id=$1
RewriteRule ^/v1/book1/([A-Z][0-9\-]+)/add$ /getbook1.php?action=add&id=$1
RewriteRule ^/v1/book1/([A-Z][0-9\-]+)/del$ /getbook1.php?action=del&id=$1
RewriteRule ^/v1/book1/([A-Z][0-9\-]+)/cover$ /getbook1.php?action=cover&id=$1
RewriteRule ^/v1/book1$ /getbook1.php
</IfModule>
e、“php版本” 设置,这里一定要选择对应的php版本,本项目默认是php5.6即可。
f、php的配置:需要安装的扩展,db库必须安装(验证码需要),ZendGuardLoader 、opcache
g、“配置修改” 推荐如下
h、超时限制,这个一定要配置大一些,因为采集的过程会很慢,脚本会一直运行。如果时间太短那么Apache会报503 The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later. 的错误。
i、“禁用函数” 配置这里按照以下配置,必须将 system,exec 去掉
j、“性能配置” ,运行模式这里务必调整为 动态 ,这样会减少服务器的开销,减少php-fpm 进程数量
k、Apache ““性能调整”” 配置推荐:
L、zhongshu_func.php 脚本中有配置项必须是:
$program_dir = "/bookdata/zhongshutu"; #项目目录
$mysql_program = "/www/server/mysql/bin"; # 数据库安装目录
$mysqldata_dir = "/www/server/data"; # 数据库数据目录
$mysql_host = "127.0.0.1"; # 数据库的ip地址
$mysql_user = "zhongshutu"; # 数据库的用户
$mysql_pwd = "2ZKAecFeyCyJsKdE"; # 密码根据自己的改一下
$dbname = "zhongshutu"; # 数据库名称必须是zhongshutu
$domain_url = "https://res.jokenzhang.xyz"; # 该网站的域名
m、getaudio.php 、getbook.php、getbook1.php、getvideo.php、getmagazine.php 、getpicture.php
文件开头部分需要添加以下代码:
if (!function_exists('apache_request_headers')) {
eval('
function apache_request_headers() {
foreach($_SERVER as $key=>$value) {
if (substr($key,0,5)=="HTTP_") {
$key=str_replace(" ","-",ucwords(strtolower(str_replace("_"," ",substr($key,5)))));
$out[$key]=$value;
}
}
return $out;
}
');
}
p、getvideo.php、getmagazine.php 、getpicture.php
文件开头部分需要添加以下代码:
if (!function_exists('apache_request_headers')) {
eval('
function apache_request_headers() {
foreach($_SERVER as $key=>$value) {
if (substr($key,0,5)=="HTTP_") {
$key=str_replace(" ","-",ucwords(strtolower(str_replace("_"," ",substr($key,5)))));
$out[$key]=$value;
}
}
return $out;
}
');
}
为了预防这个函数***apache_request_headers();***不能运行。