生产环境LAMP搭建 - 基于 fastcgi

由于在module模式,php只是已http的模块形式存在,无形中加重了http的服务负载,通常在企业架构中,使用fastcgi的模式,将所有的服务都设置为不同的独立服务,独立进程的形式存在,并部署在不同的设备上。是用的比较多的。

php 进程 默认使用9000端口

默认 php-fpm 只监听127.0.0.1 的 9000 端口

配置php的连接方式,有静态和动态两种模式

pm = static|dynamic

static:固定数量的子进程;pm.max_children

dynamic:子进程数量以动态模式管理

最大连接进程数,生产中可以加大

pm.max_children = 500

服务开启第时候开启多少个进程

pm.start_servers = 50

最小空闲进程

pm.min_spare_servers = 5

最大空闲进程

pm.max_spare_servers = 35

假设来了100个人访问,那么服务器一开始会开启50个进程,现在会再开启50个,这时候走了10个,还剩90个,他就会关闭5个进程,因为最小空间被设置为5个,至少还要保留5 个空闲进程

每个进程的最大用户请求数

pm.max_requests = 500

apache 需要在配置文件中,定义php的位置,否则不会把php的请求转发到php服务上

DirectoryIndex index.php
ProxyRequests Off
# fcgi后跟php服务绑定的IP和端口 ,和请求要转发的路径
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1

centos7 搭建 (同一台设备)

#安装环境
yum install httpd php-fpm php-mysql mariadb-server #配置 apache 转发 php
vim /etc/httpd/conf.d/fastcgi.conf
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1 #配置php 连接 mysql
vim index.php
<?php
$dsn='mysql:host=localhost;dbname=mysql';
$username='root';
$passwd='centos';
$dbh=new PDO($dsn,$username,$passwd);
var_dump($dbh);
?> systemctl restart httpd
systemctl start mariadb

centos7 搭建 (每个服务独立在不同的设备)

web 服务器 192.168.30.17

yum install httpd

vim /etc/httpd/conf.d/fastcgi.conf
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.30.27:9000/data/www/$1 注意:在HTTPD服务器上必须启用proxy_fcgi_module模块,充当PHP客户端
httpd –M |grep fcgi
cat /etc/httpd/conf.modules.d/00-proxy.conf systemctl start httpd

php 服务器 192.168.30.27

yum install php-fpm php-mysql

#修改绑定端口,让他绑定所有IP
vim /etc/php.fpm.d/www.conf
listen = 9000 #修改允许IP访问的选项
listen.allowed_clients mkdir -pv /data/www/ vim /data/www/index.php
填充php连接数据库语句 systemctl start php

mysql 服务器 192.168.30.37

yum install mariadb mariadb-server

systemctl start mariadb

#执行初始化脚本
mysql_ser_install #创建php使用的账户
grant all on *.* to phpuser@'192.168.30.%' identified by 'phppassword';
flush privileges;

在LAMP的基础上搭建 DiscuzX

# 解压到php服务器上
unzip Discuz_X3.2_SC_UTF8.zip cd upload
cp -r * /data/www/ setfacl -R -m u:apache:rwx /data/www/* #修改http的默认路径
vim /etc/http/conf/http.conf DocumentRoot "/data/www/" <Directory "/data/www">
Require all granted
</Directory> #修改php服务器的设置 ,搭建discuzX的话,把apache 和 php 放在同一台设备上 (待测试)
vim /etc/httpd/conf.d/fastcgi.conf
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/www/$1 第一次老王执行的时候,发现网页显示错误,只能显示文字,其他的东西显示不出来,他认为是传输问题 ,php无法处理静态页面,就改了这句话
ProxyPassMatch ^/(.*\.*)$ fcgi://127.0.0.1:9000/data/www/$1 后来发现是默认网站路径的问题,要修改默认网站的路径
vim /etc/httpd/conf/http.conf
#这边的路径要改成新的路径
DocumentRoot "/var/www/html/ 自己的真实解决方案!!!如果配置多个虚拟主机的话,直接注释到主配置文件中的
DocumentRoot "/var/www/html/!!!!!!
自己的真实解决方案!!!如果配置多个虚拟主机的话,直接注释到主配置文件中的
DocumentRoot "/var/www/html/!!!!!!
自己的真实解决方案!!!如果配置多个虚拟主机的话,直接注释到主配置文件中的
DocumentRoot "/var/www/html/!!!!!! 执行install/index.php 初始化 初始化完成后,回收acl权限
setfacl -R -b /data/www/*

实现虚拟主机,在同一台设备上搭建wordpress 和 DiscuzX

#虚拟主机设置
<virtualhost *:80>
servername www.bbs.com
documentroot /data/www
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/www/$1
<directory /data/www>
require all granted
</directory>
</virtualhost> <virtualhost *:80>
servername www.blog.com
documentroot /data/www2
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/www2/$1
<directory /data/www2>
require all granted
</directory>
</virtualhost>

源码编译实现LAMP 并且基于Fastcgi模型

准备3台设备:

apache : 192.168.30.7

php: 192.168.30.17

mysql / mariadb : 192.168.30.27

编译顺序:通常是 apache > mysql > php

准备安装包

http
httpd-2.4.33.tar.bz2
apr-1.6.3.tar.gz
apr-util-1.6.1.tar.gz mysql
mariadb-10.2.15-linux-x86_64.tar.gz php
php-7.1.18.tar.bz2 blog
wordpress-4.9.4-zh_cn.tar.gz #安装编译包组
yum groupinstall Development #创建账户,用于未来apache和php使用
groupadd -r -g 80 apache
useradd -r -s /sbin/nologin -g 80 -u 80 apache

编译apache


#安装apache依赖包
yum install pcre-devel openssl-devel expat-devel tar xvf httpd-2.4.33.tar.bz2
tar xvf apr-1.6.3.tar.gz
tar xvf apr-util-1.6.1.tar.gz mv apr-1.6.3 httpd-2.4.33/srclib/apr
mv apr-util-1.6.1 httpd-2.4.33/srclib/apr-util cd httpd-2.4.33 ./configure --prefix=/app/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-included-apr \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork make -j 4 && make install echo PATH=/app/httpd24/bin:$PATH > /etc/profile.d/lamp.sh
. /etc/profile.d/lamp.sh #设置服务使用apache账户密码
vim /app/http.conf #启动服务
apachectl

二进制安装mysql

tar xvf mariadb-10.2.15-linux-x86_64.tar.gz -C /usr/local

cd /usr/local
ln -s mariadb-10.2.15-linux-x86_64/ mysql useradd -r mysql -s /sbin/nologin chown -R mysql.mysql mysql mkdir /data/mysqldb -pv chown mysql.mysql /data/mysql/ vim /etc/profile.d/lamp.sh
PATH=/usr/local/mysql/bin:/app/httpd24/bin:$PATH > /etc/profile.d/lamp.sh . /etc/profile.d/lamp.sh cd /usr/local/mysql/
./scripts/mysql_install_db --datadir=/data/mysqldb --user=mysql cp support-files/my-huge.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld vim /etc/my.cnf
datadir=/data/mysqldb
innodb_file_per_table
log_bin chkconfig --add mysqld
service mysqld start create database wpdb;
grant all on wpdb.* to wpuser@'192.168.30.%' identified by 'centos';
flush privileges;

编译php 7.1.7 基于 fastcgi 模式

php编译后需要自己准备ini 配置文件

#安装php依赖包
yum install libxml2-devel bzip2-devel libmcrypt-devel (epel) tar xvf php-7.1.7.tar.bz2
cd php-7.1.7/ #设置编译项
./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 \
--enable-fpm \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--enable-maintainer-zts \
--disable-fileinfo make -j 4 && make install --enable-fpm \ 表示以 fastcgi模式来编译安装 vim /etc/profile.d/lamp.sh
PATH=/app/php/bin:/usr/local/mysql/bin:/app/httpd24/bin:$PATH > /etc/profile.d/lamp.sh . /etc/profile.d/lamp.sh #准备配置文件
cd /root/srcs/php-7.1.18/
cp php.ini-production /etc/php.ini #准备启动脚本
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on cd /app/php/etc
cp php-fpm.conf.default php-fpm.conf
cp php-fpm.d/www.conf.default php-fpm.d/www.conf #设置服务使用apache账户密码
vim /app/etc/php-fpm.d/www.conf service php-fpm start

编辑apache 配置 使其支持 php


vim /app/httpd24/conf/httpd.conf
取消下面两行的注释 激活fcgi模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
修改下面行
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule> 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

生产环境LAMP搭建 - 基于 fastcgi的更多相关文章

  1. AD域环境的搭建 基于Server 2008 R2

    AD(Active Directory)即活动目录,微软的基础件.微软的很多产品如:Exchange Server,Lync Server,SharePoint Server,Forefront Se ...

  2. (转)centos 7 Tomcat 8.5 的安装及生产环境的搭建调优

    原文:https://www.cnblogs.com/linhankbl/articles/9149804.html#top JVM菜鸟进阶高手之路七(tomcat调优以及tomcat7.8性能对比) ...

  3. CentOS开发环境LAMP搭建

    CentOS开发环境搭建 -------------------------------------------------------------------------准备工作---------- ...

  4. Ubuntu16.04环境下搭建基于三台主机的mysql galera cluster集群(实测有效)

    (注意: (1)文中红色字体部分不一定需要操作 (2)由于word文档编辑的原因,实际操作时部分命令需要手动输入!!直接复制粘贴会提示错误!! ) 一  搭建环境: 1 Ubuntu16.04版本(系 ...

  5. linux应用之php开发环境lamp搭建(centos)

    搭建linux+apache+mysql+php环境   1.安装apache: yum install httpd httpd-devel  启动apache: /etc/init.d/httpd ...

  6. Mac OS下PHP开发环境的搭建——基于XAMPP和IntelliJ IDEA

    简单记录一下在MacOS下,搭建PHP的开发环境吧.其实,从本质上来说,Mac对于PHP的支持还是很好的,默认带了PHP和Apache,但是由于前期对系统本身不熟悉,所以还是略微走了一些弯路--也就是 ...

  7. MAC OS环境下搭建基于Python语言的appium自动化测试环境

    #1 安装JDK java -version #2 下载SDK http://adt.android-studio.org/ 下载adt #3 配置sdk环境变量 打开终端,依次输入命令 vim .b ...

  8. 生产环境下搭建mongodb复制集高可用环境(python)

    环境描述:有三台ubuntu服务器,,每台服务器上已经有mongodb实例.创建3个mongo2.4的新实例,分别作为三个复制集节点,同时保证了当前单节点环境的稳定 3台服务器都已经有单个mongo实 ...

  9. 在nginx环境下搭建基于ssl证书的websocket服务转发,wss

    1.证书准备 本地调试,可以安装自签名证书,安装方法参考https本地自签名证书添加到信任证书访问 2.修改配置文件 将上面的配置文件拷贝到conf目录,添加或者修改节点如下 # HTTPS serv ...

随机推荐

  1. 【转】grunt动态生成文件名

    动态生成文件名 expand 设置为true打开以下选项 cwd 所有src指定的文件相对于这个属性指定的路径 src 要匹配的路径,相对与cwd dest 生成的目标路径前缀 ext 替换所有生成的 ...

  2. placeholder-shown

    一般我们常见placeholder伪类选择器用来修改默认样式及文案,忽然发现placeholder-shown伪类选择器,比较官方的解释是 CSS伪类表示任何显示占位符文本的form元素. 简单来说就 ...

  3. 记录下laravel 5.2的auth/logout路由工作不正常的问题

  4. Java 编码规范有感

    应小组要求,开发测试都需要考阿里编码规范,因此,相当于是突击了一下关于编码规范方面的知识,目前做的项目后期需要进行项目迁移,数据迁移,功能迁移... 各种迁移... 阿里巴巴编码规范(Java)考试地 ...

  5. hibernate课程 初探单表映射1-5 hibernate第一个demo

    hibernate 开发步骤:(hibernate4.2+mysql6.0) 1 hibernate配置文件(hibernate.cfg.xml) 2 持久化类 3 对象-关系映射文件 4 hiber ...

  6. vue使用element-ui实现按需引入

    基于Vue的Ui框架 饿了么公司基于vue开的的vue的Ui组件库 Element Ui 基于vue pc端的UI框架 MintUi 基于vue 移动端的ui框架 http://element.ele ...

  7. mathtype 章节号 Equation Chapter 1 Section 1 的去除

    mathtype 章节号 Equation Chapter 1 Section 1 的去除 转:http://hi.baidu.com/17ximm/blog/item/2882413e92fc96c ...

  8. Linux命令行环境与桌面环境护切换

    1.前言 在大部分情况下,我们在使用Linux时习惯使用命令行环境,但是有时候也还是会使用到安装桌面环境,所以在这里介绍一下如何给没有安装桌面环境的系统安装桌面环境.以Centos 6.5 为例演示一 ...

  9. 《译》准备做一些 AR/增强现实的 翻译

    中文这方面资料实在少之又少. 准备做一些这方面翻译,关注于Vuforia, Unity3d, Hololens等方面. 如有问题.建议,随时联系.Fell free ton contact me.

  10. JeeSite 工作流Activiti的应用实例

    新建流程模型 在线办公-流程管理-模型管理-新建模型  点击“提交”后会立即跳转到“流程在线设计器”页面,请看下一章节 在线流程设计器 在线办公流程管理模型管理模型管理编辑 整体流程图 mat ...