新资源服务器安装配置步骤(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();***不能运行。