前言:LAMP :Linux+Apache+MySQL+PHP,是大家经常采用的组合,今天来做一下一个实验,看看他们如何组合在一起。我的平台:RedHat 5.8 ,Development Libraries,Development Tools,X Software Development已安装,计划安装的软件:
httpd-2.4.3.tar.bz2 ##它依赖的包有 apr arp-utils pcre-devel php-5.4.8.tar.bz2 ##它依赖的包有 libmcrypt libmcrypt-devel mysql-5.5.28-linux2.6-i686.tar.bz2 ##通用已编译包
一,编译安装httpd-2.4.3
1,安装它依赖的包apr ##Apache portable Run-time libraries,Apache可移植运行库
1: tar -xvf apr-1.4.6.tar.bz22: cd apr-1.4.63: ./configure --prefix=/usr/local/apr4: make && make install2,安装依赖包arp-utils ##可移植库的一些工具
1: cd ..2: cd apr-util-1.4.13: ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr4: make && make install5: cd ..3.安装pcre-devel ##这个包在httpd编译的时候会用的到
1: yum -y install pcre-devel1: tar -xvf httpd-2.4.3.tar.bz22: cd httpd-2.4.33: ./configure --prefix=/usr/local/apache \ ##安装目录4: > --sysconfdir=/etc/httpd \ ##配置文件目录5: > --enable-so \ ##启用动态库,也就是实现模块的动态加载6: > --enable-cgi \ ##运行执行cgi程序7: > --enable-ssl \ ##允许基于ssl加密传输8: > --enable-rewrite \ ##允许URL地址重写9: > --with-zlib \ ##支持压缩10: > --with-pcre \ ##支持perl语言的正则表达式11: > --with-apr=/usr/local/apr \ ##apr的目录12: > --with-apr-util=/usr/local/arp-util \ ##apr-util的目录13: > --enable-mpms-shared=all \ ##实现mpm的动态切换14: > --with-mpm=event ##默认加载的mpm 15: 16: make && make install ##编译安装,这的大家懂得吧
5.配置httpd,简单建立两个虚拟主机
1: vi /etc/httpd/httpd.conf ##编辑配置文件2: #DocumentRoot "/usr/local/apache/htdocs" ##213行,欲建立虚拟主机,注释此行3:4:1: /etc/httpd/extra/httpd-vhosts.conf ##如下所示2: <VirtualHost *:80>3: DocumentRoot "/www/laoguang.me/" ##文档目录4: ServerName www.laoguang.me ##域名5: ErrorLog "/www/logs/error_laoguang.log" ##错误日志6: CustomLog "/www/logs/access_laoguang.log" common ##访问日志7: <Directory /www/laoguang.me> ##2.4必须要求对目录权限进行设置8: AllowOverride none ##不允许url重写9: Options none ##不启用所有选项10: Require all granted ##允许所有11: </Directory>12: </VirtualHost>13: <VirtualHost *:80>14: DocumentRoot "/www/magedu.com" ##同上15: ServerName www.magedu.com16: ErrorLog "/www/logs/error_magedu.log"17: CustomLog "/www/logs/access_magedu.log" common18: <Directory /www/magedu.com>19: AllowOverride none20: Options none21: Require all granted22: </Directory>23: </VirtualHost>6,建立相应目录与文件,并修改权限
1: mkdir -pv /www/{laoguang.me,magedu.com,logs}2: echo "Hello ,I'm LaoGuang" > /www/laoguang.me/index.html3: echo "Hello ,I'm Magedu" > /www/magedu.com/index.html4: chown -R deamon:deamon /www5: ##启动httpd6: /etc/local/apache/bin/apachectl start ##没有提示代表一切正常7: ##修改/etc/hosts文件,建立映射,添加8: 172.16.1.1 www.laoguang.me ##我的IP是172.16.1.19: 172.16.1.1 www.magedu.com10: ##打开浏览器,或者 elinks www.laoguang.me看看能否正常访问7,启用基于ssl的https,编辑/etc/httpd/httpd.conf
1: LoadModule ssl_module modules/mod_ssl.so ##126行左右取消注释,启用ssl模块2: LoadModule socache_shmcb_module modules/mod_socache_shmcb.so ##取消注释,ssl模块依赖3: include /etc/httpd/extra/httpd-ssl.conf ##480行左右取消注释,启用httpd-ssl配置文件4: ##修改ssl配置文件,被修改的选项有5: DocumentRoot "/www/laoguang.me" ##确定文档目录6: ServerName www.laoguang.me:443 ##域名为哪个7: SSLCertificateFile "/etc/httpd/laoguang.crt" ##证书位置8: SSLCertificateKeyFile "/etc/httpd/laoguang.key" ##私钥位置9: ##添加如下,否则2.4的httpd不让访问10: <Directory /www/laoguang.me>11: Options none12: AllowOverride none13: Require all granted14: </Directory>15:16: ##建立相应的证书与私钥 看下面链接 11: http://laoguang.blog.51cto.com/6013350/10356088,重启httpd,/etc/local/apache/bin/apachectl restart ,测试https://www.laoguang.me能否正常运行。为了方便更新PATH,省的每次都绝对路径启动服务,并添加帮助文档
1: echo "export PATH=$PATH:/usr/local/apache/bin" > /etc/profile.d/httpd.sh ##更新PATH2: vi /etc/man.config ##添加man文档3: MANPATH=/usr/local/apache/man 48行左右
提供个shell脚本来控制Httpd:
#!/bin/bash
#
# httpd Startup script for the Apache HTTP Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server. It is used to serve \
# HTML files and CGI.
# processname: httpd
# config: /etc/httpd/conf/httpd.conf
# config: /etc/sysconfig/httpd
# pidfile: /var/run/httpd.pid
# Source function library.
. /etc/rc.d/init.d/functions
if [ -f /etc/sysconfig/httpd ]; then
. /etc/sysconfig/httpd
fi
# Start httpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-"C"}
# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=""
# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based "worker" MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.
# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0
start() {
echo -n $"Starting $prog: "
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} -d 10 $httpd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
echo -n $"Reloading $prog: "
if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
RETVAL=$?
echo $"not reloading due to configuration syntax error"
failure $"not reloading $httpd due to configuration syntax error"
else
killproc -p ${pidfile} $httpd -HUP
RETVAL=$?
fi
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} $httpd
RETVAL=$?
;;
restart)
stop
start
;;
condrestart)
if [ -f ${pidfile} ] ; then
stop
start
fi
;;
reload)
reload
;;
graceful|help|configtest|fullstatus)
$apachectl $@
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
exit 1
esac
exit $RETVAL
而后为此脚本赋予执行权限:
# chmod +x /etc/rc.d/init.d/httpd
加入服务列表:
# chkconfig --add httpd
接下来就可以启动服务进行测试了。
二,安装MySQL-5.5.28-linux2.6-i686.tar.bz2
1,建立需要的用户与用户组mysql以安全运行服务,并修改权限
1: groupadd -r mysql2: useradd -r -g mysql mysql2,解压缩Mysql到 /usr/local 并修改权限
1: tar xvf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local2: cd /usr/local3: ln -sv mysql-5.5.28-linux2.6-i686/ mysql4: chown -R mysql:mysql mysql3,我们把Mysql的数据放在/data下面,准备这个目录与权限
1: mkdir /data2: chown -R mysql:mysql /data4,安装初始化Mysql (由于这个包是编译好的绿色包)
1: cd /usr/local/mysql2: ./scripts/mysql_install_db --datadir=/data --user=mysql3: ## 拷贝控制脚本到/etc/init.d下4: cp ./support-files/mysql.server /etc/init.d/mysqld5: ##拷贝配置文件6: cp ./support-files/my-huge.cnf /etc/my.cnf7: ##修改my.cnf8: thread_concurrency=4 ##你的cpu数*29: datadir=/data ##添加数据目录5,把mysql提供的库文件,头文件添加到相应库里
1: ln -sv /usr/local/mysql/include/ /usr/include/mysql ##把头文件链接头文件库2: echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf ##把库做一个附属配置文件,开机会自动加载3: ldconfig -v 立刻加载库到缓存4:5: echo "export PATH=$PATH:/usr/local/mysql/bin " >/etc/profile.d/mysql.sh ##更新PATH6: vi /etc/man.config ##添加帮助文档7: MANPATH /usr/local/mysql/man ##48行左右加入6,添加到服务中实现开机启动
1: chkconfig --add mysqld ##添加到service中2: chkconfig mysqld on ##添加到开机启动3: service mysqld start ##现在启动服务如果没有报错,mysql就安装完毕了,你可以去设置mysqld了
三,编译安装php-5.4.8.tar.bz2
1,先安装它的依赖包 libmcrypt-2.5.7-5.el5.i386.rpm,libmcrypt-devel-2.5.7-5.el5.i386.rpm
1: rpm -ivh libmcrypt-2.5.7-5.el5.i386.rpm libmcrypt-devel-2.5.7-5.el5.i386.rpm2,编译安装php-5.4.8
1: tar -xvf php-5.4.8.tar.bz22: cd php-5.4.83: ./configure --prefix=/usr/local/php \ ##安装目录你懂得4: > --with-mysql=/usr/local/mysql \ ##跟mysql整合5: > --with-openssl \ ##支持ssl6: > --with-mysqli=/usr/local/mysql/bin/mysql_config \##支持mysqli函数,靠它与mysql交流7: > --enable-mbstring \ ##支持像中文这样的多字符语言8: > --with-freetype-dir \ ##这个是关于字体的9: > --with-jpeg-dir \ ##支持jpeg你懂得10: > --with-png-dir \ ##支持png你也懂得11: > --with-zlib \ ##支持压缩库12: > --with-libxml-dir=/usr \ ##支持xml库13: > --enable-xml \ ##支持xml14: > --enable-sockets \ ##支持套接字15: > --with-apxs2=/usr/local/apache/bin/apxs \ ##这是与apache沟通的选项16: > --with-mcrypt \ ##支持加密17: > --with-config-file-path=/etc \ ##配置文件目录18: > --with-config-file-scan-dir=/etc/php.d \ ##还会扫描的配置文件目录19: > --with-bz2 \ ##支持bz220: > --enable-maintainer-zts ##支持apache的worker或event这两个MPM3, make &&make install ##你懂得
4,生成配置php文件
1: cp php.ini-production /etc/php.ini ##从安装目录下拷贝到/etc/下5,修改 /etc/httpd/httpd.conf让httpd支持php
1: DirectoryIndex index.php index.html ##248行左右添加php的主页支持2: AddType application/x-httpd-php .php ##合适位置添加对php类型文件的支持6,修改主页测试运行
1: echo -e "<?php\nphpinfo()\n?>" > /www/laoguang.me/index.html2: mv /www/laoguang.me/index.html /www/laoguang.me/index.php3:4: ##访问www.laoguang.me测试运行是否能调用phpinfo()这个函数如果能运行,php就安装整合完毕了
四:编译安装xcache为php加速 1.编译安装xcache
2: cd xcache-2.0.0
3: /usr/local/php/bin/phpize
4: ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
5: make && make install
安装结束时,会出现类似如下行:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/
2.编译php.ini,整合php与xcache
1: ##将xcache提供的样例配置导入php.ini
2: mkdir /etc/php.d
3: cp xcache.ini /etc/php.d
4:
5: ##编辑/etc/php.d/xcache.ini,找到zend_extension开头的行,修改为如下行:
6: zend_extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so
所有整合完毕了。
转载于:https://blog.51cto.com/laoguang/1039208
476

被折叠的 条评论
为什么被折叠?



