LAMP(Linux+Apache+MySQL+PHP/Python/Perl)架构是一套强大的网站解决方案,LAMP是多个开源项目的首字母缩写,
LAMP网站架构主要应用于动态网站的web架构,这种web框架具有通用、跨平台、高性能、高负载、稳定等特性,是目前企业
部署网站的首选平台。Nginx目前在国内的应用也越来越成熟,相对于Apache而言,Nginx对于静态文件的响应能力远远高于
Apache服务器,因此LNMP架构现在也很多见。但对于负载PHP的网站而言,Apache仍然是目前的首选产品。下面我们通过
实际部署两个开源网站项目了解LAMP的实际应用,两个开源项目均采用PHP代码编写,分别是Discuz!论坛系统及WordPress
博客系统。下图为网站架构图,通过基于域名的虚拟主机实现在一台Apache服务器上运行两个不同的网站品台,论坛域名为
bbs.example.com,博客域名为blog.example.com
论坛系统应用案例
Discuz!是目前国内应用最广泛的社区论坛建站平台,使用Discuz!可以实现一站式建站服务,Discuz!从2001年发布至今
,大量的应用案例证明额该系统的成熟度、稳定性及负载能力都是值得信赖的。另外,由于Discuz!采用的是PHP语言开发,
并且开放源代码,所以Discuz!也是PHP编程人员学习PHP的代码模板
部署Discuz!论坛所需环境:www服务器(如:Apache、Nginx等)、PHP软件包(版本要求在4.3.0以上)、MySQL数据库(
版本要求在3.23以上)。这里采用LAMP平台实现论坛系统的部署
1、下载软件包
wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.4.tar.gz
wget http://mirror.bjtu.edu.cn/apache/apr/apr-1.4.6.tar.gz
wget http://mirror.bjtu.edu.cn/apache/apr/apr-util-1.5.2.tar.gz
wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.11.tar.gz
wget http://cn2.php.net/get/php-5.4.14.tar.gz/from/this/mirror
2、部署AMP环境
将所有的源码包解压到特定目录
tar -zxvf httpd-2.4.4.tar.gz -C /usr/src/
tar -zxvf apr-1.4.6.tar.gz -C /usr/src/
tar -zxvf apr-util-1.5.2.tar.gz -C /usr/src/
tar -zxvf mysql-5.6.11.tar.gz -C /usr/src/
tar -zxvf php-5.4.14.tar.gz -C /usr/src/
安装依赖包
yum -y install gcc gcc-c++ autoconf automake make cmake pcre pcre-devel openssl openssl-devel \
>ncurses-devel libxml2-devel bison zlib-devel libtool-ltd1-devel libtool flex
安装Apache HTTP Server
cd /usr/src/apr-1.4.6/
./configure
make && make install
cd /usr/src/apr-util-1.5.2/
./configure --with-apr=/usr/local/apr/
make && make install
cd /usr/src/httpd-2.4.4/
./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl --enable-rewrite --with-mpm=worker --with-suexec-bin --with-apr=/usr/local/apr/
make && make install
安装MySQL
cd /usr/src/mysql-5.6.11/
groupadd mysql
useradd -r -s /sbin/nologin -g mysql mysql
cmake . -DENABLE_DOWNLOADS=1
make && make install
chown -R mysql.mysql /usr/local/mysql
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data
cp /usr/local/mysql/my.cnf /etc/my.cnf
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
service mysqld start
chkconfig --add mysqld
chkconfig mysqld on
echo "/usr/local/mysql/lib" >> /etc/ld.so.conf
ldconfig
Discuz是基于PHP的动态网站,很多数据都需要被保存在数据库中。因此我们需要在MySQL数据库中为论坛创建数据库,并创建数据库管理账户及密码
/usr/local/mysql/bin/mysql -uroot
mysql>create database bbs;
mysql>grant all on bbs.* to 'bbs_admin'@'localhost' identified by 'admin123';
mysql>flush privileges;
mysql>exit
安装PHP程序
cd /usr/src/php-5.4.14/
./configure --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql/ --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-sockets
make && make install
cp php.ini-development /usr/local/php5/lib/php.ini
修改Apache主配置文件httpd.conf以确保改文件中有如下两条指令,这两条指定的功能是加载模块并设置文件类型:
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php
测试(服务器生成PHP测试页面,客户端通过IP地址访问测试页面)
echo "<?php phpinfo();?>" > /usr/local/apache2/htdocs/index.php
firefox http://124.126.181.119/index.php
3、初始化论坛系统
首先,修改Apache主配置文件,通过DirectoryIndex index.php index.html指令设置默认首页为index.php,去除主配置文件Include conf/extra/httpd-vhosts.conf指令
前的#。Include指令将读取httpd-vhosts.conf文件的内容作为主配置文件的一部分
其次,修改虚拟主机配置文件httpd-vhosts.conf的内容
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
mkdir -p /usr/local/apache2/htdocs/bbs/logs
接下来从http://www.comsenz.com/downloads/install/discuz中下载Discuz!软件包,此处我们选择的版本为Discuz! X2.5,下载后解压将upload中的文件上传至bbs目录
mkdir /usr/src/discuz
unzip /root/Discuz_X2.5_SC_UTF8.zip -d /usr/src/discuz/
cp -r /usr/src/discuz/upload/* /usr/local/apache2/htdocs/bbs/
chmod -R 777 /usr/local/apache2/htdocs/bbs/{config/,data/}
chmod -R 777 /usr/local/apache2/htdocs/bbs/uc_client/data/cache/
chmod -R 777 /usr/local/apache2/htdocs/bbs/uc_server/data/
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
service iptables save
/usr/local/apache2/bin/apachectl restart
最后,客户端通过浏览器访问http:// bbs.example.com/install/,完成初始化操作,完成初始化操作后,将/usr/local/apache2/htdocs/bbs/install/index.php
删除,防止进行多次初始化操作。此时客户端通过浏览器访问论坛域名:http://bbs.example.com/,即可登录论坛首页,首次登录仅包含一个默认板块
4、论坛系统设置
论坛初始化完成后,没有具体板块内容,管理员可以登录后台进行一些全局、板块、内容、用户等设置。
博客系统应用案例
1、添加虚拟主机
修改虚拟主机配置文件httpd-vhosts.conf,添加博客虚拟主机站点
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
mkdir -p /usr/local/apache2/htdocs/blog/logs
/usr/local/apache2/bin/apachectl restart
2、下载WordPress并上传至Apache虚拟站点目录
wget http://cn.wordpress.org/wordpress-3.5.1-zh_CN.zip
unzip wordpress-3.5.1-zh_CN.zip -d /usr/src/
cp -r /usr/src/wordpress/* /usr/local/apache2/htdocs/blog/
chown -R daemon /usr/local/apache2/htdocs/blog
3、创建博客系统数据库及账户密码
/usr/local/mysql/bin/mysql -uroot -p
mysql>create database blog;
mysql>grant all on blog.* to 'blog_admin'@'localhost' identified by 'admin123';
mysql>exit
4、初始化博客系统
初始化过程比较简单,根据提示完成即可
5、后台管理
浏览博客首页,通过首页的登录链接可以进入后台管理界面