1、php的加速器
- rpm方式实现
首先测试一下没有安装加速器时访问博客网站每秒钟处理的请求数
ab -c 10 -n 100 http://172.18.21.107/blog/
yum install php-xcache ---安装加速器的包,来自epel源
rpm -ql php-xcache
/etc/php.d/xcache.ini ---做为php的一个配置文件,这个文件中规定了这个模块 extension = xcache.so
/usr/lib64/php/modules/xcache.so ---可以发现xcache做为php 的一个模块
/usr/share/doc/php-xcache-3.1.1
/usr/share/doc/php-xcache-3.1.1/AUTHORS
/usr/share/doc/php-xcache-3.1.1/COPYING
/usr/share/doc/php-xcache-3.1.1/ChangeLog
/usr/share/doc/php-xcache-3.1.1/README
/usr/share/doc/php-xcache-3.1.1/THANKS
systemctl restart httpd ---安装之后重启服务即可
判读是否安装成功,可以在httpd的根目录下创建一个测试的php程序
在浏览器上访问这个程序,可以看到php的版本信息,然后按ctrl+f,搜索一下看能否搜到php-xcache,能搜索到说明安装加速器成功。
测试
ab -c 10 -n 100 http://172.18.21.107/blog/ ---和前面对比略有提升
- 源码编译安装
在官网上下载xcache-3.2.0.tar
官网:http://xcache.lighttpd.net/pub
tar xvf xcache-3.2.0.tar.bz2
cd /app/xcache-3.2.0/
yum groupinstall "develpment tools"
yum install php-devel
phpize ---生成编译环境,如果不执行这个命令,将无法看到configure脚本,phpize是安装php时生成的程序
./configure --enable-xcache --with-php-config=/usr/bin/php-config 安装时要执行php的一个程序,这个程序为/usr/bin/php-config下,所以要指定这个程序的路径
make &&make install
cp /app/xcache-3.2.0/xcache.ini /etc/php.d/ ---把xcache做为php的一个模块,在xcache.ini文件中有规定,直接复制到php的配置文件目录下就可以了,就像rpm安装的一样,规定这个模块 extension = xcache.so
systemctl restart httpd
测试:ab -c 10 -n 100 http://172.18.21.107/blog/ ----可以发现安装新版本的加速器后性能明显提升。
在安装或者编译安装之前要先看一下当前php的版本,在官方网站上可以查到xcache支持的php版本如下图
2、php-fpm
httpd+php结合的方式:
cgi:module: php,以模块方式,php做为httpd的模块
fastcgi: php-fpm,以独立的服务的方式,也会打开自己独立的端口
CentOS 6:
PHP-5.3.2之前:默认不支持fpm机制;需要自行打补丁并编译安装
httpd-2.2:默认不支持fcgi协议,需要自行编译此模块
解决方案:编译安装httpd-2.4, php-5.3.3+
CentOS 7:
httpd-2.4:rpm包默认编译支持了fcgi模块
php-fpm包:专用于将php运行于fpm模式,也就是yum安装此软件包即可实现php-fpm模式
fcgi服务配置文件:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf
- 用rpm方式在centos7.3上实现php-fpm模式
yum remove php ---删除原有的以模块方式的php,因为两者不能共存
yum install php-fpm ---安装独立方式运行的php软件包
rpm -ql php-fpm ---查看一下这个软件包生成的文件列表
vim /etc/php-fpm.d/www.conf ---修改php-fpm的配置文件
listen = 9000 ---只写端口号就表示监听本机的所有ip,上面有说明
;listen.allowed_clients = 127.0.0.1 ---把这一行注释掉,默认是允许任何主机访问,如果httpd服务和php-fpm在同一台主机就不用改了,一般情况下这两个服务都是在一台主机的,只允许本机访问就可以了
systemctl start php-fpm ---启动php-fpm服务
vim /etc/httpd/conf.d/fpm.conf ---编辑httpd的配置文件,使它和php-fpm结合
DirectoryIndex index.php ---指明httpd服务主目录的动态页面的文件
ProxyRequests Off ---关闭代理请求
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1 --表示匹配以.php结尾的文件就通过fcgi也就是php-fpm的本机的ip的9000端口去处理,处理的目录是根目录下的匹配的.php结尾的文件,$1代替的就是前面匹配的以.php结尾的文件
systemctl restart httpd
注意:在HTTPD服务器上必须启用proxy_fcgi_module模块,充当PHP客户端,可以通过如下命令查看模块是否启用
httpd –M |grep fcgi ---发现模块已经启用
测试
vim /var/www/html/index.php
http://172.18.21.107/ ---发现是rpm安装的php-fpm的版本
ab -c 10 -n 100 http://172.18.21.107/blog/
3、fastcgi虚拟主机配置
vim /etc/httpd/conf.d/vhost.conf
servername www.a.com
documentroot /app/website
require all granted
directoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/website/$1
mkdir /app/website
vim /app/website/index.php
close();
phpinfo();
?>
在centos6上测试,修改/etc/hosts文件,使其能解析www.a.com,在图形界面下用火狐浏览器访问www.a.com,可以发现连接成功。
4、centos7.3实现基于源码编译安装LAMP的wordpress应用
软件环境:
apr-1.6.2.tar.gz httpd-2.4.27.tar.bz2 php-7.1.10.tar.xz
apr-util-1.6.0.tar.gz mariadb-10.2.8-linux-x86_64.tar.gz wordpress-4.8.1-zh_CN.tar.gz
1 源码编译安装Httpd2.4
yum groupinstall "development tools"
yum install openssl-devel expat-devel pcre-devel
tar xvf apr-1.6.2.tar.gz
tar xvf apr-util-1.6.0.tar.gz
tar xvf httpd-2.4.27.tar.bz2
cp -a apr-1.6.2 httpd-2.4.27/srclib/apr
cp -a apr-util-1.6.0 httpd-2.4.27/srclib/apr-util
cd httpd-2.4.27/
./configure --prefix=/app/httpd24 --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
make -j 4 && make install
vim /etc/profile.d/lamp.sh
PATH=/app/httpd24/bin/:$PATH
. /etc/profile.d/lamp.sh
apachectl start
ss -tnl
2 二进制安装mariadb
tar xvf mariadb-10.2.8-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local
ln -s mariadb-10.2.8-linux-x86_64/ mysql
useradd -r -m -d /app/mysqldb -s /sbin/nologin mysql
cd mysql/
scripts/mysql_install_db --datadir=/app/mysqldb --user=mysql ---生成mysql的初始数据库和相应的表,比如mysql。
mkdir /etc/mysql
cp support-files/my-large.cnf /etc/mysql/my.cnf ---创建mysql的配置文件
vim /etc/mysql/my.cnf
[mysqld]
datadir = /app/mysqldb
innodb_file_per_table = ON
skip_name_resolve = ON
cp support-files/mysql.server /etc/init.d/mysqld ---创建一个服务脚本
chkconfig --add mysqld
chkconfig --list
service mysqld start
mkdir /var/log/mariadb ---创建一个日志目录,并修改所有者或者权限,不然服务无法启动,会报错,也就是服务启动的时候会写日志
chown mysql /var/log/mariadb/
service mysqld start
vim /etc/profile.d/lamp.sh
PATH=/app/httpd24/bin/:/usr/local/mysql/bin/:$PATH
. /etc/profile.d/lamp.sh
mysql_secure_installation
mysql -uroot -pcentos
create datebase wpdb;
grant all on wpdb.* to wpuser@'192.168.25.%' identified by 'centos';
grant all on wpdb.* to wpuser@'127.%' identified by 'centos';
grant all on wpdb.* to wpuser@'localhost' identified by 'centos';
如果数据库和php在同一台主机要授权本机的localhost和127.%,不然本机都无法访问后面的wpdb数据库
3 源码编译安装php
yum install libxml2-devel bzip2-devel libmcrypt-devel
tar xvf php-7.1.10.tar.xz
cd php-7.1.10/
./configure \
--prefix=/app/php \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-openssl \
--with-pdo-mysql=mysqlnd \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--enable-sockets \
--with-apxs2=/app/httpd24/bin/apxs \ ---指明安装的php为模块的运行模式
--with-mcrypt \
--with-config-file-path=/etc \ ---指明主配置文件的路径
--with-config-file-scan-dir=/etc/php.d \ ---指明副配置文件路径
--enable-maintainer-zts \
--disable-fileinfo
make -j 4 && make install
cp php.ini-production /etc/php.ini ----创建一个php的配置文件,可以从模板复制,这个文件不需要修改什么,如果需要可以修改一下时区
vim /etc/httpd24/httpd.conf ---修改httpd的配置文件
在文件尾部加两行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
修改配置文件中的主目录的网页文件
DirectoryIndex index.php index.html
apachectl stop
apachectl start
4 测试php和mariadb连接
vim /app/httpd24/htdocs/index.php
LAMP
close();
phpinfo();
?>
5 配置wordpress
tar xvf wordpress-4.8.1-zh_CN.tar.gz -C /app/httpd24/htdocs ---把wordpress解压到httpd网站的主目录下
cd /app/httpd24/htdocs
ln -s wordpress/ blog/
cd /app/httpd24/htdocs/blog/
cp wp-config-sample.php wp-config.php
vim wp-config.php
define('DB_NAME', 'wpdb');
/** MySQL数据库用户名 */
define('DB_USER', 'wpuser');
/** MySQL数据库密码 */
define('DB_PASSWORD', 'centos');
/** MySQL主机 */
define('DB_HOST', 'localhost');
6 登录测试
http://172.18.21.107/blog/
测试性能
ab -c 10 -n 100 http://172.18.21.107/blog/
5、centos6.9实现基于源码编译安装LAMP(php模块方式)的wordpress应用
软件版本:
apr-1.6.2.tar.gz httpd-2.4.27.tar.bz2 php-5.6.31.tar.xz xcache-3.2.0.tar.bz2
apr-util-1.6.0.tar.gz mariadb-5.5.57-linux-x86_64.tar.gz wordpress-4.8.1-zh_CN.tar.gz
1 、编译httpd2.4
yum groupinstall "development tools"
yum install openssl-devel pcre-devel expat-devel
tar xvf apr-1.6.2.tar.gz
tar xvf apr-util-1.6.0.tar.gz
tar xvf httpd-2.4.27.tar.bz2
cp -r apr-1.6.2 httpd-2.4.27/srclib/apr
cp -r apr-util-1.6.0 httpd-2.4.27/srclib/apr-util
cd httpd-2.4.27/
./configure --prefix=/app/httpd24 --enable-so --enable-ssl --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
make -j 4 && make install
vim /etc/profile.d/lamp.sh
PATH=/app/httpd24/bin/:$PATH
. /etc/profile.d/lamp.sh
cp /etc/init.d/httpd /etc/init.d/httpd24 ---将原电脑上的httpd的服务脚本复制一下,注意原httpd服务不要启动。
vim /etc/init.d/httpd24 ---修改以下五行内容
apachectl=/app/httpd24/bin/apachectl
httpd=${HTTPD-/app/httpd24/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/app/httpd24/logs/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
chkconfig --add httpd24
chkconfig --list httpd24
service httpd24 start
2、 二进制安装mariadb
tar xvf mariadb-5.5.57-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/
ln -s mariadb-5.5.57-linux-x86_64/ mysql
useradd -r -m -d /app/mysqldb -s /sbin/nologin mysql
cd mysql/
scripts/mysql_install_db --datadir=/app/mysqldb --user=mysql ---生成初始的数据库和响应的表
mkdir /etc/mysql
cp support-files/my-large.cnf /etc/mysql/my.cnf ---创建数据库的配置文件
vim /etc/mysql/my.cnf ---修改数据库配置文件
[mysqld]
datadir = /app/mysqldb
innodb_file_per_table = ON
skip_name_resolve = ON
cp support-files/mysql.server /etc/init.d/mysqld ----创建数据库服务脚本
chkconfig --add mysqld
chkconfig --list
service mysqld start
touch /var/log/mysqld.log ---创建日志文件并授权,不然服务无法启动
chown mysql /var/log/mysqld.log
service mysqld start
vim /etc/profile.d/lamp.sh
PATH=/app/httpd24/bin/:/usr/local/mysql/bin/:$PATH
. /etc/profile.d/lamp.sh
mysql_secure_installation
mysql -uroot -pcentos
create datebase wpdb;
grant all on wpdb.* to wpuser@'192.168.25.%' identified by 'centos';
grant all on wpdb.* to wpuser@'127.%' identified by 'centos';
grant all on wpdb.* to wpuser@'localhost' identified by 'centos';
3、 源码编译php
yum install libxml2-devel bzip2-devel libmcrypt-devel
tar xvf php-5.6.31.tar.xz
cd php-5.6.31
./configure --prefix=/app/php \
--with-mysql=/usr/local/mysql \
--with-openssl \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--enable-mbstring \
--with-png-dir \
--with-jpeg-dir \
--with-freetype-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--enable-sockets \
--with-apxs2=/app/httpd24/bin/apxs \
--with-mcrypt \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--with-bz2
make -j 4 && make install
vim /etc/profile.d/lamp.sh
PATH=/app/php/bin:/app/httpd24/bin/:/usr/local/mysql/bin/:$PATH
. /etc/profile.d/lamp.sh
cp /app/php-5.6.31/php.ini-production /etc/php.ini ---创建一个php的配置文件,可以修改一下时区
vim /app/httpd24/conf/httpd.conf ---要想让httpd和php连接,需要在httpd的配置文件中增加和修改内容,在文件尾部加两行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
修改下面行
DirectoryIndex index.php index.html
service httpd24 restart
4 、测试php是否可以连接数据库
vim /app/httpd24/htdocs/index.php
It works!
close();
phpinfo();
?>
5、 配置wordpress
tar xvf wordpress-4.8.1-zh_CN.tar.gz -C /app/httpd24/htdocs
cd /app/httpd24/htdocs
ln-s wordpress/ blog/
cd /app/httpd24/htdocs/blog/
cp wp-config-sample.php wp-config.php
vim wp-config.php
define('DB_NAME', 'wpdb');
/** MySQL数据库用户名 */
define('DB_USER', 'wpuser');
/** MySQL数据库密码 */
define('DB_PASSWORD', 'centos');
/** MySQL主机 */
define('DB_HOST', 'localhost');
6 、登录测试
http://websrv/blog
测试性能
ab -c 10 -n 100 http://websrv/blog/
7、 编译xcache 实现Php加速
tar xvf xcache-3.2.0.tar.bz2
cd xcache-3.2.0
phpize
./configure --enable-xcache --with-php-config=/app/php/bin/php-config ---安装加速器时要执行php-config这个程序,这个程序在编译安装php的时候生成的,在/app/php/bin/目录下
make && make install
mkdir /etc/php.d/
cp xcache.ini /etc/php.d/
vim /etc/php.d/xcache.ini ---xcache做为php的一个模块,在php的配置文件中要规定模块的路径
extension = /app/php/lib/php/extensions/no-debug-non-zts-20131226/xcache.so
service httpd24 restart
8 、测试
ab -c 10 -n 100 http://websrv/blog/
6、centos6.9实现基于源码编译安装LAMP(PHP-FPM方式)的wordpress应用
软件版本:
apr-1.6.2.tar.gz httpd-2.4.27.tar.bz2 php-5.6.31.tar.xz xcache-3.2.0.tar.bz2
apr-util-1.6.0.tar.gz mariadb-5.5.57-linux-x86_64.tar.gz wordpress-4.8.1-zh_CN.tar.gz
1、 编译httpd2.4
yum groupinstall "development tools"
yum install openssl-devel pcre-devel expat-devel
tar xvf apr-1.6.2.tar.gz
tar xvf apr-util-1.6.0.tar.gz
tar xvf httpd-2.4.27.tar.bz2
cp -a apr-1.6.2 httpd-2.4.27/srclib/apr
cp -a apr-util-1.6.0 httpd-2.4.27/srclib/apr-util
cd httpd-2.4.27/
./configure --prefix=/app/httpd24 --enable-so --enable-ssl --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
make -j 4 && make install
vim /etc/profile.d/lamp.sh
PATH=/app/httpd24/bin/:$PATH
. /etc/profile.d/lamp.sh
cp /etc/init.d/httpd /etc/init.d/httpd24
vim /etc/init.d/httpd24
apachectl=/app/httpd24/bin/apachectl
httpd=${HTTPD-/app/httpd24/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/app/httpd24/logs/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
chkconfig --add httpd24
chkconfig --list httpd24
service httpd24 start
2 、二进制安装mariadb
tar xvf mariadb-5.5.57-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/
ln -s mariadb-5.5.57-linux-x86_64/ mysql
useradd -r -m -d /app/mysqldb -s /sbin/nologin mysql
cd mysql/
scripts/mysql_install_db --datadir=/app/mysqldb --user=mysql
mkdir /etc/mysql
cp support-files/my-large.cnf /etc/mysql/my.cnf
vim /etc/mysql/my.cnf
[mysqld]
datadir = /app/mysqldb
innodb_file_per_table = ON
skip_name_resolve = ON
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list
service mysqld start
touch /var/log/mysqld.log
chown mysql /var/log/mysqld.log
service mysqld start
vi /etc/profile.d/lamp.sh
PATH=/app/httpd24/bin/:/usr/local/mysql/bin/:$PATH
. /etc/profile.d/lamp.sh
mysql_secure_installation
mysql -uroot -pcentos
create datebase wpdb;
grant all on wpdb.* to wpuser@'192.168.25.%' identified by 'centos';
grant all on wpdb.* to wpuser@'127.%' identified by 'centos';
grant all on wpdb.* to wpuser@'localhost' identified by 'centos';
3、 源码编译php
yum install libxml2-devel bzip2-devel libmcrypt-devel
tar xvf php-5.6.31.tar.xz
cd php-5.6.31
./configure \
--prefix=/app/php5 \
--with-mysql=/usr/local/mysql \
--with-openssl \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--enable-sockets \
--enable-fpm \ ---指定是fpm模式安装php
--with-mcrypt \
--with-config-file-path=/etc/php5 \
--with-config-file-scan-dir=/etc/php5.d \
--with-bz2
make -j 4 && make install
vi /etc/profile.d/lamp.sh
PATH=/app/php5/bin:/app/httpd24/bin/:/usr/local/mysql/bin/:$PATH
. /etc/profile.d/lamp.sh
mkdir /etc/php5/
cp /app/php-5.6.31/php.ini-production /etc/php5/php.ini ---创建php的配置文件,规定时区
cp /app/php-5.6.31/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm ---创建php-fpm的服务脚本
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig --list php-fpm
service php-fpm start
cd /app/php5/etc
cp php-fpm.conf.default php-fpm.conf ---创建php-fpm的配置文件,里面规定了端口号等
vim app/httpd24/conf/httpd.conf
取消两行的注释
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
在文件尾部加四行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ProxyRequests Off 关闭代理
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1
修改下面行
DirectoryIndex index.php index.html
service httpd24 restart
4 测试
vim /app/httpd24/htdocs/index.php
It works!
close();
phpinfo();
?>
5 、配置wordpress
tar xvf wordpress-4.8.1-zh_CN.tar.gz -C /app/httpd24/htdocs
cd /app/httpd24/htdocs
mv wordpress/ blog/
cd /app/httpd24/htdocs/blog/
cp wp-config-sample.php wp-config.php
vim wp-config.php
define('DB_NAME', 'wpdb');
/** MySQL数据库用户名 */
define('DB_USER', 'wpuser');
/** MySQL数据库密码 */
define('DB_PASSWORD', 'centos');
/** MySQL主机 */
define('DB_HOST', 'localhost');
6 、登录测试
http://websrv/blog
测试性能
ab -c 10 -n 100 http://websrv/blog/
7 、编译xcache 实现Php加速
tar xvf xcache-3.2.0.tar.bz2
cd xcache-3.2.0
phpize
./configure --enable-xcache --with-php-config=/app/php5/bin/php-config
make && make install
mkdir /etc/php5.d/
cp /app/xcache-3.2.0/xcache.ini /etc/php5.d/ ---创建php对于xcache的配置文件
vim /etc/php5.d/xcache.ini ---xcache做为php的一个模块,在php的配置文件中规定了模块的路径
extension = /app/php5/lib/php/extensions/no-debug-non-zts-20131226/xcache.so
service php-fpm restart
8 、测试
ab -c 10 -n 100 http://websrv/blog/
总结:4、5、6方法编译安装时都需要将php和数据库放到同一台主机,不然无法连接到数据,因为没有安装php-mysql软件包,即使安装了也不配套,源码编译安装php的时候都安装好了php-mysql,就不需要安装php-mysql了。