简介
LAMP,Web应用软件组合,是一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案。LAMP有多种组合实现方式,本文采用的组合方式是:
Linux + Apache + MariaDB + PHP
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的上架设属于自己的网站和博客。
实验实现简单LAMP
环境准备
准备三台虚拟机
A:系统是centos6.9,IP地址是192.168.1.6,充当的角色是LAP;
B:系统是centos6.9,IP地址是192.168.1.66,充当的角色是Mariadb数据库服务器;
C:系统是centos7.3,IP地址是192.168.1.7,充当的角色是客户端,主要是测试使用的。
准备源码包或二进制程序包
A上需要准备的包
[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上需要准备的包
[root@centos6 src]# ls
mariadb-5.5.57-linux-x86_64.tar.gz
确保两台机器上面的防火墙以及selinux处于关闭状态
实验过程
一、 在B上二进制安装mariadb
- 卸载系统自带的数据库
[root@centos6 src]# yum remove mysql-server
# 删除原有的mysql用户
[root@centos6 src]# userdel -r mysql
- 创建用户mysql,指定数据库文件存储路径
[root@centos6 src]# useradd -r -m -d /app/mysqldb -s /sbin/nologin mysql
- 解压二进制程序包,创建软链接
[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
- 创建数据库文件和指定数据库用户
[root@centos6 local]# cd mysql
[root@centos6 mysql]# scripts/mysql_install_db --datadir=/app/mysqldb --user=mysql
- 准备数据库配置文件
[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]下面加几行设置
# 指定数据库路径
datadir = /app/mysqldb
# 将每个表都存到一个独立文件中
innodb_file_per_table = ON
# 禁止主机名解析
skip_name_resolve = ON
- 准备服务脚本和日志文件
[root@centos6 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@centos6 mysql]# chkconfig --add mysqld
# 服务可由chkconfig来管理
[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环境变量
[root@centos6 mysql]# vim /etc/profile.d/mysql.sh
PATH=/usr/local/mysql/bin/:$PATH
[root@centos6 mysql]# . /etc/profile.d/mysql.sh
- 数据库初始化工作,创建wordpress使用的数据库,并进行相关授权
# 数据库安全初始化(设置数据库root用户口令是centos,删除匿名用户)
[root@centos6 mysql]# mysql_secure_installation
# 创建wpdb数据库,授权用户
[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测试连接B上的数据库,发现可以连接
[root@centos6 src]#mysql -uwpuser -pcentos -h192.168.1.66
二、 在A上源码编译安装httpd2.4
- 安装准备
# 卸载系统自带的httpd
[root@centos6 src]# yum remove httpd
# 安装开发包组以及相关开发包
[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
- 配置环境变量以及配置httpd相关设置,创建服务脚本,启动服务
[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身份运行(apache用户事先存在)
vim /app/httpd24/conf/httpd.conf
User apache
Group apache
# 把B机器上面的httpd服务脚本拷贝到A机器上
[root@centos6 ~]# scp /etc/init.d/httpd 192.168.1.6:/etc/init.d/httpd24
# 修改几项设置
[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是作为独立的进程,而不是作为httpd的一个模块。
- 安装相关开发包
[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
- 配置环境变量,设置php配置文件,创建服务脚本,启动服务
[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上配置连接数据库,在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 "连接数据库失败!";
$mysqli=null;
exit;
}
echo "连接数据库成功!";
$mysqli->close();
phpinfo();
?>
在C机器的浏览器地址栏输入192.168.1.6进行测试,效果图如下:
五、 在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项
define('DB_NAME', 'wpdb');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'centos');
define('DB_HOST', '192.168.1.66');
六、在C上访问博客平台以及进行性能测试
在C机器的浏览器地址栏输入192.168.1.6/blog,将会弹出下图界面。
设置站点标题,设置管理使用的用户名和密码,点击安装WordPress。安装完之后,点击登录,就可以设置自己喜爱的主题以及发布博客文章了。浏览器中输入192.168.1.6/blog可以查看自己的博客。
在C上面用ab命令进行性能测试。
[root@centos7 httpd]#ab -c 10 -n 100 http://192.168.1.6/blog/
...
Requests per second: 18.02 [#/sec] (mean)
...
七、 在A上编译xcache实现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上再次进行性能测试
[root@centos7 httpd]#ab -c 10 -n 100 http://192.168.1.6/blog/
...
Requests per second: 37.01 [#/sec] (mean)
...
发现性能已经有了较大的提升。
至此,LAMP的简单实现就介绍完了。这只是一个很基本的LAMP实现,主要是为了说明LAMP的大致实现方式,有很多不足之处,请多指点。
网友评论