LAMP即Linux+Apache+MySQL|MariaDB+PHP组合实现动态php站点搭建的实现方式,在实现apache作为WEB服务器的情况下,Apache本身只负责处理静态页面相关的内容,如一段文字、一张图片、一张表格等静态内容,如果想要实现提供动态页面的功能,那么就得结合PHP或者python等程序的解释器才行。
一次客户端和服务器的交互去掉其建立通信的过程可大致要经过如下步骤,首先服务器端接收到客户端发送来的请求,然后分析其中所包含的内容,如有多少动态页面,有多少静态页面,然后把静态页面发送给后端的解释器,或者调用相关的解释模块来执行动态内容。由于解释器负责解释的动态内容是一个程序,而程序的执行往往就需要输入和输出,输入则需要数据,所以当解释器需要数据时又向数据库提出请求,从数据库中提取数据,然后解释器完成程序的执行反馈给apache服务器,最后由apache把执行的结果发送给客户端,从而完成一次响应过程。
搭建LAMP平台,可以以多种方式,可以把PHP编译为Apache的模块,也可以以fpm的机制,让PHP工作为一个独立的守护进程,在此将分别以这两种方式进行演示。
Modules方式实现
准备环境:
主机 | IP | 所安装平台 |
A | 192.168.2.115 | Apache+php |
B | 192.168.2.116 | MySQL |
实验步骤:
配置主机A
一、环境准备
首先在主机A上进行如下配置
确保网络通畅且YUM仓库配置正确后,安装编译环境
[root@bogon apr-1.5.0]# yum groupinstall "Development Tools" "Server Platform"
二、安装Apache:
下载如下源码包:apr-1.5.0.tar.bz2 apr-util-1.5.3.tar.bz2 httpd-2.2.29.tar.gz
1、首先安装apr
解压apr-1.5.0.tar.bz2后切换至目录,依次执行以下步骤
[root@bogon apr-1.5.0]# ./configure --prefix=/usr/local/apr [root@bogon apr-1.5.0]# make &&make install
2、安装apr-util
解压后切换至apr-util目录
[root@bogon apr-util-1.5.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr [root@bogon apr-util-1.5.3]# make && make install
3、安装httpd
[root@bogon httpd-2.2.29]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event --with-apxs2=/usr/local/apache/bin/apxs
[root@bogon httpd-2.2.29]# make && make install
4、为http服务指定进程文件,并为其提供服务脚本
(1)指定进程文件则在配置文件路径下编辑配置文件(当前环境的配置文件路径为/etc/httpd24/httpd.conf)添加如下一行
PidFile "/var/run/httpd.pid"
(2)为httpd服务提供服务脚本
新建文件/etc/rc.d/init.d/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
(3)把apache的安装路径加入到PATH环境变量中,方便查找
在/etc/profile.d目录下新建http.sh文件,并提供以下内容,然后重读配置文件
export PATH=/usr/local/php/bin:/usr/local/apache/bin:$PATH
修改上一步httpd24文件权限,
[root@bogon httpd-2.2.29]# chmod +x /etc/rc.d/init.d/httpd24
(4)重启服务器测试
三、安装php
1.解压php包后切换目录至php目录
[root@bogon php-5.4.40]# ./configure --prefix=/usr/local/php --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts --with-config-file-path=/usr/local/php/
[root@bogon php-5.6.8]# make && make install
2、调整apache参数,
(1)在配置文件里(/etc/httpd24/httpd.conf)加入以下参数
(2)定位至DirectoryIndex并添加如下项
(3)为php提供配置文件
[root@bogon php-5.6.8]# cp php.ini-production /etc/php/php.ini# : /etc/php 目录需要事先创建
(4)提供测试页面
切换目录至:/usr/local/apache/htdocs目录。新建文件,其内容如下所示:
(5)重启服务,测试
配置主机B
安装MairaDB,在此使用通用二进制格式安装
1.下载解压MairaDB
解压后的目录下文件详解:
bin:二进制文件存放位置
COPYING.LESSER
EXCEPTIONS-CLIENT
INSTALL-BINARY
man:帮助文件
README:安装指南
share:共享文件路径
support-files:提供支持功能的文件
COPYING
data:默认数据存放位置
include:头文件
lib:库文件存放位置
mysql-test:测试组件
scripts:补充性样例性脚本
sql-bench:压力测试所用
2.为MairaDB提供数据存放文件,运行所用用户和组,并修改相关权限
[root@localhost mariadb-5.5.40-linux-x86_64]# useradd -r -g 300 mysql [root@localhost mariadb-5.5.40-linux-x86_64]# mkdir /data/mydata -pv [root@localhost mariadb-5.5.40-linux-x86_64]# chown -R mysql:mysql /data/mydata/
3.为MariaDB提供配置文件:查找顺序:/etc/my.cnf-->/etc/mysql/my.cnf-->~/.my.cnf
在support-files目录下提供了相关配置文件样例
my-huge.cnf:内存较大文件所用
[root@localhost mariadb-5.5.40-linux-x86_64]# mkdir /etc/mysql [root@localhost mariadb-5.5.40-linux-x86_64]# cp my-large.cnf /etc/mysql/my.cnf
修改配置文件/etc/mysql/my.cnf
在[mysqld]段下添加如下内容
datadir = /data/mydata/
innodb_file_per_table = on
4.初始化mysql
在解压目录下的scripts目录下有个初始化脚本mysql_install_db
[root@localhost mariadb-5.5.40-linux-x86_64]# ./scripts/mysql_install_db --datadir=/data/mydata/ --user=mysql --skip-name-resolve
5.为MariaDB提供服务文件,并修改环境变量PATH
[root@localhost mariadb-5.5.40-linux-x86_64]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld [root@localhost mariadb-5.5.40-linux-x86_64]# chmod +x /etc/rc.d/init.d/mysqld
在/etc/profile.d/目录下新建文件mysql.sh
添加如下内容
export /usr/local/mysql/bin:$PATH
[root@localhost mariadb-5.5.40-linux-x86_64]# . /etc/profile.d/mysql.sh :重读配置文件
复制源码包到/usr/local/并更名为mysql
[root@localhost tmp]# cp mariadb-5.5.40-linux-x86_64 /usr/local/mysql -r
6、重启服务并测试
7、新建数据库discuz,并授权主机A可以使用test用户,helloword密码来链接
(1)新建数据库
mysql> CREATE DATABASE discuz;
(2)授权
(3)关闭防火墙,在主机A上测试
(4).新建mysql测试页面。在/usr/local/apache/htdocs目录下新建mysql.php,其内容如下
重启服务器测试则无法显示页面有如下提示:
导致此原因是因为没有安装相关的mysql扩展,接下来就将演示安装mysql扩展过程。
2.添加mysql扩展
安装mysql客户端,在此直接用yum安装即可,
[root@bogon php-5.4.40]# yum install mysql mysql-devel -y
切换目录至php源码释放目录下的ext目录下的mysql目录,
[root@bogon php-5.4.40]# cd /tmp/by/php-5.4.40/ext/mysql
执行命令
[root@bogon mysql]# /usr/local/php/bin/phpize ,出现如下提示信息
进行mysql扩展编译
[root@bogon mysql]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql [root@bogon mysql]# make && make install
切换到目录/usr/local/php/lib/php/extensions/no-debug-zts-20100525下用ls查看,如果出现mysql.so文件,则编译成功
修改php配置文件,增加如下一行
重启httpd测试
然后关闭主机B上的MySQL服务测试
此时平台搭建成功
四、安装ucenter、discuz
1.下载 UCenter_1.5.2_SC_GBK.zip和Discuz_X2_SC_GBK.zip。解压
[root@localhost htdocs]# unzip -d /discuz Discuz_X2_SC_GBK.zip [root@localhost htdocs]# unzip -d /ucenter UCenter_1.5.2_SC_GBK.zip [root@localhost htdocs]# mkdir ucenter bbs
2.移动文件到相关目录
[root@localhost htdocs]# mv /discuz/upload/ ./bbs/ [root@localhost htdocs]# mv /ucenter/upload/ ./ucenter/
3.更改相关文件的权限
[root@localhost htdocs]# cd ucenter/ [root@localhost ucenter]# chown -R daemon ./data/ [root@localhost ucenter]# cd ../bbs/ [root@localhost bbs]# chown -R daemon *
4.修改php配置文件,在第一个short_open_tag的值改为On,表示启用短标签功能
[root@localhost htdocs]# vim /usr/local/php/php.ini
5.重启apache服务器安装测试
[root@localhost bbs]# service httpd24 restart
在物理机的浏览器中输入以下地址http://192.168.2.115/ucenter/install/index.php若出现以下界面。则成功
根据提示安装
安装
进入后台界面
后台
Ucenter至此安装成功下面安装discuz
6.安装discuz
在浏览器输入url:http://192.168.2.115/bbs/install
根据提示安装即可
安装后测试
至此discuz论坛基于LAMP安装成功
本文出自 “linux-冒泡” 博客,请务必保留此出处http://7703592.blog.51cto.com/7693592/1649948
原文:http://7703592.blog.51cto.com/7693592/1649948