设为首页 收藏本站
查看: 726|回复: 0

[经验分享] 编译安装LAMP(php

[复制链接]

尚未签到

发表于 2018-12-15 11:21:30 | 显示全部楼层 |阅读模式
  内容:
  第一部分:编译安装LAMP(php以模块的方式工作)
  第二部分:编译安装LAMP(php以fpm的方式工作)
  

  

  第一部分:
          前面介绍我们知道,
      apache + php结合的方式大概几种:
      第一种:把php编译时直接编译成apache的模块、module模块化的方式进行工作
      第二种:CGI、通用网关接口、apache基于CGI跟hph通信
      第三种:fastcgi方式,他也是一种协议,在这种模块下他们两个是这样结合的:
          本来php是做为一个模块或都是php解析器运行的,不是监听在某个套接字上接收别人的请求的,而是让别人调用为一个进程使用的,可能是做为别人的子进程在运行,但是工作在fastcgi这种模块下的hph自行启用为一个服务进程
          他监听在某个套接字上,随时可以接受来自客户端的请求的,他也是有一个主进程的,为了可以响应多个用户的请求,他会启用多个子进程,这些子进程我们也可以称为工作进程,
          他也是有空闲进程的,一但有客户请求他马上使用空闲的进程响应客户端的请求,将结果返回给前端的调用者,在php5.3.3版本之前他是没有这个能力了,只能工作在模块和CGI的方式下,而在5.3.3之后这个模块直接被收进php模块中,这种模块就叫php-fpm。
  
          所以在以后编译php时,要想跟apache结合,就要编译成php-fpm,这是基于fastcgi工作的模式,并启动这服务进程,也就意味着他是通过套接字跟前端的调用者通信,既然基于套按字通信了,那么前端的web服务器和后面的php服务器完全可以工作在不同的主机上,实现了所谓的分层机制。
          apache不会跟数据库打交道,他是个静态web服务器,跟数据库打交道的是应用程序,作为应用程序的源驱动能够基于某个API跟服务器之间建立会话,而后他会通过我们的mysql语句发送给数据库,数据库再将结果返回给应用程序,不是php进程,而是php进程中所执行的代码。
  

  

  
  编译安装LAMP
      1、准备干净的操作系统,并且编译环境准备
      2、相关的编译源码包准备
      3、选择编译安装的版本(centos6.8+httpd2.4.10+mariadb5.5.46+php5.6.4)
      4、编译安装以及测试LAMP
  

      1、编译安装的环境准备:
# yum groupinstall "Development Tools" "Server Platform Development" -y      2、准备相关的源码包
      下载地址:
      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
  

  

  一、编译安装apache
  

  1、解决依赖关系
          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  

      2、编译安装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      3、启动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  

  二、安装mariadb-5.5.46
      1、mysql的安装有三种方式:
          rpm包安装
          二进制的通用包安装
          源码的编译安装
  这里演示的是二进制的通用包安装,注意:二进制的通用包和源码包命名是有区别的,千万不要混淆,二进制包一般带有linux字样,如mariadb-5.5.46-linux-x86_64.tar.gz是二进制包,而mariadb-5.5.46.tar.gz则是源码包!
          这里演示把数据库文件存放在一个目录中
          这里假设挂载目录为/mydata,而后需要创建/mydata/data目录做为mysql数据的存放目录。
      2、新建用户以安全方式运行进程:
# groupadd -r mysql# useradd -g mysql -r -s /sbin/nologin# mkdir -pv /mydata/data# chown -R mysql:mysql /mydata/data  

      3、安装并初始化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  

      4、为mysql提供主配置文件:
# cd /usr/local/mysql# cp support-files/my-large.cnf  /etc/my.cnf      修改配置:
thread_concurrency = 2 #并修改此文件中thread_concurrency的值为你的CPU个数乘以2datadir = /mydata/data #需要添加如下行指定mysql数据文件的存放位置  

      5、为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的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:
      6、输出mysql的man手册至man命令的查找路径:
  编辑/etc/man.config,添加如下行即可:
MANPATH  /usr/local/mysql/man      7、输出mysql的头文件至系统头文件路径/usr/include:
  这可以通过简单的创建链接实现:
# ln -sv /usr/local/mysql/include  /usr/include/mysql      8、输出mysql的库文件给系统库查找路径:
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf      而后让系统重新载入系统库:
# ldconfig      9、修改PATH环境变量,让系统可以直接使用mysql的相关命令。
#vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile.d/mysql.sh  

  三、编译安装php-5.6.4
  

      1、解决依赖关系:
      如果想让编译的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  

      2、编译安装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  

      3、 编辑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是否已经可以正常使用。
  

      4、这里安装phpMyAdmin进行测试验证:
          1、解压phpMyAdmin-4.4.14.1-all-languages.zip
          2、讲phpMyAdmin-4.4.14.1-all-languages移至web站点的根目录,并命名为pma目录:/usr/local/apache2/htdocs/pma
          3、进入pma目录,启用默认到配置文件
          cp libraries/config.default.php config.inc.php
          4、编辑该配置文件,设置相应的数据库帐号和密码
          5、测试打开该目录的web站点,只要能登录上数据库,说明,A+M+P已经结合工作成功。

  测试正常,至此,LAMP已经编译成功,并能工作。
  

  

  第二部分、编译安装LAMP(php以fpm的方式工作)
  一、编译安装LAMP
      1、编译安装:
          和前面的步骤一样,只不过在编译安装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  

          2、为php提供配置文件:
# cp php.ini-production /etc/php.ini  

          3、配置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  

          4、为php-fpm提供配置文件:
  # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
  

          5、编辑php-fpm的配置文件
# vim /usr/local/php/etc/php-fpm.conf  配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):
pid = /usr/local/php/var/run/php-fpm.pid  

          6、接下来就可以启动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端口,也可以使用如下命令验正其是否已经监听在相应的套接字。
  

  

  

  二、配置httpd
  1、启用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  

  2、配置中心主机支持使用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进行了封装,不需要手动指定。  

  3、编辑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页面

  三、测试phpMyAdmin:
          这里再次安装phpMyAdmin进行测试验证:
      1、解压phpMyAdmin-4.4.14.1-all-languages.zip
      2、将phpMyAdmin-4.4.14.1-all-languages移至web站点的根目录,并命名为pma目录:/usr/local/apache2/htdocs/pma
      3、进入pma目录,启用默认到配置文件
cp libraries/config.default.php config.inc.php      4、编辑该配置文件,设置相应的数据库帐号和密码
$cfg['Servers'][$i]['user'] = 'nihao';
$cfg['Servers'][$i]['password'] = '123456';      5、测试打开该目录的web站点,只要能登录上数据库,说明,A+M+P已经结合工作成功。
  

  测试正常,至此,LAMP已经编译成功,并能工作。

  

  

          OK,更多文章请关注我的博客




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-651646-1-1.html 上篇帖子: php日期转时间戳,指定日期转换成时间戳 下篇帖子: php 编译安装插件提示PHP Warning: PHP Startup: Unable to load dynamic library 报错
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表