簡(jiǎn)介
LAMP,Web應(yīng)用軟件組合,是一組常用來(lái)搭建動(dòng)態(tài)網(wǎng)站或者服務(wù)器的開源軟件罢防,本身都是各自獨(dú)立的程序,但是因?yàn)槌1环旁谝黄鹗褂冒χ叮瑩碛辛嗽絹?lái)越高的兼容度咒吐,共同組成了一個(gè)強(qiáng)大的Web應(yīng)用程序平臺(tái)。從網(wǎng)站的流量上來(lái)說(shuō)属划,70%以上的訪問(wèn)流量是LAMP來(lái)提供的恬叹,LAMP是最強(qiáng)大的網(wǎng)站解決方案。LAMP有多種組合實(shí)現(xiàn)方式榴嗅,本文采用的組合方式是:
Linux + Apache + MariaDB + PHP
WordPress是使用PHP語(yǔ)言開發(fā)的博客平臺(tái)妄呕,用戶可以在支持PHP和MySQL數(shù)據(jù)庫(kù)的上架設(shè)屬于自己的網(wǎng)站和博客。
實(shí)驗(yàn)實(shí)現(xiàn)簡(jiǎn)單LAMP
環(huán)境準(zhǔn)備
準(zhǔn)備三臺(tái)虛擬機(jī)
A:系統(tǒng)是centos6.9嗽测,IP地址是192.168.1.6绪励,充當(dāng)?shù)慕巧荓AP;
B:系統(tǒng)是centos6.9唠粥,IP地址是192.168.1.66疏魏,充當(dāng)?shù)慕巧荕ariadb數(shù)據(jù)庫(kù)服務(wù)器;
C:系統(tǒng)是centos7.3晤愧,IP地址是192.168.1.7大莫,充當(dāng)?shù)慕巧强蛻舳耍饕菧y(cè)試使用的官份。
準(zhǔn)備源碼包或二進(jìn)制程序包
A上需要準(zhǔn)備的包
[root@centos6 src]#ls
apr-1.6.2.tar.gz httpd-2.4.27.tar.bz2 wordpress-4.8.1-zh_CN.tar.gz
apr-util-1.6.0.tar.gz php-5.6.31.tar.xz xcache-3.2.0.tar.bz2
B上需要準(zhǔn)備的包
[root@centos6 src]# ls
mariadb-5.5.57-linux-x86_64.tar.gz
確保兩臺(tái)機(jī)器上面的防火墻以及selinux處于關(guān)閉狀態(tài)
實(shí)驗(yàn)過(guò)程
一只厘、 在B上二進(jìn)制安裝mariadb
- 卸載系統(tǒng)自帶的數(shù)據(jù)庫(kù)
[root@centos6 src]# yum remove mysql-server
# 刪除原有的mysql用戶
[root@centos6 src]# userdel -r mysql
- 創(chuàng)建用戶mysql烙丛,指定數(shù)據(jù)庫(kù)文件存儲(chǔ)路徑
[root@centos6 src]# useradd -r -m -d /app/mysqldb -s /sbin/nologin mysql
- 解壓二進(jìn)制程序包,創(chuàng)建軟鏈接
[root@centos6 src] tar xvf mariadb-5.5.57-linux-x86_64.tar.gz -C /usr/local/
[root@centos6 src]# cd /usr/local
[root@centos6 local]# ln -s mariadb-5.5.57-linux-x86_64/ mysql
- 創(chuàng)建數(shù)據(jù)庫(kù)文件和指定數(shù)據(jù)庫(kù)用戶
[root@centos6 local]# cd mysql
[root@centos6 mysql]# scripts/mysql_install_db --datadir=/app/mysqldb --user=mysql
- 準(zhǔn)備數(shù)據(jù)庫(kù)配置文件
[root@centos6 mysql]# mkdir /etc/mysql
[root@centos6 mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf
[root@centos6 mysql]# vim /etc/mysql/my.cnf
# 在/etc/mysql/my.cnf文件的[mysqld]下面加幾行設(shè)置
# 指定數(shù)據(jù)庫(kù)路徑
datadir = /app/mysqldb
# 將每個(gè)表都存到一個(gè)獨(dú)立文件中
innodb_file_per_table = ON
# 禁止主機(jī)名解析
skip_name_resolve = ON
- 準(zhǔn)備服務(wù)腳本和日志文件
[root@centos6 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@centos6 mysql]# chkconfig --add mysqld
# 服務(wù)可由chkconfig來(lái)管理
[root@centos6 mysql]# chkconfig --list
[root@centos6 mysql]# touch /var/log/mysqld.log
[root@centos6 mysql]# chown mysql /var/log/mysqld.log
[root@centos6 mysql]# service mysqld start
# 3306端口打開
[root@centos6 mysql]# ss -ntul
- 修改PATH環(huán)境變量
[root@centos6 mysql]# vim /etc/profile.d/mysql.sh
PATH=/usr/local/mysql/bin/:$PATH
[root@centos6 mysql]# . /etc/profile.d/mysql.sh
- 數(shù)據(jù)庫(kù)初始化工作羔味,創(chuàng)建wordpress使用的數(shù)據(jù)庫(kù)河咽,并進(jìn)行相關(guān)授權(quán)
# 數(shù)據(jù)庫(kù)安全初始化(設(shè)置數(shù)據(jù)庫(kù)root用戶口令是centos,刪除匿名用戶)
[root@centos6 mysql]# mysql_secure_installation
# 創(chuàng)建wpdb數(shù)據(jù)庫(kù)赋元,授權(quán)用戶
[root@centos6 mysql]# mysql -uroot -pcentos
mysql> create database wpdb;
mysql> grant all on wpdb.* to wpuser@'localhost' identified by 'centos';
mysql> grant all on wpdb.* to wpuser@'127.%' identified by 'centos';
mysql> grant all on wpdb.* to wpuser@'192.168.1.%' identified by 'centos';
# 在A測(cè)試連接B上的數(shù)據(jù)庫(kù)忘蟹,發(fā)現(xiàn)可以連接
[root@centos6 src]#mysql -uwpuser -pcentos -h192.168.1.66
二、 在A上源碼編譯安裝httpd2.4
- 安裝準(zhǔn)備
# 卸載系統(tǒng)自帶的httpd
[root@centos6 src]# yum remove httpd
# 安裝開發(fā)包組以及相關(guān)開發(fā)包
[root@centos6 src]# yum groupinstall "development tools"
[root@centos6 src]# yum install openssl-devel pcre-devel expat-devel
- 編譯安裝
[root@centos6 src]# tar xvf apr-1.6.2.tar.gz
[root@centos6 src]# tar xvf apr-util-1.6.0.tar.gz
[root@centos6 src]# tar xvf httpd-2.4.27.tar.bz2
[root@centos6 src]# cp -r apr-1.6.2 httpd-2.4.27/srclib/apr
[root@centos6 src]# cp -r apr-util-1.6.0 httpd-2.4.27/srclib/apr-util
[root@centos6 src]# cd httpd-2.4.27/
[root@centos6 httpd-2.4.27]# ./configure --prefix=/app/httpd24 --enable-so --enable-ssl --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
[root@centos6 httpd-2.4.27]# make -j 8 && make install
- 配置環(huán)境變量以及配置httpd相關(guān)設(shè)置搁凸,創(chuàng)建服務(wù)腳本媚值,啟動(dòng)服務(wù)
[root@centos6 httpd-2.4.27]#vim /etc/profile.d/lap.sh
PATH=/app/httpd24/bin/:$PATH
[root@centos6 httpd-2.4.27]#. /etc/profile.d/lap.sh
# 修改httpd以apache身份運(yùn)行(apache用戶事先存在)
vim /app/httpd24/conf/httpd.conf
User apache
Group apache
# 把B機(jī)器上面的httpd服務(wù)腳本拷貝到A機(jī)器上
[root@centos6 ~]# scp /etc/init.d/httpd 192.168.1.6:/etc/init.d/httpd24
# 修改幾項(xiàng)設(shè)置
[root@centos6 httpd-2.4.27]#vim /etc/init.d/httpd24
apachectl=/app/httpd24/bin/apachectl
httpd=${HTTPD-/app/httpd24/bin/httpd}
pidfile=${PIDFILE-/app/httpd24/logs/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
[root@centos6 httpd-2.4.27]#chkconfig --add httpd24
[root@centos6 httpd-2.4.27]#chkconfig --list httpd24
[root@centos6 httpd-2.4.27]#service httpd24 start
三、 在A上源碼編譯安裝php
此處編譯安裝的php是作為獨(dú)立的進(jìn)程护糖,而不是作為httpd的一個(gè)模塊褥芒。
- 安裝相關(guān)開發(fā)包
[root@centos6 src]#yum install libxml2-devel bzip2-devel libmcrypt-devel
- 編譯安裝php
[root@centos6 src]#tar xvf php-5.6.31.tar.xz
[root@centos6 src]#cd php-5.6.31
[root@centos6 php-5.6.31]#./configure \
> --prefix=/app/php \
> --enable-mysqlnd \
> --with-mysqli=mysqlnd \
> --with-openssl \
> --with-pdo-mysql=mysqlnd \
> --enable-mbstring \
> --with-freetype-dir \
> --with-jpeg-dir \
> --with-png-dir \
> --with-zlib \
> --with-libxml-dir=/usr \
> --enable-xml \
> --enable-sockets \
> --with-apxs2=/app/httpd24/bin/apxs \
> --enable-fpm \
> --with-mcrypt \
> --with-config-file-path=/etc/php \
> --with-config-file-scan-dir=/etc/php.d \
> --with-bz2
[root@centos6 php-5.6.31]#make -j 8 && make install
- 配置環(huán)境變量,設(shè)置php配置文件椅文,創(chuàng)建服務(wù)腳本喂很,啟動(dòng)服務(wù)
[root@centos6 php-5.6.31]#vim /etc/profile.d/lap.sh
PATH=/app/php/bin:/app/httpd24/bin/:$PATH
[root@centos6 php-5.6.31]#. /etc/profile.d/lap.sh
[root@centos6 php-5.6.31]#mkdir /etc/php/
[root@centos6 php-5.6.31]#cp php.ini-production /etc/php/php.ini
[root@centos6 php-5.6.31]#cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@centos6 php-5.6.31]#chmod +x /etc/init.d/php-fpm
[root@centos6 php-5.6.31]#chkconfig --add php-fpm
[root@centos6 php-5.6.31]#chkconfig --list php-fpm
[root@centos6 php-5.6.31]#cd /app/php/etc
[root@centos6 etc]#cp php-fpm.conf.default php-fpm.conf
[root@centos6 etc]#service php-fpm start
- 配置httpd
[root@centos6 httpd24]#vim /app/httpd24/conf/httpd.conf
# 取消下面兩行的注釋
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
# 在文件尾部加四行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1
# 修改下面行
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
[root@centos6 httpd24]#service httpd24 restart
四、 在A上配置連接數(shù)據(jù)庫(kù)皆刺,在C上測(cè)試
[root@centos6 htdocs]#vim /app/httpd24/htdocs/index.php
<html><body><h1>It works!</h1></body></html>
<?php
$mysqli=new mysqli("192.168.1.66","wpuser","centos");
if(mysqli_connect_errno()){
echo "連接數(shù)據(jù)庫(kù)失敗!";
$mysqli=null;
exit;
}
echo "連接數(shù)據(jù)庫(kù)成功!";
$mysqli->close();
phpinfo();
?>
在C機(jī)器的瀏覽器地址欄輸入192.168.1.6進(jìn)行測(cè)試少辣,效果圖如下:
五、 在A上配置wordpress
[root@centos6 src]#tar xvf wordpress-4.8.1-zh_CN.tar.gz -C /app/httpd24/htdocs
[root@centos6 src]#cd /app/httpd24/htdocs
[root@centos6 htdocs]#mv wordpress/ blog/
[root@centos6 htdocs]#cd /app/httpd24/htdocs/blog/
[root@centos6 blog]#cp wp-config-sample.php wp-config.php
[root@centos6 blog]#vim wp-config.php
# 配置下面4項(xiàng)
define('DB_NAME', 'wpdb');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'centos');
define('DB_HOST', '192.168.1.66');
六羡蛾、在C上訪問(wèn)博客平臺(tái)以及進(jìn)行性能測(cè)試
在C機(jī)器的瀏覽器地址欄輸入192.168.1.6/blog漓帅,將會(huì)彈出下圖界面。
設(shè)置站點(diǎn)標(biāo)題痴怨,設(shè)置管理使用的用戶名和密碼忙干,點(diǎn)擊安裝WordPress。安裝完之后浪藻,點(diǎn)擊登錄捐迫,就可以設(shè)置自己喜愛的主題以及發(fā)布博客文章了。瀏覽器中輸入192.168.1.6/blog可以查看自己的博客爱葵。
在C上面用ab命令進(jìn)行性能測(cè)試施戴。
[root@centos7 httpd]#ab -c 10 -n 100 http://192.168.1.6/blog/
...
Requests per second: 18.02 [#/sec] (mean)
...
七、 在A上編譯xcache實(shí)現(xiàn)Php加速
[root@centos6 src]#tar xvf xcache-3.2.0.tar.bz2
[root@centos6 src]#cd xcache-3.2.0
# 生成configure文件
[root@centos6 xcache-3.2.0]#phpize
[root@centos6 xcache-3.2.0]#./configure --enable-xcache --with-php-config=/app/php/bin/php-config
[root@centos6 xcache-3.2.0]#make -j 8 && make install
[root@centos6 xcache-3.2.0]#mkdir /etc/php.d/
[root@centos6 xcache-3.2.0]#cp xcache.ini /etc/php.d/
[root@centos6 xcache-3.2.0]#vim /etc/php.d/xcache.ini
extension = /app/php/lib/php/extensions/no-debug-non-zts-20131226/xcache.so
[root@centos6 xcache-3.2.0]#service php-fpm restart
八萌丈、 在C上再次進(jìn)行性能測(cè)試
[root@centos7 httpd]#ab -c 10 -n 100 http://192.168.1.6/blog/
...
Requests per second: 37.01 [#/sec] (mean)
...
發(fā)現(xiàn)性能已經(jīng)有了較大的提升赞哗。
至此,LAMP的簡(jiǎn)單實(shí)現(xiàn)就介紹完了辆雾。這只是一個(gè)很基本的LAMP實(shí)現(xiàn)肪笋,主要是為了說(shuō)明LAMP的大致實(shí)現(xiàn)方式,有很多不足之處,請(qǐng)多指點(diǎn)藤乙。