平台:
Centos 6.10
软件版本:
httpd:2.4.25,编译安装
mariadb-server:5.5.47,编译安装
mysql:5.1.73,yum安装
php:5.6.23,编译安装
wordpress:4.5.3
phpMyAdmin:4.9.5
一、编译安装httpd2.4.25
1、安装编译环境组“Development Tools”:
#yum groupinstall “Development Tools” -y
2、各软件官网下载对应版本的源码包;
3、安装httpd所需的依赖包:apr、apr-util、pcre、openssl
a、安装apr(yum源提供的apr-devel包版本为1.3.9,需求版本1.4.0及以上
需到官网下载源码包编译安装):
# wget https://archive.apache.org/dist/apr/apr-1.5.0.tar.gz ;此处选用1.5.0
的版本
# tar xf apr-1.5.0.tar.gz ;解压源码包
# cd apr-1.5.0 ;进入源码包目录
# ./configure --prefix=/usr/local/apr-1.5.0 ;仅设置安装目录
# make && make install;编译并安装
# cd /usr/local/ &&ln -sv apr-1.5.0 apr && cd - ;设定apr到apr-1.5.0的软链
b、安装apr-util(选择等同或高于apr版本的包,此处选择1.5.1的版本):
# wget https://archive.apache.org/dist/apr/apr-util-1.5.1.tar.bz2
# tar xf apr-util-1.5.1.tar.bz2
# cd apr-util-1.5.1
# ./configure --prefix=/usr/local/apr-util-1.5.1 --with-apr=/usr/local/apr
# make && make install
# cd /usr/local && ln -sv apr-util-1.5.1 apr-util && cd -
c、安装pcre(yum源中的包版本符合安装需求,直接yum安装):
# yum install pcre-devel -y
d、安装openssl (同上):
# yum install openssl-devel -y
4、#tar xf httpd-4.2.25.tar.bz2 ;解压源码包
#ln -sv httpd-4.2.25 httpd ;创建源码包的软链
#cd httpd;进入目录
#./configure --prefix=/usr/local/httpd-2.4.25 ; 指定安装目录
--enable-modules=all ;编译所有可用模块
--enable-mods-shared=all ;允许所有模块共享
--enable-deflate ;允许deflate压缩传输
--enable-proxy ;允许代理模块
--enable--proxy-http ;允许http代理模块
--enable-proxy-ftp ;允许ftp代理模块
--enable-proxy-fcgi ;允许fastCGI代理模块
--enable-ssl ;允许ssl加密模块
--enable-mpms-shared ;允许mpm动态加载
--enable-rewrite ;允许URL重写
--with-mpm=event ;设置mpm默认为event
--with-apr=/usr/local/apr;设置apr的安装路径
--with-apr-util=/usr/local/apr-util;设置apr-util的安装路径
--with-libxml2 ;允许xml解析的开发工具包(系统中已安装)
其他选项涉及的相关功能如需对应包的支持,如果系统中未安装或版本
不符合要求,则要自行安装符合版本的安装包,并在编译程序找不到其
安装路径时,指定其安装路径;
# make -j4
# make install
# cd /usr/local && ln -sv httpd-2.4.25 httpd
5、编写服务脚本:根据httpd rpm包提供的脚本文件修改一份简单的脚本文件;
#cat < /etc/init.d/httpd24
#!/bin/bash
#chkconfig: - 85 15
source /etc/init.d/functions
HTTPD_LANG=C
httpd=/usr/local/httpd/bin/httpd
prog=httpd
pidfile=/usr/local/httpd/logs/httpd.pid
lockfile=/var/lock/subsys/httpd24
RETVAL=0
STOP_TIMEOUT=10
start() {
echo -n $"starting $prog: "
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd
RETVAL=$?
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}
stop() {
if [[ -f /usr/local/httpd/logs/httpd.pid ]]; then
echo -n $"Stopping $prog: "
killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd
else
echo -n $"Stopping $prog: "
success
fi
RETVAL=$?
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
echo -n $"Reloading $prog: "
if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
RETVAL=6
echo $"not reloading due to configuration syntax error"
failure $"not reloading $httpd due to configuration syntax error"
else
# Force LSB behaviour from killproc
LSB=1 killproc -p ${pidfile} $httpd -HUP
RETVAL=$?
if [ $RETVAL -eq 7 ]; then
failure $"httpd shutdown"
fi
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} $httpd
RETVAL=$?
;;
restart)
stop
start
;;
condrestart|try-restart)
if status -p ${pidfile} $httpd >&/dev/null; then
stop
start
fi
;;
force-reload|reload)
reload
;;
graceful|help|configtest|fullstatus)
$apachectl $@
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|try-restart
|force-reload|reload|status|fullstatus|graceful|help|configtest}"
RETVAL=2
esac
exit $RETVAL
EOF
# chkconfig --add httpd24
# chkconfig --list httpd24
6、依据需求修改配置文件,启动服务;
# vi /usr/local/httpd/conf/httpd.conf ;主配置文件
# service httpd24 start ;启动httpd服务
7、浏览器访问主机,页面显示‘it works’,服务启动成功
二、编译安装miriadb-5.5.47
1、由于php的编译安装是基于以安装的httpd和mariadb进行的,所有后两者要先
于php进行安装;
2、# tar xf mariadb-5.5.47.tar.gz ;解压压缩包
# less mariadb-5.5.47/BUILD-CMAKE ;查看源码包内编译安装说明文件
# yum install cmake ;安装文件要求安装cmake编译器(此包包含在
“Development Tools”包组内,但安装包组时默认未安装此包,需额外安装)
# yum install ncurses-devel ;
编译要求curses库
# mkdir mariadb-make && cd mariadb-make ;
创建编译目录,进入目录(保证源码包的纯净)
# cmake -LH ../mariadb-5.5.47 ;显示编译选项
CMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql ;
默认安装目录为/usr/local/mysql
# cmake ../mariadb-5.5.47
默认编译
# make
# make-install
3、# mv /usr/local/mysql /usr/local/mariadb-5.5.47
修改目录为对应的软件版本号
# ln -sv /usr/local/mariadb-5.5.47 /usr/local/mariadb
创建mariadb软链到当前版本目录
# cd /usr/local/mariadb
进入程序目录
# less INSTALL-BINARY
查看程序安装说明,建议如下步骤:
shell> groupadd -r mysql
shell> useradd -g mysql -r mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &
4、复制安装目录中的脚本文件到/etc/init.d目录下,并添加服务
#cp /usr/local/mariadb/support-files/mysql.server /etc/init.d/mariadb-server
依据需求修改mariadb-server文件中的相关变量
#chkconfig --add mariadb-server
添加服务
#chkconfig --list mariadb-server
查看服务是否添加成功
5、复制/usr/loca/maraidb/sr/loca/maraidb/support-files/的适用配置文件到/etc/
目录下:
#cp /usr/local/mariadb/support-files/my.huge.cnf /etc/my.cnf
修改配置文件中你所需要修改的参数并保存
6、启动服务:
# service mariadb-server start
# ss -tanl |grep 3306 ;mysqld服务监听的端口号为3306
7、使用mysql命令连接数据库,成功登陆则服务启动成功
修改root用户的空密码;
删除用户名为空的用户;
刷新授权;
Tip:
1、root用户密码忘记无法登陆时:
首先停止服务;
然后使用如下命令启动服务:
/usr/local/mariadb/bin/mysqld_safe --skip-grant-tables --skip-networking
最后登陆mysql服务器修改密码:
#mysql
三、编译安装php
1、# tar xf php-5.6.23.tar.gz ;解压php源码包;
# cd php-5.6.23 ;进入源码目录;
# less INSTALL ;查看安装说明
# ./configure --help |less ;查看编译选项;
2、编译源码包:
#./configure
--prefix=/usr/local/php-5.6.23;设定安装目录
--with-apxs2=/usr/local/httpd/bin/apxs;编译php为httpd的动态模块所需的
httpd的扩展编译和安装工具
--enable-fpm ;允许fpm模式
--with-fpm-user=php-fpm ;运行fpm的用户(事先创建php-fpm系统用户和组)
--with-fpm-group=php-fpm ;运行fpm的组
--with-config-file-path=/usr/local/php-5.6.23 ;配置文件存放位置
--with-config-file-scan-dir=/usr/local/php-5.6.23/php.d ;其他配置文件目录
--with-pcre-regex;支持pcre(需安装pcre-devel包)
--with-openssl;支持openssl(需安装openssl-devel包)
--with-zlib ;支持zlib压缩(需安装zlib-devel包)
--with-mysqli=/usr/local/mariadb/bin/mysql_config;mysqli连接器的编译工具位置
--with-mysql-sock=/tmp/mysql.sock ;mysqld进程sock文件位置(一般在
my.cnf中有设置)
--enable-mbstring;支持多字节字符串(针对中文网站)
--with-jpeg-dir ;支持jpeg格式
--with-freetype-dir ;支持freetype格式
--with-png-dir ;支持png格式
--enable-sockets ;套接字支持
--with-libxml-dir ;支持libxml2(需安装libxml2-devel包)
--with-bz2 ;支持bz2 (需安装bzip2-devel包)
--with-mcrypt ;支持mcrypt (需安装libmcrypt-devel包)
--enable-maintainer-zts ;支持httpd线程模式的php模块
#make
#make install
3、配置php
1、复制php主配置文件php.in到安装目录
#cp php.ini-production /usr/local/php-5.6.23 (编译时指定的配置文件路径)
#cd /usr/local && ln -sv php-5.6.23 php && cd php
#mkdir php.d (编译时指定的配置文件目录)
2、配置作为httpd服务的模块使用:
php编译完成后在httpd服务的模块路径生成libphp5.so模块:
/usr/local/httpd/modules/libphp5.so
并在httpd主配置文件中添加一行模块加载指令:
LoadModule php5_mod modules/libphp5.so
需要编译httpd主配置文件httpd.conf:
补充DirectoryIndex指令:
DirectoryIndex index.html index.php
添加httpd对php文件类型的支持:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
# /usr/local/httpd/bin/httpd -t ;测试配置文件语法
# service httpd24 reload ;重载配置文件
(首次reload可能会失败,可以使用restart)
#/usr/local/httpd/bin/httpd -M|grep php;结果显示php模块已加载
3、配置使用php-fpm服务
配置php-fpm:
# cp etc/php-fpm.conf.default etc/php-fpm.conf ;复制etc目录下的默认
配置文件为php-fpm.conf,并修改其中配置
# cp /tmp/make/php-5.6.23/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm;
复制编译目录中使用于centos 6的服务脚本到/etc/init.d目录中,并
修改相关配置
# chmod +x /etc/init.d/php-fpm ;服务脚本添加执行权限
# chkconfig --add php-fpm ;添加服务
# chkconfig --list php-fpm;查看服务是否添加成功
配置httpd:
编辑httpd.conf主配置文件:
#LoadModule php_mod modules/libphp5 ;取消加载php模块
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Include conf/conf.d/*.conf ;在/usr/local/httpd/conf目录下创建conf.d目录
并包含进主配置文件中
编辑conf/conf.d/php-fpm.conf文件:
#cat < conf/conf.d/php-fpm.conf
四、测试页测试lamp连通性
1、#cat < /usr/local/httpd/htdocs/index.php
EOF
创建httpd连接php和mysqld的测试页;
2、分别使用php-module和php-fpm配置,访问服务器主页index.php;
显示success和php信息页,则lamp服务部署成功
五、部署wordpress(博客网站)
1、tar xf wordpress-4.5.3-zh_CN.tar.gz -C /www/html ;
解压wordpress包,获得wordpress-4.5.3-zh_CN目录
2、ln -sv wordpress-4.5.3-zh_CN /usr/local/httpd/htdocs/wordpress ;
在httpd的站点目录下创建到wordpress站点文件的软链
3、检查wordpress目录及文件的权限是否满足web访问;
4、在/usr/local/httpd/conf/conf.d目录下配置wordpress.conf文件
#cat < /usr/local/httpd/conf/conf.d/wordpress.conf
#
Options Indexes FollowSymLinks
AllowOverride none
Require all granted
EOF
5、连入mysqld,创建wordpress账号及数据库:
#mysql -uroot -ppassword
六、部署phpMyAdmin(mysqld的web-gui管理工具)
1、unzip phpMyAdmin-4.9.5-all-languages.zip;
解压文件得到phpMyAdmin-4.9.5-all-languages目录
2、ln -sv phpMyAdmin-4.9.5-all-languages /usr/local/httpd/htdocs/phpMyAdmin
创建phpMyAdmin文件目录在httpd站点目录下的软链;
3、修改phpMyAdmin的配置文件
# cd /usr/local/httpd/htdocs/phpMyAdmin
# cp config.sample.inc.php config.inc.php
修改config.inc.php文件中的下列字段:
$cfg['blowfish_secret'] = '';在‘’中填入一定数量的随机字符串
$cfg['blowfish_secret'] = 'dc740d3df57bbea26fd83298605e6514';
4、在/usr/local/httpd/conf/conf.d配置文件目录中创建phpMyAdmin配置文件
# cat << EOF > /usr/local/httpd/conf/conf.d/phpMyAdmin.conf
Options Indexes FollowSymLinks
AllowOverride none
Require ip 127.0.0.1
EOF
5、重载httpd服务
# /usr/local/httpd/bin/httpd -t ;测试配置文件语法
# service httpd24 reload;
6、访问phpMyAdmin主页:
http://localhost/phpMyAdmin
七、注入xcache模块
php也支持类似apache的扩展模块的使用,来丰富其功能;
xcache:php的缓存扩展,加速动态内容的访问
1、可以在使用xcache之前,先进行动态网页的访问测试:
#ab -c 100 -n 1000 localhost/phpmyadmin/index.php
* Requests per second: 64.96 [#/sec] (mean)
Time per request: 15.393 [ms]
* Requests per second: 66.62 [#/sec] (mean)
Time per request: 15.010 [ms]
2、下载适用php-5.6.23的xcache版本源码并编译安装:
#wget https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz
#tar xf xcache-3.2.0.tar.gz
#cd xcache-3.2.0
#less INSTALL ;查看源码包下安装说明文件
#/usr/local/php/bin/phpize --clean ;
#/usr/local/php/bin/phpize ;执行PHP安装目录下的phpize命令
#./configure --help |less ;查看配置选项
#./configure
--prefix=/usr/local/xcache-3.2.0 ;安装路径
--with-php-config=/usr/local/php/bin/php-config ;php拓展的编译入口
--enable-xcache ;允许xcache扩展
#make -j4 ;
#make install ;安装完成在php安装路径的lib/php/extensions/no-debug
-zts-20131226目录下生成opcache.so和xcache.so模块
3、配置PHP使用xcache模块:
复制编译目录中的xcache.ini配置文件到php的扩展配置文件目录php.d中
并在xcache.ini中添加或修改以下指令:
extension=/usr/local/php/lib/php/extensions/no-debug-zts-
20131226/xcache.so
重启php-fpm服务
# service php-fpm restart
访问phpinfo信息页,查看xcache是否配置成功;
4、再次进行动态网页的访问测试:
#ab -c 100 -n 1000 localhost/phpMyAdmin/index.php
* Requests per second: 151.80 [#/sec] (mean)
Time per request: 6.588 [ms]
* Requests per second: 165.50 [#/sec] (mean)
Time per request: 6.042 [ms]
对比使用xcache扩展之前,由于缓存的存在,速度有较大的提升;
八、配置lamp+php-fpm的https访问
lamp的https访问和静态网页的https访问设置是一样的,因为https
是在tcp连接建立之前双方先进行ssl会话协定加密信息,然后使用协定
的加密信息对后续tcp连接传输的数据进行数据加密,保证数据安全性。
所以并不对静态内容请求或动态内容请求的处理过程造成干扰。
1、mod_ssl模块:
httpd要支持https访问,需要载入ssl_mod模块,在yum安装时,该模块
包含在安装包mod_ssl中;在编译安装httpd时,使用--enable-ssl选项
会在安装目录modules目录下生产mod_ssl模块,如编译时未使用此选项
则需要单独编译该模块,并复制到modules下
2、配置使用:
mod_ssl模块的配置使用包括:模块装载指令、ssl vhosts配置文件
yum安装时,自动生成了此两个配置文件,分别为:
/etc/httpd/conf.modules.d/ssl.conf配置文件,包含以下指令:
LoadModule ssl_module modules/mod_ssl.so
/etc/httpd/conf.d/ssl.conf配置文件,该文件配置了包括:
Listen、session、sslcryption、cert、key等指令,以及基于443端口的
虚拟机配置
对该配置文件稍作修改,重载httpd服务即可进行https访问
编译安装时,假如编译选项包含了--enable-ssl,则在安装目录下modules目录
中包含了mod_ssl模块,在conf/extra目录下包含了httpd-ssl.conf配置文件,我
们需要进行以下操作来使用他们:
#echo “ LoadModule ssl_module modules/mod_ssl.so” >
conf/conf.d/mod_ssl.conf ;创建conf/conf.d/mod_ssl.conf文件,并配置
指令加载mod_ssl模块
#cp conf/extra/httpd-ssl.conf conf/conf.d/ssl.conf ;复制httpd-ssl.conf
配置文件到httpd配置文件搜索目录中;
修改ssl.conf配置文件中需要修改的部分,如网站证书及ssl会话密钥文
件位置(自用证书的签署和颁发参见openssl 命令详解)
# httpd -t ;检查配置文件语法
# service httpd reload ;重载服务以生效配置
配置中的小问题:保持设定的一致性
创建了目录httpd2.4.25的软链httpd;
配置文件的配置路径用的软链httpd;
而复制的编译目录下的httpd-ssl.conf文件,却使用的httpd2.4.25路径;
从而导致80端口可以访问,而443端口访问却提示权限拒绝;
修改httdp-ssl.conf文件中httpd2.4.25为httpd后访问正常
Tip:软链的权限设定应该就是原目录的权限设定,但不懂为什么权限拒绝;
文件路径的配置最好保持一致,已避免出错;
九、配置80端口访问默认转向443访问
1、在主配置文件httpd.conf中,启用mod_rewrite模块:
LoadModule rewrite_module modules/mod_rewrite.so
2、在conf.d目录中添加虚拟机配置文件80-to-443-vhost.conf,内容如下:
ServerName test.ijia.com
RewriteEngine on
RewriteCond %{SERVER_PORT} !~^443$
RewriteRule ^/?(.*)$ https://${SERVER_NAME}/$1 [R]
3、重载httpd服务:
#httpd -t ;测试配置文件语法;
#service httpd reload ;重载httpd服务
4、打开浏览器访问80端口会被转向到443端口