内容:php
第一部分:编译安装LAMP(php以模块的方式工做)html
第二部分:编译安装LAMP(php以fpm的方式工做)前端
第一部分:mysql
前面介绍咱们知道,linux
apache + php结合的方式大概几种:web
第一种:把php编译时直接编译成apache的模块、module模块化的方式进行工做sql
第二种:CGI、通用网关接口、apache基于CGI跟hph通讯数据库
第三种:fastcgi方式,他也是一种协议,在这种模块下他们两个是这样结合的:apache
原本php是作为一个模块或都是php解析器运行的,不是监听在某个套接字上接收别人的请求的,而是让别人调用为一个进程使用的,多是作为别人的子进程在运行,可是工做在fastcgi这种模块下的hph自行启用为一个服务进程,vim
他监听在某个套接字上,随时能够接受来自客户端的请求的,他也是有一个主进程的,为了能够响应多个用户的请求,他会启用多个子进程,这些子进程咱们也能够称为工做进程,
他也是有空闲进程的,一但有客户请求他立刻使用空闲的进程响应客户端的请求,将结果返回给前端的调用者,在php5.3.3版本以前他是没有这个能力了,只能工做在模块和CGI的方式下,而在5.3.3以后这个模块直接被收进php模块中,这种模块就叫php-fpm。
因此在之后编译php时,要想跟apache结合,就要编译成php-fpm,这是基于fastcgi工做的模式,并启动这服务进程,也就意味着他是经过套接字跟前端的调用者通讯,既然基于套按字通讯了,那么前端的web服务器和后面的php服务器彻底能够工做在不一样的主机上,实现了所谓的分层机制。
apache不会跟数据库打交道,他是个静态web服务器,跟数据库打交道的是应用程序,做为应用程序的源驱动可以基于某个API跟服务器之间创建会话,然后他会经过咱们的mysql语句发送给数据库,数据库再将结果返回给应用程序,不是php进程,而是php进程中所执行的代码。
编译安装LAMP
一、准备干净的操做系统,而且编译环境准备
二、相关的编译源码包准备
三、选择编译安装的版本(centos6.8+httpd2.4.10+mariadb5.5.46+php5.6.4)
四、编译安装以及测试LAMP
一、编译安装的环境准备:
# yum groupinstall "Development Tools" "Server Platform Development" -y
二、准备相关的源码包:
下载地址:
apache编译相关
apr="http://mirrors.aliyun.com/apache/apr/apr-1.5.2.tar.bz2"
aprutil="http://mirrors.aliyun.com/apache/apr/apr-util-1.5.4.tar.bz2"
HTTPD="http://mirrors.aliyun.com/apache/httpd/httpd-2.4.23.tar.gz"
PHP编译相关:
PHP="http://mirrors.sohu.com/php/php-5.4.28.tar.gz"
libmytRPM="http://mirrors.aliyun.com/epel/6/x86_64/libmcrypt-2.5.8-9.el6.x86_64.rpm"
libdelRPM="http://mirrors.aliyun.com/epel/6/x86_64/libmcrypt-devel-2.5.8-9.el6.x86_64.rpm"
mariadb编译相关:
MYSQL="http://cdn.mysql.com//archives/mysql-5.5/mysql-5.5.41-linux2.6-x86_64.tar.gz"
这里操做的编译安装顺序:apache--mariadb--PHP
1、编译安装apache
一、解决依赖关系
httpd-2.4.10须要较新版本的apr和apr-util,所以须要事先对其进行升级。apr能够理解是中间的转换器,是的apache能运行在windows、linux、MAC等多平台上,升级方式有两种,一种是经过源代码编译安装,一种是直接升级rpm包。
(1) 编译安装apr
# tar xf apr-1.5.2.tar.bz2
# cd apr-1.5.2
# ./configure --prefix=/usr/local/apr
# make && make install
(2) 编译安装apr-util
# tar xf apr-util-1.5.4.tar.bz2
# cd apr-util-1.5.4
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make && make install
(3) httpd-2.4.10编译过程也要依赖于pcre-devel软件包,须要事先安装。此软件包系统光盘自带,所以,找到并安装便可。
# yum install pcre-devel -y
二、编译安装httpd-2.4.10
# tar xf httpd-2.4.10.tar.bz2
# cd httpd-2.4.10
# ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork --with-pcre --with-zlib --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/
# make && make install
三、启动httpd:
[root@localhost php-5.6.4]# echo "export PATH=/usr/local/apache2/bin:$PATH" > /etc/profile.d/httpd.sh [root@localhost php-5.6.4]# source /etc/profile.d/httpd.sh
2、安装mariadb-5.5.46
一、mysql的安装有三种方式:
rpm包安装
二进制的通用包安装
源码的编译安装
这里演示的是二进制的通用包安装,注意:二进制的通用包和源码包命名是有区别的,千万不要混淆,二进制包通常带有linux字样,如mariadb-5.5.46-linux-x86_64.tar.gz是二进制包,而mariadb-5.5.46.tar.gz则是源码包!
这里演示把数据库文件存放在一个目录中
这里假设挂载目录为/mydata,然后须要建立/mydata/data目录作为mysql数据的存放目录。
二、新建用户以安全方式运行进程:
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin
# mkdir -pv /mydata/data
# chown -R mysql:mysql /mydata/data
三、安装并初始化mysql-5.5.46
# tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local
# cd /usr/local/
# ln -sv mariadb-5.5.46-linux-x86_64 mysql
# cd mysql
# chown -R mysql:mysql .
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
四、为mysql提供主配置文件:
# cd /usr/local/mysql
# cp support-files/my-large.cnf /etc/my.cnf
修改配置:
thread_concurrency = 2 #并修改此文件中thread_concurrency的值为你的CPU个数乘以2
datadir = /mydata/data #须要添加以下行指定mysql数据文件的存放位置
五、为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 # chkconfig mysqld on
然后就能够启动服务测试使用了。
为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还须要进行以下步骤:
六、输出mysql的man手册至man命令的查找路径:
编辑/etc/man.config,添加以下行便可:
MANPATH /usr/local/mysql/man
七、输出mysql的头文件至系统头文件路径/usr/include:
这能够经过简单的建立连接实现:
# ln -sv /usr/local/mysql/include /usr/include/mysql
八、输出mysql的库文件给系统库查找路径:
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
然后让系统从新载入系统库:
# ldconfig
九、修改PATH环境变量,让系统能够直接使用mysql的相关命令。
#vim /etc/profile.d/mysql.sh export PATH=/usr/local/mysql/bin:$PATH source /etc/profile.d/mysql.sh
3、编译安装php-5.6.4
一、解决依赖关系:
若是想让编译的php支持mcrypt扩展,须要安装两个rpm包:
# rpm -ivh libmcrypt-2.5.8-9.el6.x86_64.rpm # rpm -ivh libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
二、编译安装php-5.6.4
# yum install -y libxml2-devel
# tar xf php-5.6.4.tar.xz
# cd php-5.6.4
#./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --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/apache2/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-maintainer-zts
# make
# make intall
注意:若是httpd使用线程模型MPM,须要额外的--enable-maintainer-zts选项;
注意:若是要以fpm方式运行php,须要编译时移除--with-apxs选项,额外添加--enable-fpm选项;
为php提供配置文件(位于解压的源码包目录):
# cp php.ini-production /etc/php.ini
三、 编辑apache配置文件httpd.conf,以apache支持php
# vim /etc/httpd/httpd.conf
添加以下二行
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
定位至DirectoryIndex index.html
修改成:
DirectoryIndex index.php index.html
然后从新启动httpd,或让其从新载入配置文件便可测试php是否已经能够正常使用。
四、这里安装phpMyAdmin进行测试验证:
一、解压phpMyAdmin-4.4.14.1-all-languages.zip
二、讲phpMyAdmin-4.4.14.1-all-languages移至web站点的根目录,并命名为pma目录:/usr/local/apache2/htdocs/pma
三、进入pma目录,启用默认到配置文件
cp libraries/config.default.php config.inc.php
四、编辑该配置文件,设置相应的数据库账号和密码
五、测试打开该目录的web站点,只要能登陆上数据库,说明,A+M+P已经结合工做成功。
测试正常,至此,LAMP已经编译成功,并能工做。
第二部分、编译安装LAMP(php以fpm的方式工做)
1、编译安装LAMP
一、编译安装:
和前面的步骤同样,只不过在编译安装PHP时,移除--with-apxs选项,额外添加--enable-fpm选项;
#./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-maintainer-zts --enable-fpm
二、为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-fpm
# chmod +x /etc/rc.d/init.d/php-fpm
# chkconfig --add php-fpm
# chkconfig 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文件(以下最后一行):
pid = /usr/local/php/var/run/php-fpm.pid
六、接下来就能够启动php-fpm了:
# service php-fpm start
使用以下命令来验正(若是此命令输出有中几个php-fpm进程就说明启动成功了):
[root@localhost fpm]# ss -tanl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 50 *:3306 *:* LISTEN 0 32 *:21 *:* LISTEN 0 128 :::22 :::* LISTEN 0 128 *:22 *:* LISTEN 0 100 ::1:25 :::* LISTEN 0 100 127.0.0.1:25 *:* [root@localhost fpm]# service php-fpm start Starting php-fpm done [root@localhost fpm]# ss -tanl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 127.0.0.1:9000 *:* LISTEN 0 50 *:3306 *:* LISTEN 0 32 *:21 *:* LISTEN 0 128 :::22 :::* LISTEN 0 128 *:22 *:* LISTEN 0 100 ::1:25 :::* LISTEN 0 100 127.0.0.1:25 *:* [root@localhost fpm]#
默认状况下,fpm监听在127.0.0.1的9000端口,也可使用以下命令验正其是否已经监听在相应的套接字。
2、配置httpd
一、启用httpd的相关模块
在Apache httpd 2.4之后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它实际上是做为mod_proxy.so模块的扩充,所以,这两个模块都要加载
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
同时把libphp5.so的模块注释
#LoadModule php5_module modules/libphp5.so
二、配置中心主机支持使用fcgi(也能够配置虚拟主机,配置差很少,这里就不演示了)
在相应的虚拟主机中添加相似以下两行。
ProxyRequests Off #关闭正向代理 ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache2/htdocs/$1 #把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少须要知道运行的目录和URI,因此这里直接在fcgi://127.0.0.1:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不须要手动指定。
三、编辑apache配置文件httpd.conf,让apache能识别php格式的页面,并支持php格式的主页
# vim /etc/httpd/httpd.conf AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
定位至DirectoryIndex index.html
修改成:
DirectoryIndex index.php index.html
测试成功,已经能访问php页面
3、测试phpMyAdmin:
这里再次安装phpMyAdmin进行测试验证:
一、解压phpMyAdmin-4.4.14.1-all-languages.zip
二、将phpMyAdmin-4.4.14.1-all-languages移至web站点的根目录,并命名为pma目录:/usr/local/apache2/htdocs/pma
三、进入pma目录,启用默认到配置文件
cp libraries/config.default.php config.inc.php
四、编辑该配置文件,设置相应的数据库账号和密码
$cfg['Servers'][$i]['user'] = 'nihao'; $cfg['Servers'][$i]['password'] = '123456';
五、测试打开该目录的web站点,只要能登陆上数据库,说明,A+M+P已经结合工做成功。
测试正常,至此,LAMP已经编译成功,并能工做。
OK,更多文章请关注个人博客。