LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写:
1、Linux;操作系统;
2、Apache;网页服务器;
3、MariaDB或MysqL,数据库管理系统(或者数据库服务器);
4、PHP、Perl或Python,脚本语言;
@H_403_22@@H_403_22@实验要求: @H_403_22@ @H_403_22@ @H_403_22@(1) 三者分离于两台或三台主机; @H_403_22@ (2) 一个虚拟主机用于提供PHPMyAdmin;另一个虚拟主机用于提供wordpress; @H_403_22@ (3) xcache @H_403_22@ (4) 尝试mpm为非prefork机制; @H_403_22@
@H_403_22@ @H_403_22@
IP | 系统 | 软件 |
192.168.1.102 | CentOS 6.7 | httpd(event) |
192.168.1.103 | CentOS 6.7 | PHP-fpm,xcache |
192.168.1.104 | CentOS 6.7 | mariadb |
@H_403_22@
@H_403_22@CentOS 6: @H_403_22@ PHP-5.3.2-:默认不支持fpm机制;需要自行打补丁并编译安装; @H_403_22@ httpd-2.2:默认不支持fcgi协议,需要自行编译此模块; @H_403_22@
@H_403_22@ 解决方案:编译安装httpd-2.4,apr,apr-util版本为1.4+,PHP-5.3.3+; @H_403_22@
@H_403_22@@H_301_155@ 实验安装版本:httpd-2.4.10 + apr-1.5.0+ apr-util-1.5.3 + PHP-5.4.40 + xcache-3.2.0 + mariadb-5.5.46
@H_403_22@@H_301_155@ @H_403_22@
@H_403_22@@H_301_155@
@H_403_22@
@H_403_22@一、192.168.1.102主机,编译安装httpd-2.4.10+ apr-1.5.0 + apr-util-1.5.3
httpd-2.4.10需要较新版本的apr和apr-util,因此需要事先对其进行升级,这里使用源代码编译安装。
apr和apr-util的包下载地址:https://archive.apache.org/dist/apr/
httpd程序源码包下载地址:https://archive.apache.org/dist/httpd/
1、安装开发环境包组和开发程序包
# hwclock -s //将软件时间同步为硬件时间
#yumgrouplist //查看包组
#yumgroupinstall"DevelopmentTools""ServerPlatformDevelopment"-y //开发环境包组
#yuminstallpcre-devel-y //httpd-2.4.10编译过程要依赖于pcre-devel软件包
2、编译安装apr
# tar xf apr-1.5.0.tar.bz2
# cd apr-1.5.0
# ./configure --prefix=/usr/local/apr
# make && make install
3、编译安装apr-util
# 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/apr
# make && make install
4、编译安装并配置httpd-2.4.10
4.1编译安装
# rpm -qa httpd
httpd-2.2.15-45.el6.centos.x86_64
# yum remove httpd -y //卸载之前rpm包安装的httpd
# tar xf httpd-2.4.10.tar.bz2
# cd httpd-2.4.10
#./configure --prefix=/usr/local/apache24 --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-cgid --enable-rewrite--enable-modules=most--enable-mods-shared=most--enable-mpms-shared=all --with-mpm=event--with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
# make && make install
//sysconfdir=/etc/httpd24 指定配置文件安装位置
//enable-so 支持动态共享模块(DOS),如果没有这个模块PHP将无法与apache结合工作
//enable-proxy 支持代理
//enable-proxy-fcgi 支持fcgi
// enable-cgi 支持cgi
//enable-rewrite 支持URL重写
//enable-modules=most 启用哪些模块
//enable-mpms-shared=all 支持多道处理模块
//with-mpm=event 设定默认模块为prefork模块
//with-zlib 支持压缩库,便于页面压缩后的发送和接收,互联网传播时可节约带宽
//with-pcre 支持cre扩展的正则表达式,支持更强大的正则表达式分析功能
4.2修改httpd.pid路径,默认安装时的路径在/usr/local/apache24/logs
# /usr/local/apache24/bin/apachectl start
@H_403_22@ # /usr/local/apache24/bin/apachectl stop @H_403_22@ # vim /etc/httpd24/httpd.conf @H_403_22@ pidfile "/var/run/httpd.pid" //在ServerRoot "/usr/local/apache24" 下面添加这一行 @H_403_22@ @H_403_22@ #/usr/local/apache24/bin/apachectl start @H_403_22@ # ls /var/run //发现httpd.pid出现 @H_403_22@ 4.3 修改PATH环境变量,让系统可以直接使用apachectl的相关命令
# vim /etc/profile.d/httpd24.sh
exportPATH=/usr/local/apache24/bin:$PATH
编辑配置文件(全局有效且重启shell后依然有效)此时,环境变量不会立即生效,但是对新登录的用户有效,然后新用户登录进行验证
4.4、提供SysV服务脚本/etc/rc.d/init.d/httpd24
# vim/etc/rc.d/init.d/httpd24 //内容如下
@H_403_22@# Source function library. @H_403_22@. /etc/rc.d/init.d/functions @H_403_22@
@H_403_22@if [ -f /etc/sysconfig/httpd24 ]; then @H_403_22@ . /etc/sysconfig/httpd24 @H_403_22@fi @H_403_22@
@H_403_22@# Start httpd in the C locale by default. @H_403_22@HTTPD_LANG=${HTTPD_LANG-"C"} @H_403_22@
@H_403_22@# This will prevent initlog from swallowing up a pass-phrase prompt if @H_403_22@# mod_ssl needs a pass-phrase from the user. @H_403_22@INITLOG_ARGS="" @H_403_22@
@H_403_22@# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server @H_403_22@# with the thread-based "worker" MPM; BE WARNED that some modules may not @H_403_22@# work correctly with a thread-based MPM; notably PHP will refuse to start. @H_403_22@
@H_403_22@# Path to the apachectl script,server binary,and short-form for messages. @H_403_22@apachectl=/usr/local/apache24/bin/apachectl @H_403_22@httpd=${HTTPD-/usr/local/apache24/bin/httpd} @H_403_22@prog=httpd @H_403_22@pidfile=${PIDFILE-/var/run/httpd.pid} @H_403_22@lockfile=${LOCKFILE-/var/lock/subsys/httpd} @H_403_22@RETVAL=0 @H_403_22@
@H_403_22@start() { @H_403_22@ echo -n $"Starting $prog: " @H_403_22@ LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS @H_403_22@ RETVAL=$? @H_403_22@ echo @H_403_22@ [ $RETVAL = 0 ] && touch ${lockfile} @H_403_22@ return $RETVAL @H_403_22@} @H_403_22@
@H_403_22@stop() { @H_403_22@ echo -n $"Stopping $prog: " @H_403_22@ killproc -p ${pidfile} -d 10 $httpd @H_403_22@ RETVAL=$? @H_403_22@ echo @H_403_22@ [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile} @H_403_22@} @H_403_22@reload() { @H_403_22@ echo -n $"Reloading $prog: " @H_403_22@ if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then @H_403_22@ RETVAL=$? @H_403_22@ echo $"not reloading due to configuration Syntax error" @H_403_22@ failure $"not reloading $httpd due to configuration Syntax error" @H_403_22@ else @H_403_22@ killproc -p ${pidfile} $httpd -HUP @H_403_22@ RETVAL=$? @H_403_22@ fi @H_403_22@ echo @H_403_22@} @H_403_22@
@H_403_22@# See how we were called. @H_403_22@case "$1" in @H_403_22@ start) @H_403_22@ start @H_403_22@ ;; @H_403_22@ stop) @H_403_22@ stop @H_403_22@ ;; @H_403_22@ status) @H_403_22@ status -p ${pidfile} $httpd @H_403_22@ RETVAL=$? @H_403_22@ ;; @H_403_22@ restart) @H_403_22@ stop @H_403_22@ start @H_403_22@ ;; @H_403_22@ condrestart) @H_403_22@ if [ -f ${pidfile} ] ; then @H_403_22@ stop @H_403_22@ start @H_403_22@ fi @H_403_22@ ;; @H_403_22@ reload) @H_403_22@ reload @H_403_22@ ;; @H_403_22@ graceful|help|configtest|fullstatus) @H_403_22@ $apachectl $@ @H_403_22@ RETVAL=$? @H_403_22@;; @H_403_22@ *) @H_403_22@echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}" @H_403_22@ exit 1 @H_403_22@esac @H_403_22@
@H_403_22@exit $RETVAL
而后为此脚本赋予执行权限:
# chmod +x /etc/rc.d/init.d/httpd24
加入服务列表:
# chkconfig --add httpd24
@H_403_22@开机自动启动 @H_403_22@#chkconfighttpd24 on @H_403_22@@H_403_22@启动服务 @H_403_22@#servicehttpd24 start @H_403_22@#ss-tnl @H_403_22@
附加:这里httpd编译安装时指定MPM模块类型为event,想要切换MPM中的类型可以编辑主配置文件即可。
例如:改为prefork模型
#vim /etc/httpd24/httpd.conf //编辑生成的主配置文件
Include/etc/httpd24/extra/httpd-mpm.conf //去掉注释符,启用extra模块
#LoadModulempm_event_modulemodules/mod_mpm_event.so //注释掉当前模型
LoadModulempm_prefork_modulemodules/mod_mpm_prefork.so //改成要使用的MPM模块类型
重启httpd服务后发现MPM模块类型切换为prefork模型
# httpd -M
@H_403_22@
@H_403_22@
1、下载加压mariadb
下载平台对应的MysqL版本至本地,下载地址为https://downloads.mariadb.com/archives/
# tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local
# cd /usr/local/
# ln -sv mariadb-5.5.46-linux-x86_64/ MysqL
# cd MysqL
#groupadd-r-g306MysqL
@H_403_22@ #useradd-g306-r-u306MysqL# chown -R MysqL:MysqL /usr/local/MysqL/*
3、准备数据存放的文件系统
新建一个逻辑卷,并将其挂载至特定目录即可。这里假设其逻辑卷的挂载目录为/mydata,而后需要创建/mydata/data目录做为MysqL数据的存放目录。
#mkdir/mydata/data-pv
#chown-RMysqL.MysqL/mydata/data
# chmod750/mydata/data
4、初始化MysqL-5.5.46
# cd /usr/local/MysqL
# scripts/MysqL_install_db --user=MysqL --datadir=/mydata/data
@H_403_22@ 5、为MysqL提供主配置文件 @H_403_22@@H_403_22@ @H_403_22@# cd /usr/local/MysqL @H_403_22@# cp support-files/my-large.cnf /etc/my.cnf @H_403_22@# vim/etc/my.cnf @H_403_22@#cat/proc/cpuinfo //查看cpu个数 @H_403_22@
@H_403_22@并修改此文件中thread_concurrency的值为你的cpu个数乘以2,比如这里使用如下行: @H_403_22@thread_concurrency = 2 @H_403_22@
@H_403_22@另外还需要在[MysqLd]下添加数据文件的存放位置: @H_403_22@datadir = /mydata/data @H_403_22@
@H_403_22@
6、为MysqL提供sysv服务脚本 @H_403_22@# cd /usr/local/MysqL @H_403_22@# cp support-files/MysqL.server /etc/rc.d/init.d/MysqLd @H_403_22@# chmod +x /etc/rc.d/init.d/MysqLd @H_403_22@
@H_403_22@添加至服务列表: @H_403_22@# chkconfig --add MysqLd @H_403_22@# chkconfig MysqLd on @H_403_22@7、启动MysqL服务
@H_403_22@# service MysqLd start @H_403_22@
@H_403_22@ exportPATH=/usr/local/MysqL/bin:$PATH @H_403_22@
@H_403_22@
@H_403_22@ @H_403_22@为了使用MysqL的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤: @H_403_22@
@H_403_22@9、输出MysqL的man手册至man命令的查找路径 @H_403_22@
@H_403_22@ 编辑/etc/man.config,添加如下行即可: @H_403_22@ MANPATH /usr/local/MysqL/man @H_403_22@
@H_403_22@
@H_403_22@ 10、输出MysqL的头文件至系统头文件路径/usr/include @H_403_22@
@H_403_22@# ln -sv /usr/local/MysqL/include /usr/include/MysqL @H_403_22@
@H_403_22@ 11、输出MysqL的库文件给系统库查找路径 @H_403_22@
@H_403_22@ # echo '/usr/local/MysqL/lib' > /etc/ld.so.conf.d/MysqL.conf @H_403_22@
@H_403_22@ 12、系统重新载入系统库 @H_403_22@
@H_403_22@ # ldconfig @H_403_22@
13、创建和授权wordpress和PHPMyAdmin用户
MariaDB [(none)]> CREATE DATABASE wpdb;//创建wordpress数据库
MariaDB [(none)]> GRANT ALL ON wpdb.* TO wpuser@'192.168.1.%' IDENTIFIED BY 'wppass'; //授权wordpress用户
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> CREATE DATABASE pma; //创建PHPMyAdmin数据库
Query OK,1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL ON pma.* TO pmauser@'192.168.1.%' IDENTIFIED BY 'pmapass';
Query OK,0 rows affected (0.00 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK,0 rows affected (0.00 sec)
@H_403_22@ @H_403_22@@H_403_22@三、192.168.1.103主机,编译安装PHP-5.4.40 @H_403_22@ @H_403_22@ 1、解决依赖关系 @H_403_22@
@H_403_22@ 自行配置好yum源(系统安装源及epel源)后执行如下命令: @H_403_22@
@H_403_22@# yum groupinstall "Server Platform Development" "Development tools" -y @H_403_22@# yum install bzip2-devel libmcrypt-devel libxml2-devel mhash mhash-devel libmcrypt-devel libmcrypt -y @H_403_22@ @H_403_22@2、编译安装PHP-5.4.40 @H_403_22@
@H_403_22@ 下载源码包至本地目录,下载位置http://mirrors.sohu.com/php/。 @H_403_22@
@H_403_22@# tar xf PHP-5.4.40.tar.bz2 @H_403_22@# cd PHP-5.4.40 @H_403_22@ #./configure --prefix=/usr/local/PHP --with-openssl --with-MysqL=MysqLnd --with-pdo-MysqL=MysqLnd --with-MysqLi=MysqLnd --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--enable-maintainer-zts @H_403_22@
@H_403_22@
@H_403_22@要想支持fpm时,需要去掉--with-apxs2=/usr/local/apache/bin/apxs,添加--enable-fpm ,注意两者不能同时存在。
@H_403_22@说明:如果使用PHP5.3以上版本,为了链接MysqL数据库,可以指定MysqLnd,这样在本机就不需要先安装MysqL或MysqL开发包了。MysqLnd从PHP5.3开始可用,可以编译时绑定到它(而不用和具体的MysqL客户端库绑定形成依赖),但从PHP5.4开始它就是默认设置了。 @H_403_22@#./configure--with-MysqL=MysqLnd--with-pdo-MysqL=MysqLnd--with-MysqLi=MysqLnd @H_403_22@
@H_403_22@#make -j 4 && make install @H_403_22@ @H_403_22@
@H_403_22@ 3、为PHP提供配置文件: @H_403_22@
@H_403_22@# cp PHP.ini-production /etc/PHP.ini @H_403_22@
4、配置PHP-fpm @H_403_22@
@H_403_22@ 为PHP-fpm提供SysVinit脚本,并将其添加至服务列表: @H_403_22@ #cpsapi/fpm/init.d.PHP-fpm/etc/rc.d/init.d/PHP-fpm @H_403_22@ #chmod+x/etc/rc.d/init.d/PHP-fpm @H_403_22@ #chkconfig--addPHP-fpm @H_403_22@ #chkconfigPHP-fpmon @H_403_22@
@H_403_22@ 为PHP-fpm提供配置文件: @H_403_22@ #cp/usr/local/PHP/etc/PHP-fpm.conf.default/usr/local/PHP/etc/PHP-fpm.conf @H_403_22@
@H_403_22@ 编辑PHP-fpm的配置文件: @H_403_22@ #vim/usr/local/PHP/etc/PHP-fpm.conf @H_403_22@
@H_403_22@ 配置fpm的相关选项为你所需要的值,并启用pid文件: @H_403_22@ pm.max_children=50 @H_403_22@ pm.start_servers=5 @H_403_22@ pm.min_spare_servers=2 @H_403_22@ pm.max_spare_servers=8 @H_403_22@ pid=run/PHP-fpm.pid //启用 @H_403_22@ listen=192.168.1.103:9000 @H_403_22@ listen.allowed_clients=192.168.1.102 @H_403_22@
@H_403_22@ 然后就可以启动PHP-fpm了,查看9000端口。 @H_403_22@ #servicePHP-fpmstart @H_403_22@
@H_403_22@
@H_403_22@四、192.168.1.103主机,安装xcache,为PHP加速:(可以支持PHP-5.4的xcache版本必须为2.0+) @H_403_22@ 下载地址https://xcache.lighttpd.net/pub/Releases
@H_403_22@
@H_403_22@ 1、编译安装 @H_403_22@
@H_403_22@ @H_403_22@ #tarxfxcache-3.2.0.tar.bz2 @H_403_22@ @H_403_22@ #cdxcache-3.2.0
@H_403_22@ @H_403_22@ #/usr/local/PHP/bin/PHPize @H_403_22@
@H_403_22@
@H_403_22@ @H_403_22@ 安装结束时,会出现类似如下行: @H_403_22@
@H_403_22@
@H_403_22@ @H_403_22@ @H_403_22@ 2、编辑PHP.ini,整合PHP和xcache: @H_403_22@
@H_403_22@ 首先将xcache提供的样例配置导入PHP.ini @H_403_22@ #mkdir/etc/PHP.d @H_403_22@ #cp/root/xcache-3.2.0/xcache.ini/etc/PHP.d @H_403_22@ @H_403_22@ 编辑配置文件/etc/PHP.d/xcache.ini @H_403_22@ # vim/etc/PHP.d/xcache.ini @H_403_22@ 在[xcache-common]开下,修改为如下行: @H_403_22@ extension=/usr/local/PHP/lib/PHP/extensions/no-debug-zts-20100525/xcache.so @H_403_22@ @H_403_22@
@H_403_22@ 注意:如果PHP.ini文件中有多条extension指令行,要确保此新增的行排在第一位。 @H_403_22@
@H_403_22@
@H_403_22@五、192.168.1.102主机,配置httpd-2.4.10
@H_403_22@
@H_403_22@1、编辑httpd主配置文件,关闭中心主机,启用虚拟主机配置文件,启用httpd的相关模块 @H_403_22@
@H_403_22@ # vim /etc/httpd24/httpd.conf @H_403_22@ #DocumentRoot"/usr/local/apache24/htdocs" //注释掉这一行 @H_403_22@ Include/etc/httpd24/extra/httpd-vhosts.conf //找到并启用这一行 @H_403_22@ @H_403_22@ LoadModulelog_config_modulemodules/mod_log_config.so //确认这一行启用,虚拟主机 配置文件中会用到mod_log_config @H_403_22@
@H_403_22@ @H_403_22@ 在Apachehttpd2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载 @H_403_22@ LoadModuleproxy_modulemodules/mod_proxy.so //启用 @H_403_22@ LoadModuleproxy_fcgi_modulemodules/mod_proxy_fcgi.so //启用 @H_403_22@ 添加如下二行 @H_403_22@ AddTypeapplication/x-httpd-PHP.PHP @H_403_22@ AddTypeapplication/x-httpd-PHP-source.PHPs @H_403_22@
@H_403_22@
@H_403_22@ @H_403_22@ @H_403_22@ @H_403_22@定位至DirectoryIndexindex.html @H_403_22@
@H_403_22@ 修改为: @H_403_22@ DirectoryIndexindex.PHPindex.html @H_403_22@
@H_403_22@
@H_403_22@
@H_403_22@2、编辑虚拟主机的配置文件 @H_403_22@ @H_403_22@ 1)配置虚拟主机的配置文件使虚拟主机支持使用fcgi @H_403_22@ @H_403_22@
@H_403_22@ #vim/etc/httpd24/extra/httpd-vhosts.conf @H_403_22@ 修改如下 @H_403_22@ @H_403_22@
@H_403_22@
@H_403_22@
@H_403_22@
@H_403_22@ 2)为虚拟主机提供默认访问页面和日志存放目录 @H_403_22@ @H_403_22@ #mkdir/var/log/httpd24 //创建的日志存放位置 @H_403_22@#mkdir/apps/vhosts/{b.net,c.org}-pv //httpd主机和PHP主机都需要创建访问路径 @H_403_22@
@H_403_22@
@H_403_22@ # vim /apps/vhosts/b.net/index.PHP //PHP主机上创建测试页 @H_403_22@
@H_403_22@
@H_403_22@
@H_403_22@ # vim /apps/vhosts/c.org/index.PHP //PHP主机上创建测试页 @H_403_22@ @H_403_22@
@H_403_22@
@H_403_22@ #httpd-t //习惯做配置语法测试 @H_403_22@ SyntaxOK @H_403_22@ #servicehttpd24 restart @H_403_22@
@H_403_22@ @H_403_22@ 然后windows主机加192.168.1.102主机名解析 @H_403_22@
@H_403_22@ @H_403_22@六、192.168.1.103主机,为虚拟主机安装配置wordpress和PHPMyAdmin @H_403_22@ @H_403_22@ 1、 安装wordpress //PHP主机 @H_403_22@
@H_403_22@ 1)下载、配置wordpress @H_403_22@ @H_403_22@# cd /apps/vhosts/b.net/ @H_403_22@ # ls //下载wordpress压缩包(下载地址:https://wordpress.org/download/) @H_403_22@ wordpress-4.3.1-zh_CN.zip @H_403_22@ # unzip wordpress-4.3.1-zh_CN.zip @H_403_22@ # cd wordpress/ @H_403_22@ # mv wp-config-sample.PHP wp-config.php @H_403_22@# vim wp-config.php @H_403_22@
@H_403_22@# scp -r /apps/vhosts/b.net/wordpress root@192.168.1.102:/apps/vhosts/b.net/ //此时需要把PHP主机的wordpress文件放到httpd主机的页面访问路径下
@H_403_22@
@H_403_22@
2)httpd主机
# httpd -t //测试语法
Syntax OK
# service httpd24 restart
@H_301_2368@3)windows浏览器访问www.b.net/wordpress,按之前授权的信息填写相关内容。
2、安装PHPMyAdmin
1)下载解压PHPMyAdmin
# cd /apps/vhosts/c.org
# ls
PHPMyAdmin-4.4.14.1-all-languages.zip //下载PHPMyAdmin压缩包(https://www.phpmyadmin.net/downloads/)
# unzip PHPMyAdmin-4.4.14.1-all-languages.zip
# mv PHPMyAdmin-4.4.14.1-all-languages pma
# cd pma
# mv config.sample.inc.PHP config.inc.PHP
2)配置PHPMyAdmin
# openssl rand -base64 18 //生成一段随机数
fUDTA121uzwkoWMr4m4DGKQv
@H_403_22@
3)httpd主机 @H_403_22@
# httpd -t //测试语法
Syntax OK
#service httpd24 restart
@H_301_2368@4@H_301_2368@)windows浏览器访问www.c.org/pma,按之前授权的信息填写相关内容。