生产环境LAMP搭建 - 基于 fastcgi

生产环境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 [email protected]'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 [email protected]'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

原文地址:https://www.cnblogs.com/ddz-linux/p/10699449.html

时间: 2024-08-28 22:47:26

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

LAMP环境的搭建(fastcgi)+ xcache加速

LAMP环境的搭建(fastcgi) LAMP简介: LAMP指的Linux(操作系统).ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web 服务器. Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台

Kubernetes 生产环境安装部署 基于 Kubernetes v1.14.0 之 部署规划

1. 安装规划 1.1 部署节点说明 etcd集群规划 etcd 中心集群 192.168.2.247192.168.2.248192.168.2.249 etcd 事件集群 192.168.2.250192.168.2.251192.168.2.252 Kubernetes master节点集群规划 192.168.3.10192.168.3.11192.168.3.12192.168.3.13192.168.3.14 Kubernetes master vip 192.168.4.1192.

基于公有云的准生产环境的搭建

1,收益 准生产环境的意义 2,收集目前集群架构详细配置 2.1 域名使用情况 2.1.1  域名在app端的使用 2.1.2 app在程序中的使用情况 2.1.3 域名在tomat 中的使用情况 2.2 整理负载均衡的配置信息 2.3 整理web server 的详细配置信息 2.4 整理os级别的系统服务信息配置与相关服务配置详细信息 3, 对研发需求 3.1 域名使用情况梳理 3.2 现在数据库架构 3.3 项目部署文档 3.4 常见服务运维手册 4, 运维需求 4.1

生产环境下搭建 nagios+nconf+cacti+npc的整合

系统:CentOS6.5 内核版本系统:2.6.32-431.23.3.el6.x86_64 关闭iptables .selinux chkconfig iptables off 安装前的准备工作 yum install -y httpd-*  mysql-* php-*  net-snmp*  gcc glibc glibc-common gd gd-devel openssl* 一.nagios 环境的搭建 1.安装nagios useradd nagios tar zxf nagios-3

CentOS LAMP环境搭建(基于fastcgi)

所需安装包:httpd-2.4.10.tar.gz.mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz.php-5.4.34.tar.gz 1.安装httpd # yum install pcre-devel # tar xf apr-1.5.1.tar.gz # ./configure --prefix=/usr/local/apr # make # make install # tar xf apr-util-1.5.4.tar.gz # ./configur

正式环境数据迁移到测试环境及测试环境LAMP搭建

参照正式环境扩展模块来搭建测试环境,否则访问不了 PHP 代码 PDO.PDO_MYSQL.OPENSSL.SSL.CURL等扩展模块 正式环境 Windows Server 2008 R2 X64 Apache+MySQL+PHP+FTP服务 备份MySQL.PHP.APP数据 通过anv软件连接MySQL数据库备份 将 goshop数据库备份,格式为goshop.sql 通过Filezilla软件连接FTP服务,备份PHP及APP数据 正式环境数据备份好后,开始搭建测试环境,将数据上传至测试

CentOS开发环境LAMP搭建

CentOS开发环境搭建 -------------------------------------------------------------------------准备工作--------------------------------------------------------------------------------- 1.配置防火墙,开启80端口.3306端口 ->vim /etc/sysconfig/iptables #将以下两行配置,加到22端口的下面 -A INPU

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

#1 安装JDK java -version #2 下载SDK http://adt.android-studio.org/ 下载adt #3 配置sdk环境变量 打开终端,依次输入命令 vim .bash_profile 在文本中添加然后保存 export ANDROID_HOME=/Applications/eclipse/sdk export PATH=$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools 其中ANDROID_HOME

Hadoop生产环境的配置

生产环境的搭建 主机规划 这里我们使用5 台主机来配置Hadoop集群. djt11/192.168.3.11 djt17/192.168.3.12 djt13/192.168.3.13 djt14/192.168.3.14 djt15/192.168.3.15 namenode 是 是 否 否 否 datanode 否 否 是 是 是 resourcemanager 是 是 否 否 否 journalnode 是 是 是 是 是 zookeeper 是 是 是 是 是 Journalnode和