都说php简单,那是别人帮你配置好。真正在 linux 部署php并且高效运转起来,有些多年php开发经验的人也是搞不定的。因为涉及的知识点并不少。(windows 开发环境 不在本文谈论中哈[微笑])写下此文,帮助自己总结,希望也能帮助刚入门的运维小白。
以此来列出背景知识 本文基于Centos 7操作系统( fedora , RedHat 及类似系统)
一、背景知识
- yum
- rpm
- wget
- ln
- vim
- systemctl
- .bash_pro File
- Red Hat Enterprise Linux 7 缩写 rhel_7 ([捂脸])
- Extra Packages for Enterprise Linux (or EPEL)
Linux的 yum
yum( Yellow dog Updater, Modified) 大黄狗,哈哈。是一个在 Fedora 和 RedHat 以及 SUSE 中的 shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包然后安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
如 CentOS 系统内置的yum源中,没有想要的安装包。可额外添加yum源。 比较常用yum源,epel 和 remi 。
添加yum源,都会在/etc/yum.repos.d/文件夹中添加有相应的 .repo 文件
1、安装 EPEL 源。
yum install epel-release
epel-release这一软件包被包括在 CentOS 的 Extras 仓库中,安装后EPEL源已默认启用epel仓库。
哈哈,我也是搬过来的
fedoraproject.org/wiki/EPEL/zh-cn
什么是企业版 Linux 附加软件包(EPEL)
企业版 Linux 附加软件包(以下简称 EPEL)是一个 Fedora 特别兴趣小组,用以创建、维护以及管理针对企业版 Linux 的一个高质量附加软件包集,面向的对象包括但不限于 红帽 企业版 Linux (RHEL)、 CentOS、 Scientific Linux (SL)、 Oracle Linux (OL) 。
EPEL 的软件包通常不会与企业版 Linux 官方源中的软件包发生冲突,或者互相替换文件。EPEL 项目与 Fedora 基本一致,包含完整的构建系统、升级管理器、镜像管理器等等。
我可以信赖这些软件包吗?
EPEL 项目致力于提供优质和稳定的软件包服务。然而,EPEL 是由志愿者所维护的,并且不提供任何商业支持。这种项目的实质就是,软件包会随着单个版本的进程加入和退出 EPEL 仓库。此外,有可能偶尔一些不兼容的升级发布后需要管理员的操作。根据政策将会提前通知给予管理员足够的时间去测试和提供建议。
安装remi 源
CentOS 7 :
wget HTTPS ://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm
安装remi 源 以后,已默认启用 remi-safe 仓库
也可自行开启remi仓库。
vim /etc/yum.repos.d/remi.repo
将其中 [remi] 下的enabled=0改为enabled=1,保存退出。
都说 : remi源有很多版本的PHP 。哈哈
blog.remirepo.net/post/2017/02/23/Additional-PHP-packages-for-RHSCL
什么是 SCLO? 什么是 SCLO RH?
前缀“rh-”用于在 Red Hat Software Collections 产品中提供的 Red Hat 集合;如果是由社区创建的集合就是 “sclo-”,。
我看有的把 Software Collections 缩写成了 SCL有的是 sclo。请大牛指点
yum 语法
yum repolist all
//显示所有仓库
yum repolist enabled
//显示可用的仓库
yum install package_name
// 下载并安装一个rpm包
yum update package_name 更新一个rpm包
yum remove package_name 删除一个rpm包
yum search package_name 在rpm仓库中搜寻软件包
yum info package_name 查看安装包的信息
yum localinstall package_name.rpm 将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系
yum update package_name.rpm 更新当前系统中所有安装的rpm包
yum list 列出当前系统中安装的所有包
yum clean packages 清理rpm缓存删除下载的包
yum clean headers 删除所有头文件
yum clean all 删除所有缓存的包和头文件
~]# yum check-update
加载的插件:product-id, search-disabled-repos, subscription-manager
dracut.x86_64 033-360.el7_2 rhel-7-server-rpms
dracut-config-rescue.x86_64 033-360.el7_2 rhel-7-server-rpms
kernel.x86_64 3.10.0-327.el7 rhel-7-server-rpms
rpm.x86_64 4.11.3-17.el7 rhel-7-server-rpms
rpm-libs.x86_64 4.11.3- 17.el7 rhel-7-server-rpms
rpm-python.x86_64 4.11.3-17.el7 rhel-7-server-rpms
yum.noarch 3.4.3-132.el7 rhel-7-server-rpms
上面输出中的包被列为可用更新。列表中的第一个包是 dracut 。示例输出中的每一行都由几行组成,如果是 dracut :
- dracut — 包的名称,
- x86_64 — 包所针对的 CPU 架构,
- 033 — 要安装的更新包的版本,
- 360.el7 — 更新包的发布,
- _2 — 构建版本,作为 z-stream 更新的一部分添加,
- rhel-7-server-rpms — 更新包所在的存储库。
输出还显示我们可以更新内核( 内核 包)、yum 和 RPM 本身( yum 和 rpm 包)以及它们的依赖项(例如 rpm-libs 和 rpm-python 包),所有这些都使用该 yum 命令。
记住yum安装完,需要用rpm查询相关信息
rpm -ql php72w-fpm
记住yum安装完,需要用rpm查询相关信息
rpm -ql php72w-fpm
记住yum安装完,需要用rpm查询相关信息
rpm -ql php72w-fpm
[ root @z yum.repos.d]# rpm -ql php72w-fpm
/etc/logrotate.d/php-fpm
/etc/php-fpm.conf
/etc/php-fpm.d
/etc/php-fpm.d/www.conf
/etc/sysconfig/php-fpm
/usr/lib/systemd/system/php-fpm.service
/usr/lib/tmpfiles.d/php-fpm.conf
/usr/sbin/php-fpm
/usr/share/doc/php72w-fpm-7.2.34
/usr/share/doc/php72w-fpm-7.2.34/fpm_LICENSE
/usr/share/doc/php72w-fpm-7.2.34/php-fpm.conf.default
/usr/share/fpm
/usr/share/fpm/status.html
/usr/share/man/man8/php-fpm.8.gz
/var/log/php-fpm
/var/run/php-fpm
Linux的rpm
linux软件分为 二进制 包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而 源代码 包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。 Debian , Ubuntu参考 DEB 和APT软件工具 常用命令组合:
rpm 语法
-ivh:安装显示安装进度--install--verbose--hash
-Uvh:升级软件包--Update;
-qpl:列出RPM软件包内的文件信息[Query Package list];
-qpi:列出RPM软件包的描述信息[Query Package install package(s)];
-qf:查找指定文件属于哪个RPM软件包[Query File];
-Va:校验所有的RPM软件包,查找丢失的文件[View Lost];
-e:删除包
wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、 FTP 三个最常见的 TCP/IP协议 下载,并且可以使用 HTTP 代理。”wget” 这个名称来源于 “World Wide Web” 与 “get” 的结合。因参数众多,这里不再列出,自行搜索。类似的有curl
wget语法
wget -o download.log URL
比如:wget -o aaa.tar httpxxxxx.tar
Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。
ps语法
ps [options] [--help]
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的进程
-w 显示加宽可以显示较多的资讯
- au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
au(x) 输出格式 :
ps -ef | grep 进程关键字
ps -ef | grep php
Linux netstat 命令用于显示网络状态。
利用 netstat 指令可让你得知整个 Linux 系统的网络情况。
因参数众多,这里不再列出,自行搜索最常用的如下方显示
netstat -tunlp | grep 端口号
netstat -tunlp | grep 9000
Linux的service
Linux 服务管理两种方式service和systemctl
systemd 是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。systemd对应的 进程管理 命令是systemctl。
service请自行搜索
systemctl语法
systemctl start php-fpm
systemctl status php-fpm
systemctl stop php-fpm
systemctl restart php-fpm
systemctl enable php-fpm
systemctl didable php-fpm
linux家目录的 bash_profile
如果你想对所有的使用 bash 的用户修改某个配置并在以后打开的bash都生效的话可以修改这个文件,修改这个文件不用重启,重新打开一个bash即可生效。
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些 环境变量 ,执行用户的.bashrc文件.
Linux grep
命令用于查找文件里符合条件的 字符串 。
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名称为 – ,则 grep 指令会从标准输入设备读取数据。
ps -ef | grep php
或者
grep -r '9000' php-fpm.conf
Linux ln软连接
Linux ln(英文全拼:link files) ,它的功能是为某一个文件在另外一个位置建立一个同步的链接。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复地占用磁盘空间。类似于windows的快捷方式
ln [参数][源文件或目录][目标文件或目录]
软连接的删除,直接删除软连接的目标文件就可以了。
压缩包管理
Linux的tar
最常用的打包命令是 tar,使用 tar 程序打出来的包我们常称为 tar 包,tar 包文件的命令通常都是以 .tar 结尾的。生成 tar 包后,就可以用其它的程序来进行压缩了。其他的还有 常用的压缩与解压缩命令有:tar、gzip、 gunzip 、bzip2、bunzip2、 compress 、uncompress、 zip、 unzip、rar、unrar 等。但一般tar和gz一起使用,打包和压缩一起搞。linux就是好,约定大于配置,比如.tar.gz就知道是用tar打包了并且也压缩了。
打包
tar -cf all.tar *.jpg
打包并且压缩
tar -cvzf all.tar.gz *.jpg
解压
tar -xzf all.tar.gz
tar -xzf all.tgz
终于可以开始安装环境了
源码安装
因为php的安装和运行依赖很大底层库,那第一步一定是先把需要的底层库加上。不然就会遇到各种缺少依赖,又涉及到了yum源的知识点了。多呀。
安装前,先检查一遍是否安装和启动了。不用上来就搞。[捂脸]
[root@xxxxxx~]# ps axf | grep php-fpm
4460 pts/0 S+ 0:00 \_ grep --color=auto php-fpm
4452 ? Ss 0:00 php-fpm: master process (/usr/local/etc/php-fpm.conf)
4453 ? S 0:00 \_ php-fpm: pool www
4454 ? S 0:00 \_ php-fpm: pool www
[root@xxxxxx ~]# netstat -ntlup | grep '9000'
tcp 0 0 127.0.0.1 :9000 0.0.0.0:* LISTEN 4452/php-fpm: maste
[root@xxxxx ~]# php -v
PHP 7.3.24 (cli) (built: Dec 16 2021 14:37:02) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.24, Copyright (c) 1998-2018 Zend Technologies
[root@xxxxx ~]# whereis php
php: /usr/lib64/php /etc/php.d /usr/local/lib/php.ini /usr/local/lib/php /usr/local/php /usr/share/php /usr/local/php7.3.24new/bin/php /usr/share/man/man1/php.1.gz
如果版本过旧,先删除掉旧的。( 当然如果把环境变量配置为新的版本也可以不删除 )
1、停止php-fpm(当然也要停止 nginx )
systemctl stop php-fpm
2、或者直接干掉进程,(假如进程号为1000)
- pkill php-fpm 1000
- kill -9 1000
- kill -INT `cat /xxxx/php-fpm.pid`
二、源码安装
源码安装的套路
下载
解压
进入源码目录
配置
make
make install
1、安装依赖
我都是管他用不用,先给给来一刷子。哈哈
yum install mysql-devel -y
yum install libxml2 -y
yum install libxml2-devel -y
yum install curl curl-devel -y
yum install -y libicu-devel
yum install gcc-c++ -y
yum -y install unixODBC-*
yum -y install postgresql -devel
yum install libtidy-devel libtidy -y
yum install nc -y
yum install -y libjpeg-turbo-devel libpng-devel freetype-devel libtiff-devel libXpm-devel libwebp-devel fontconfig-devel
yum install autoconf -y
2、目录规划
源码 包目录:/usr/local/src/xxxx.tar.gz
安装目录:/usr/local/xxx
/usr/local/php
/usr/local/nginx
3、下载源码包
当然是从官网下载了。别说官网不知道[捂脸]。其实我经常进的是cn2.php.net
wget
4、解压
tar -zxvf php-7.2.13.tar.gz
解压完就会生成一个php-7.2.13的目录,对吧
5、进入目录呀
cd /usr/local/src/php-7.2.13
6、源码安装的魅力来了./configure
搞起来
/configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/etc/php.d --with-fpm-user=www --with-fpm-group=www --enable-fpm --enable-mysqlnd --enable-opcache --enable-pcntl --enable-mbstring --enable-soap --enable-zip --enable-calendar --enable-bcmath --enable-exif --enable-intl --with-mysqli --with-pdo-mysql --with-pdo-odbc=unixODBC,/usr/ --with-pdo-pgsql --with-zlib --with-curl --with-freetype-dir --with-gettext --with-mhash --with-openssl --with-tidy --enable-wddx --with-xmlrpc --with-jpeg-dir
我在来个换行版本的。
/configure --prefix=/usr/local/php
--with-config-file-path=/usr/local/php/etc
--with-config-file-scan-dir=/usr/local/php/etc/php.d
--with-fpm-user=www --with-fpm-group=www
--enable-fpm 用fpm管理进程
--enable-mysqlnd
--enable-opcache
--enable-pcntl
--enable-mbstring
--enable-soap
--enable-zip
--enable-calendar
--enable-bcmath
--enable-exif
--enable-intl
--with-mysqli
--with-pdo-mysql
--with-pdo-odbc=unixODBC,/usr/
--with-pdo-pgsql --with-zlib
--with-curl
--with-freetype-dir
--with-gettext
--with-mhash
--with-openssl
--with-tidy
--enable-wddx
--with-xmlrpc
--with-jpeg-dir
./configure -h
或者搜索某一个
./configure -h | grep ‘pcntl’
目录随意配置,就是这么牛。rpm就不行了
都放到一个目录的好处是,不使用了,直接干掉/usr/local/php 目录就可以了。
7、考验cpu的时候到了。
编译
make
balabala一大堆
#### /bin/sh /usr/local/src/php/libtool --silent --preserve-dup-deps --mode=compile cc -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -Iext/opcache/ -I/usr/local/src/php/ext/opcache/ -DPHP_ATOM_INC -I/usr/local/src/php/ include -I/usr/local/src/php/main -I/usr/local/src/php -I/usr/local/src/php/ext/date/lib -I/usr/include/libxml2 -I/usr/local/src/php/ext/mbstring/oniguruma -I/usr/local/src/php/ext/mbstring/libmbfl -I/usr/local/src/php/ext/mbstring/libmbfl/mbfl -I/usr/local/src/php/ext/sqlite3/libsqlite -I/usr/local/src/php/ext/zip/lib -I/usr/local/src/php/TSRM -I/usr/local/src/php/Zend -I/usr/include -g -O2 -fvisibility=hidden -DZEND_SIGNALS -c /usr/local/src/php/ext/opcache/Optimizer/zend_cfg.c -o ext/opcache/Optimizer/zend_cfg.lo
8、安装
make install
完事
都把目录列出了
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/
Installing PHP CLI binary: /usr/local/php/bin/
Installing PHP CLI man page: /usr/local/php/php/man/man1/
Installing PHP FPM binary: /usr/local/php/sbin/
。。。。。。。省率了
program: phpize
program: php-config
Installing man pages: /usr/local/php/php/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment: /usr/local/php/lib/php/
[PEAR] Archive_Tar - already installed: 1.4.9
[PEAR] Console_Getopt - already installed: 1.4.3
[PEAR] Structures_Graph- already installed: 1.1.1
[PEAR] XML_Util - already installed: 1.4.5
[PEAR] PEAR - already installed: 1.10.12
Wrote PEAR system config file at: /usr/local/php/etc/pear.conf
You may want to add: /usr/local/php/lib/php to your php.ini include_path
/usr/local/src/php-7.3.24/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin
ln -s -f phar.phar /usr/local/php/bin/phar
Installing PDO headers: /usr/local/php/include/php/ext/pdo/
9、跑起来
# /usr/local/php/sbin/php-fpm
当然还有很多参数
# /usr/local/php/sbin/php-fpm -h
主要用到 -c 指定php.ini文件
三、环境变量的加入
一般系统中都已经内置了Php。通过 whereis php命令可以查询到。
[root@zjt-ecs-1 php]# whereis php
php: /usr/bin/php /usr/lib64/php /etc/php.d /usr/local/lib/php.ini /usr/local/lib/php /usr/local/php /usr/share/php /usr/local/php7.3.24new/bin/php /usr/share/man/man1/php.1.gz
但版本比较旧或者不是你想要的。
通过下面的方式解决
1、直接将自己编译好的二进制php命令,覆盖到/usr/bin/php。 比如
cp /usr/local/php/bin/php /usr/bin/php
2、创建软连接
[root@zjt-ecs-1 php]# ln -s /usr/local/php/bin/php /usr/bin/php
[root@zjt-ecs-1 php]# ll /usr/bin/php
lrwxrwxrwx 1 root root 22 12月 17 22:19 /usr/bin/php -> /usr/local/php/bin/php
3、环境变量
在家目录.bash_profile文件添加下面的一行
PATH=$PATH:/usr/local/php/bin/
但如果 /usr/bin/里面和bash_profile都配置了。从左向右搜索
[root@zjt-ecs-1 ~]# whereis php
php: /usr/bin/php /usr/lib64/php /etc/php.d /usr/local/lib/php.ini /usr/local/lib/php /usr/local/php /usr/share/php /usr/local/php7.3.24new/bin/php /usr/share/man/man1/php.1.gz
所以如果想直接用自己定义的目录的Php,需要去掉/usr/bin/php二进制文件
四、扩展安装
不好,突然开发中遇到缺少扩展怎么办。就需要涉及到扩展的安装。分两种情况
php -m 可以查看安装的模块
1、本身源码包里面带了扩展包
[root@zjt-ecs-1 ext]# ls
bcmath enchant gmp mbstring pdo phar skeleton sysvsem xsl
bz2 exif hash mysqli pdo_dblib posix snmp sysvshm zend_test
calendar ext_skel iconv mysqlnd pdo_firebird pspell soap tidy zip
com_dotnet ext_skel_win32.php imap oci8 pdo_mysql readline sockets tokenizer zlib
ctype fileinfo interbase odbc pdo_oci recode sodium wddx
curl filter intl opcache pdo_odbc reflection spl xml
date ftp json openssl pdo_pgsql session sqlite3 xmlreader
dba gd ldap pcntl pdo_sqlite shmop standard xmlrpc
dom gettext libxml pcre pgsql simplexml sysvmsg xmlwriter
那步骤只是比其他软件的源码安装多一步而已,
假如没有iconv
cd /usr/local/src/php/ext/iconv
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
2、需要从网络上下载扩展
下面是Php官网的原话
phpize 命令是用来准备 PHP 扩展库的编译环境的。下面例子中,扩展库的源程序位于 extname 目录中:
$ cd extname
$ phpize
$ ./configure
$ make
# make install
。。。。。。
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/
Installing header files: /usr/local/php/include/php/
成功的安装将创建 extname.so 并放置于 PHP 的扩展库目录中。需要调整 php.ini ,加入 extension=extname.so 这一行之后才能使用此扩展库。
如果系统中没有 phpize 命令并且使用了预编译的包(例如 RPM),那要安装 PHP 包相应的开发版本,此版本通常包含了 phpize 命令以及相应的用于编译 PHP 及其扩展库的头文件。
3、用 PEAR 编译共享 PECL 扩展库 ( 官网的,自己没搞过 )
PECL 使建立共享 PHP 扩展库更容易。
$ pecl install extname
这将下载 extname 的源代码,编译之,并将 extname.so 安装到 extension_dir 中。然后 extname.so 就可以通过 php.ini 加载了。
五、yum安装Php
因为生产环境中我都没用yum安装过,下面的步骤仅供参考哈。
第0步,也是先删除旧版本的
yum list installed | grep 'php'
yum remove php-xxxxx
1、首先安装 EPEL 源:
yum install epel-release
安装 REMI 源:
yum install
2、安装 Yum 源管理工具:
yum install yum-utils
3、 安装 PHP7.3
yum install -y php72w-cli.x86_64 php72w-common.x86_64 php72w-dba.x86_64 php72w-devel.x86_64 php72w-embedded.x86_64 php72w-enchant.x86_64 php72w-fpm.x86_64
4、查询安装的配置信息命令用的是rpm
rpm -ql php72-php-fpm
[root@z yum.repos.d]# rpm -ql php72w-fpm
/etc/logrotate.d/php-fpm
/etc/php-fpm.conf
/etc/php-fpm.d
/etc/php-fpm.d/www.conf
/etc/sysconfig/php-fpm
/usr/lib/systemd/system/php-fpm.service
/usr/lib/tmpfiles.d/php-fpm.conf
/usr/sbin/php-fpm
/usr/share/doc/php72w-fpm-7.2.34
/usr/share/doc/php72w-fpm-7.2.34/fpm_LICENSE
/usr/share/doc/php72w-fpm-7.2.34/php-fpm.conf.defauAlt
/usr/share/fpm
/usr/share/fpm/status.html
/usr/share/man/man8/php-fpm.8.gz
/var/log/php-fpm
/var/run/php-fpm
5、安装扩展
yum install php72w-pecl-redis.x86_64
6、卸载
yum remove -y php72w-cli.x86_64 php72w-common.x86_64 php72w-dba.x86_64 php72w-devel.x86_64 php72w-embedded.x86_64 php72w-enchant.x86_64 php72w-fpm.x86_64
六、服务管理
把php添加到systemctl 统一控制
创建文件:/usr/lib/systemd/system/php-fpm.service
[Unit]
Description=The PHP FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/usr/local/php/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
可以使用以下方式去管理了。
systemctl start php-fpm
systemctl status php-fpm
systemctl stop php-fpm
systemctl restart php-fpm
systemctl enable php-fpm 将服务设置为每次开机启动
systemctl didable php-fpm
service的也跳转了
[root@xxxx ~]# service php-fpm status
Redirecting to /bin/systemctl status php-fpm.service
七、php配置的设定
1、php-fpm的配置
关于www.conf和php-fpm的配置就属于配置问题,最重要的是修改静态和子进程数量
[root@xxxx ~]# cat /usr/local/php/etc/php-fpm.conf | grep -v ';'
[global]
pid = /var/run/php-fpm.pid
error_log = log/php-fpm.log
include=/usr/local/php/etc/php-fpm.d/*.conf
[root@xxxx ~]# cat /usr/local/php/etc/php-fpm.d/www.conf | grep -v ';'
[www]
user = www
group = www
listen = 127.0.0.1:9000
pm = static
pm.max_children = 20
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
排错的时候,一定确保进程启动了。
1.1、检查进程
ps axf | grep ‘php-fpm’
[root@xxxxx ~]# ps axf | grep php-fpm
4460 pts/0 S+ 0:00 \_ grep --color=auto php-fpm
4452 ? Ss 0:00 php-fpm: master process (/usr/local/etc/php-fpm.conf)
4453 ? S 0:00 \_ php-fpm: pool www
4454 ? S 0:00 \_ php-fpm: pool www
2.1、检查端口
[root@xxxx~]# netstat -ntlup | grep '9000'
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 4452/php-fpm: maste
2、php.ini的配置
upload_max_filesize = 10M 记得修改哈。
allow_url_fopen = On
allow_url_include = Off
[Assertion]
auto_append_file =
auto_globals_jit = On
auto_prepend_file =
[bcmath]
bcmath.scale = 0
[browscap]
[CLI Server]
cli_server.color = On
[COM]
[curl]
[Date]
[dba]
default_charset = "UTF-8"
default_mimetype = "text/html"
default_socket_timeout = 100
disable_classes =
disable_functions =
display_errors = Off
display_startup_errors = Off
doc_root =
enable_dl = Off
engine = On
error_log = /www/logs/php/php_errors.log
error_reporting = E_ALL
[iconv]
ignore_repeated_errors = Off
ignore_repeated_source = Off
implicit_flush = Off
[Interbase]
[intl]
[mbstring]
memory_limit = 128M
[MySQLi]
mysqli.allow_persistent = On
mysqli.cache_size = 2000
mysqli.default_host =
mysqli.default_port = 3306
mysqli.default_pw =
mysqli.default_socket =
mysqli.default_user =
mysqli.max_links = -1
mysqli.max_persistent = -1
mysqli.reconnect = Off
[mysqlnd]
mysqlnd.collect_memory_statistics = On
mysqlnd.collect_statistics = On
[OCI8]
省率一万字。。。。。。。
[Session]
session.auto_start = 0
session.cache_expire = 180
session.cache_limiter = nocache
session.cookie_domain =
省率一万字。。。。。。。
session.sid_length = 26
session.trans_sid_tags = "a=href,area=href,frame=src,form="
session.use_cookies = 1
session.use_only_cookies = 1
session.use_strict_mode = 0
session.use_trans_sid = 0
short_open_tag = Off
SMTP = localhost
smtp_port = 25
7、nginx的配置设定
现在都是单入口应用,基本都是php接管请求。nginx的配置,记得添加上。
添加到http的配置段落里面
location / {
try_files $uri $uri/ /index.php?$query_string;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
终于到头了。码字不易。
感谢 点赞,收藏,转发。关注我,了解更多软件资讯~!
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~