实验要求:搭建lamp
(1) 三者分离于三台主机;
(2) 一个虚拟主机用于提供phpMyAdmin;另一个虚拟主机用于提供wordpress;
(3) xcache
(4) mpm为worker机制;
物理机使用win7系统,在VMware虚拟机中准备了3台centos6.7的linux系统;
其中IP地址设计:
web服务器地址为:192.168.255.60
php服务器地址为:192.168.255.61
mysql数据库服务器地址为:192.168.255.62
分别在每台服务器上编译安装相对应的服务器程序;
一、编译安装httpd2.4
首先,在web服务器主机上编译安装httpd2.4程序;而且需要注意httpd2.4依赖于apr-1.4以上的版本,apr-util-1.4以上版本;而在centos6系统这个两个被依赖到包,恰恰都不是1.4以上版本的,所以也要编译安装;httpd-2.4.10编译过程也要依赖于pcre-devel软件包。
准备编译安装环境:
安装开发环境:
]# yum groupinstall "Development tools" "Server Platform Development" -y
]# yum -y install pcre-devel
下载apr-1.5.0.tar.bz2和apr-util-1.5.3.tar.bz2源码包并编译安装
]# tar xf apr-1.5.0.tar.bz2
]# cd apr-1.5.0
]# ./configure --prefix=/usr/local/apr1.5
]# make && make install
]# tar xf apr-util-1.5.3.tar.bz2
]# cd apr-util-1.5.3
]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr1.5
]# make && make install
下载;httpd-2.4.9源码包并编译安装,编译MPM支持所有模块,指定默认为worker模型
]# tar xf httpd-2.4.10.tar.bz2
]# cd httpd-2.4.10
]# ./configure --prefix=/usr/local/apache2.4 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr1.5 --with-apr-util=/usr/local/apr-util --enable-modules --enable-mpms-shared=all --with-mpm=worker
]# make -j 2 && make install
可使用自带的服务控制脚本启动httpd:
]# /usr/local/apache2.4/bin/apachectl start
导出二进制程序至PATH环境变量中;
]# vim /etc/profile.d/httpd.sh
export PATH=/usr/local/apache2.4/bin:$PATH
]# apachectl stop
导出头文件
]# ln -sv /usr/local/apache2.4/include /usr/include/httpd
注意:编译安装的程序,通常服务启动脚本不会自动建立,手动创建服务脚本。
编辑 /usr/local/apache2.4/conf/httpd.conf,添加如下行即可:
]# vim /usr/local/apache2.4/conf/httpd.conf
PidFile "/var/run/httpd.pid"
手动创建服务脚本
]# vim /etc/rc.d/init.d/httpd
为此脚本赋予执行权限:
]# chmod +x /etc/rc.d/init.d/httpd
加入服务列表:
]# chkconfig --add httpd
重新登录即可使用service httpd {start|stop|restart}等;
]# apachectl start
此时,在物理机浏览器测试,输入:192.168.255.60
]# mkdir -pv /web/vhost/{www1,www2}
]# vim /web/vhost/www1/inext.html
<h1>WWW1.STU11.COM</h1>
<h1>PhpMyAdmin</h1>
]# vim /web/vhost/www2/inext.html
<h1>WWWW2.STU11.COM</h1>
<h1>WordPress</h1>
]# vim /usr/local/apache2.4/conf/httpd.conf
注释掉:
#DocumentRoot "/usr/local/apache2.4/htdocs"
添加:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
修改为:
DirectoryIndex index.php index.html
开启虚拟主机配置文件:
Include conf/extra/httpd-vhosts.conf
开启模块:
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule mpm_worker_module modules/mod_mpm_worker.so
测试web服务是否能正常访问虚拟主机
]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/web/vhost/www1"
ServerName www1.stu11.com
<Directory "/web/vhost/www1">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/web/vhost/www2"
ServerName www2.stu11.com
<Directory "/web/vhost/www2">
Require all granted
</Directory>
</VirtualHost>
浏览器输入:http://www1.stu11.com/index.html
浏览器输入:http://www2.stu11.com/index.html
二、编译安装php-5.4.26
准备编译安装环境:
]# yum install -y libxml2-devel libmcrypt-devel bzip2-devel
]# tar xf php-5.4.40.tar.bz2
]# ./configure --prefix=/usr/local/php --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 --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd]# make && make install
为php提供配置文件
]# cp php.ini-production /etc/php.ini
]# mkdir /web/vhost/{www1,www2} -pv
]# vim /web/vhost/www1/index.php
<?php
phpinfo();
?>
配置php-fpm
为php-fpm提供SysV init脚本,并将其添加至服务列表:
]# cd php-5.4.40
]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
]# chmod +x /etc/rc.d/init.d/php-fpm
]# chkconfig --add php-fpm
]# chkconfig php-fpm on
为php-fpm提供配置文件:
]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
编辑php-fpm的配置文件
]# vim /usr/local/php/etc/php-fpm.conf
listen = 192.168.255.61:9000
listen.allowed_clients = 192.168.255.60
]# service php-fpm start
测试从web服务器是否能正常连接php服务器:
]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/web/vhost/www1"
ServerName www1.stu11.com
<Directory "/web/vhost/www1">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/web/vhost/www2"
ServerName www2.stu11.com
<Directory "/web/vhost/www2">
Require all granted
</Directory>
</VirtualHost>
浏览器输入:http://www1.stu11.com/index.php
显示:
浏览器输入:http://www2.stu11.com/index.php
显示:
web服务器成功连接php服务器。
三、编译安装二进制格式mariadb-5.5.46
创建/mydata/data目录做为mysql数据的存放目录
]# mkdir -pv /mydata/data
添加系统用户mysql以安全方式运行进程
]# groupadd -r mysql
]# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
]# tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local
]# cd /usr/local/
]# chown -R root:mysql ./*
]# mv mariadb-5.5.46-linux-x86_64 mysql
]# cd mysql/
]# chown -R mysql:mysql ./*
安装并初始化式mariadb-5.5.46
]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
为mysql提供主配置文件:
]# cd /usr/local/mysql
]# cp support-files/my-large.cnf /etc/my.cnf
]# vim /etc/my.cnf
修改此文件中thread_concurrency的值为你的CPU个数乘以2,此处为:
thread_concurrency = 2
在[mysqld]段尾部添加:
datadir = /mydata/data
skip_name_resolve = ON
innodb_file_per_table = ON
为mysql提供sysv服务脚本:
]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
]# chmod +x /etc/rc.d/init.d/mysqld
启动mysql服务
]# service mysqld start
导出man文档,输出mysql的man手册至man命令的查找路径:
]# vim /etc/man.config
MANPATH /usr/local/mysql/man
导出头文件,输出mysql的头文件至系统头文件路径/usr/include:这可通过简单的创建链接实现:
]# ln -sv /usr/local/mysql/include /usr/include/mysql
导出库文件,输出mysql的库文件给系统库查找路径:
]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
让系统重新载入系统库:
]# ldconfig
修改PATH环境变量,让系统可以直接使用mysql的相关命令:
]# vim /etc/profile.d/mysqld.sh
export PATH=/usr/local/mysql/bin:$PATH
]# mysql
> CREATE DATABASE wpdb;
> CREATE DATABASE pmadb;
> GRANT ALL ON pmadb.* TO pmauser@'192.168.255.%' IDENTIFIED BY 'pmapass';
> GRANT ALL ON wpdb.* TO wpuser@'192.168.255.%' IDENTIFIED BY 'wppass';
测试php服务器是否能正常连接mysql服务器:
在web服务编辑
]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/web/vhost/www1"
ServerName www1.stu11.com
ProxyRequests off
ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.255.61:9000/web/vhost/www1/$1
<Directory "/web/vhost/www1">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/web/vhost/www2"
ServerName www2.stu11.com
ProxyRequests off
ProxyPassMatch ^/.(.*\.php)$ fcgi://192.168.255.61:9000/web/vhost/www2/$1
<Directory "/web/vhost/www2">
Require all granted
</Directory>
</VirtualHost>
在php服务器编辑:
]# vim /web/vhost/www1/index.php
<?php
$link = mysql_connect('192.168.255.62','pmauser','pmapass');
if ($link)
echo "OK";
else
echo "Failure";
mysql_close();
?>
]# vim /web/vhost/www2/index.php
<?php
$link = mysql_connect('192.168.255.62','wpuser','wppass');
if ($link)
echo "OK";
else
echo "Failure";
mysql_close();
?>
浏览器输入:http://www1.stu11.com/index.php
显示:
浏览器输入:http://www2.stu11.com/index.php
显示:
web服务器成功连接php服务器+mysql服务器。
分别在两个虚拟主机上部署phpMyAdmin、wordpress:
www1.stu11.com 部署phpMyAdmin
www2.stu11.com部署wordpress
在web服务器上部署:
]# unzip /web/vhost/www1/phpMyAdmin-4.4.14.1-all-languages.zip
]# cd /web/vhost/www1/
]# mv phpMyAdmin-4.4.14.1-all-languages pma
]# unzip /web/vhost/www2/wordpress-4.3.1-zh_CN.zip
在php服务器上部署:
]# unzip /web/vhost/www1/phpMyAdmin-4.4.14.1-all-languages.zip
]# cd /web/vhost/www1/
]# mv phpMyAdmin-4.4.14.1-all-languages pma
]# cd pma
]# cp config.sample.inc.php config.inc.php
]# vim config.inc.php
浏览器输入:http://www1.stu11.com/pma/
显示:输入mysql数据库中定义的用户名和密码
登录后显示:
]# unzip /web/vhost/www2/wordpress-4.3.1-zh_CN.zip
]# cd /web/vhost/www2/wordpress
]# cp wp-config-sample.php wp-config.php
]# vim wp-config.php
浏览器输入:http://www2.stu11.com/wordpress
显示:
输入自定义的用户名、密码后点击安装:
输入自定义的用户名、密码登录:
成功安装phpMyAdmin和WordPress
注意:更改配置文件,要重新服务。
xcache为php加速:
安装前,在web服务器上使用ab命令压力测试3次
]# ab -c 10 -n 100 http://www2.stu11.com/wordpress/index.php
在php服务器上编译安装xcache
]# tar xf xcache-3.2.0.tar.bz2
]# cd xcache-3.2.0
要编译php的扩展,第一步,要在php扩展的目录里运行phpize命令
]# /usr/local/php/bin/phpize
执行后报错:
经网络查找解决方案:
安装2个rpm包:
]# yum install m4 ]# yum install autoconf
再执行要在php扩展的目录里运行phpize命令,因为php是编译安装,所以phpize在编译安装的目录下;
]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
]# make && make install
最后显示,生成创建了xcache.so的库文件存放目录:
查看php是否加载xcache扩展模块:
]# /usr/local/php/bin/php -m
没有加载,需要手动编辑配置文件,指明加载xcache扩展模块;
]# mkdir /etc/php.d
]# cp xcache.ini /etc/php.d/
编辑xcache配置文件,添加xcache库:
]# vim /etc/php.d/xcache.ini
再次查看php是否加载xcache扩展模块:
]# /usr/local/php/bin/php -m
显示已经加载xcache模块
]# service php-fpm restart
此时,再去web服务器上使用ab命令压力测试:
]# ab -c 10 -n 100 http://www2.stu11.com/wordpress/index.php
可观察到,从php加速前平均每秒响应18左右的请求,xcache加速后平均每秒响应58左右的请求,得到了显著提升。