编译安装LAMP-------动静分离

  动静分离能有效提升站点访问效率,此时apache工作在反向代理模式。Php不在作为apache的模块。而是以独立服务器的方式运行。两者之间通过fcgi机制建立通讯。本文将以安装discuz方式说明其工作特性。下图为其工作流程的简单描述:

首先apache监听主进程预先启动多个子进程,当用户请求到达时,主进程负责将请求接进来然后调用子进程处理请求,若为静态文件则直接有子进程进行I/O操作读取数据,处理请求,构建响应报文,并将结果交由监听主进程,主进程再将结果响应给客户端。若请求报文为动态的php页面,则子进程通过fcgi将请求交给php服务器。同样的机制,php调用子进程执行php程序(含有对数据库的读写等操作)php与数据库的通信与前者类似。等到数据处理完毕。Php子进程将处理结果交给主进程,主进程将结果送给httpd子进程,httpd子进程再将处理结果交给 监听主进程 最终将结果 响应给客户端。

   以下为实验拓扑图:

编译安装httpd服务器,这里采用httpd-2.4并使用event工作模型

首先源代码编译安装aprapache可移植运行时环境) apr-util 采用1.5的版本

apr的编译选项:

./configure --prefix=/usr/local/apr-1.5Make && make installApr-util的编译选项:./configure --prefix=/usr/local/apr-util-1.5 --with-apr=/usr/local/apr-1.5Make && make install

接下来就可以编译httpd

httpd的编译选项:

 ./configure   --prefix=/usr/local/apache   --sysconfdir=/etc/httpd   --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编译安装:Make &&  make  install

编辑配置文件:

主配置文件

Vim /etc/httpd/http.conf

注释掉DocumentRoot我们将以虚拟主机的形式实现

Event工作场景模块 启用

添加编码方法

启用虚拟主机

编辑虚拟主机配置文件:

开启当前虚拟主机的php代理

创建/www/hefeng 目录

 

解压Discuz压缩文件放入此目录中并赋予777权限

至此httpd服务器配置完毕

 

 

Php服务器配置

这里采用php5.4

 

编译选项配置

 

./configure   --prefix=/usr/local/php5   --with-mysql=mysqlnd   --with-openssl   --with-mysqli=mysqlnd   --enable-mbstring   --with-freetype-dir=/usr/local/freetype - ---->  请自行编译安装   --with-jpeg-dir=/usr/local/jpeg  ----->  请自行编译安装   --with-png-dir=/usr/local/png   ----->  请自行编译安装   --with-zlib   --with-libxml-dir=/usr   --enable-xml   --enable-sockets   --enable-fpm   --with-mcrypt   --with-config-file-path=/etc   --with-config-file-scan-dir=/etc/php.d    --with-bz2编译安装:Make && make install后续配置 为php提供配置文件:cp php.ini-production /etc/php.ini 配置php-fpm php-fpm提供SysV init脚本,并将其添加至服务列表:cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpmchmod +x /etc/rc.d/init.d/php-fpmchkconfig --add php-fpmchkconfig php-fpm on php-fpm提供配置文件:cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf  编辑php-fpm的配置文件:vim /usr/local/php/etc/php-fpm.conf配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):pm.max_children = 50pm.start_servers = 5pm.min_spare_servers = 2pm.max_spare_servers = 8pid = /usr/local/php/var/run/php-fpm.pid

 

修改监听端口

修改为apache里设置的主机监听套接字

 

Mkdir -pv /www/hefeng/

 

Discuz解压的文件copy至此目录并给777权限

 

启动php-fpm查看监听端口 service php-fpm start

配置mariadbmydql的克隆版组织)数据库服务器:

这里以二进制包进行安装

 

 

tar xf mariadb-5.5.33-linux2.6-i686.tar.gz -C /usr/localcd /usr/local/ln -sv mariadb-5.5.33-linux2.6-i686  mysqlcd mysql  chown -R mysql:mysql  .scripts/mysql_install_db --user=mysql --datadir=/mydata/datachown -R root  . 为mysql提供主配置文件: cd /usr/local/mysqlcp support-files/my-large.cnf  /etc/my.cnf

 

 

另外还需要添加如下行指定mysql数据文件的存放位置:

datadir = /mydata/data

mysql提供sysv服务脚本:

 

cd /usr/local/mysql

cp support-files/mysql.server  /etc/rc.d/init.d/mysqld

chmod +x /etc/rc.d/init.d/mysqld

 

添加至服务列表:

chkconfig --add mysqld

 

启动mysqld service mysqld start

 

创建数据库和用户 用来安装Discuz

 

Create database discux;

Grant all on discux . * to  identified by hzm132;

Flush privileges;

 

开始安装 Discuz

 

环境检测:

全新安装:

数据库选项:

安装完成:

 

   再将安装后生成的文件copy一份至apache主机网站根目录 否则不现实静态文件(由于设计网站本身并不是读写分离架构的)

Scp -r /www/hefeng/upload 172.16.101.34:/www/hefeng/

完成测试:

至此整个过程结束