這篇文章為大家帶來了關於php的相關知識,其中主要介紹了在Centos系統中是如何編譯安裝php,以及如何正確配置的,步驟很詳細!有興趣的朋友下面一起來看看吧,希望對大家有幫助。
PHP(全名為:PHP:Hypertext Preprocessor,即「PHP:超文本預處理器」)是一種開源的通用電腦腳本語言,尤其適用於網頁開發並可嵌入HTML中使用。 PHP的語法借鏡吸收C語言、Java和Perl等流行電腦語言的特點,易於一般程式設計師學習。 PHP的主要目標是允許網頁開發人員快速編寫動態頁面。
保險起見使用php 官網下載:https: //www.php.net/downloads
使用官網下載速度較慢,但是安全性有保障,如對安全性沒有要求也可百度搜尋相關鏡像,本文選擇最新穩定版本PHP 8.1.6
wget https://www.php.net/distributions/php-8.1.6.tar.gz tar -zxvf php-8.1.6.tar.gz cd php-8.1.6
yum install libxml2 libxml2-devel libsqlite3x-devel openssl bzip2 libcurl-devel libcurl libjpeg libpng freetype gmp libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel zlib zlib-devel glibc glib2 ncurses curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel expat-devel xmlrpc-c xmlrpc-c-devel libicu-devel libmcrypt-devel libmemcached-devel -y
#注意:目前Centos 官方映像已停止服務,
yum install
# 安裝devel
軟體時,如報錯無法安裝可嘗試將/etc/yum.repos.d/
目錄下的CentOS-Base.repo.rpmsave
中的檔案內容覆蓋至CentOS-Linux-BaseOS.repo
,CentOS-AppStream.repo.rpmsave
覆寫至CentOS-Linux-AppStream.repo
,操作前請注意備份
因yum 來源中沒有oniguruma 包,這裡使用github 原始碼編譯安裝,專案位址:https://github.com/kkos/oniguruma
wget https://github.com/kkos/oniguruma/releases/download/v6.9.8/onig-6.9.8.tar.gz tar -zxvf onig-6.9.8.tar.gz cd onig-6.9.8 ./configure --prefix=/usr make && make install
安全起見,我們需要建立一個用戶用於運行php,一般這個用戶是禁止登陸的,本文創建用戶名稱與使用者群組皆為www
,這個名稱可以自訂
# 创建用户组 groupadd www # 创建用户 useradd -g www www -M -s /sbin/nologin
-g www
指定使用者群組-M
不建立家目錄(程式執行不需要家目錄)-s /sbin/nologin
不允許登入,更安全# 生成编译文件 ./configure --prefix=/www/server/php81 --with-config-file-path=/www/server/php81/etc --enable-fpm --with-fpm-group=www --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype --with-mcrypt --with-jpeg --with-png -with-zlib --with-libxml-dir --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl -enable-mbstring --enable-gd --with-openssl --with-mhash --enable-pcntl --with-xmlrpc --enable-zip --enable-soap --with-gettext --enable-opcache --with-xsl --enable-sockets --enable-mbregex --enable-ftp --with-webp # 编译并安装 make && make install # 复制配置文件 cp php.ini-production /www/server/php81/etc/php.ini # 或者使用 development cp php.ini-development /www/server/php81/etc/php.ini
如果使用apache
的話,需要在編譯參數中新增--with-apxs2=/www/server/apache/bin/apxs
,同時--enable-fpm
參數可去除,其中/www/server/apache
為apache
安裝目錄,編譯完成後在apache
的設定檔中解註解對php_module
的註解即可,本文不細講apache
設定。
在/etc/profile
下新增PATH=$PATH:/www/server/php81/bin && export PATH
,使用source /etc/profile
使設定立即生效。
建立php-fpm
軟體連結:
ln -s /www/server/php81/sbin/php-fpm /www/server/php81/bin/php-fpm
nginx 設定php
複製設定文件,如果之前已經複製過請跳過此步驟:<pre class="brush:php;toolbar:false">cp /www/server/php81/etc/php-fpm.conf.default /www/server/php81/etc/php-fpm.conf
cp /www/server/php81/etc/php-fpm.d/www.conf.default /www/server/php81/etc/php-fpm.d/www.conf</pre>
啟動php-fpm:<pre class="brush:php;toolbar:false">/www/server/php81/sbin/php-fpm</pre>
修改nginx 設定檔
location ~ [^/]\.php(/|$) { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; }###重啟nginx ,### nginx -s reload###,在網站根目錄新建###phpinfo.php### 檔案:###
<?php phpinfo();###################### #####
在日常的开发中,不同项目可能需要不同版本的 php
来运行,这就需要通过一些配置来实现 php
的共存。多个 php
版本共存时,需要在编译时将不同版本的 php
安装到不同的目录。
打开 php
安装路径,编辑文件 etc/php-fpm.d/www.conf
或 etc/php-fpm.conf
,在文件中新增或修改以下项:
[www] ; 根据版本配置,比如 php8.1 配置为 php-cgi-81.sock listen = /tmp/php-cgi-81.sock listen.backlog = 8192 listen.allowed_clients = 127.0.0.1 ; 运行 master 进程用户名,一定要设置!!并且 listen 中设置的文件 nginx 必须有读权限,否则会报错 listen.owner = www ; 运行 master 进程用户名,参考上一个 listen.group = www listen.mode = 0666 ; worker 进程运行的用户,该用户需要有运行的 PHP 文件的读权限,如涉及文件上传还需要对应目录的写权限 user = www ; worker 进程的用户组,参考上一项 group = www ; 动态调整 worker 数 pm = dynamic ; 依据版本设置 如 php8.1 配置为 phpfpm_81_status pm.status_path = /phpfpm_81_status ; 最大 worker 进程数 一般设置为 内存/50M pm.max_children = 50 ; 启动时的 worker 进程数 pm.start_servers = 5 ; 限制时的最小 worder 进程数 pm.min_spare_servers = 5 ; 限制时的最大 worder 进程数 pm.max_spare_servers = 10 ; 请求超时时间 request_terminate_timeout = 100 ; 慢日志记录时间,请求事件超出此时间会记录日志 request_slowlog_timeout = 30 ; 慢日志目录,目录一定要存在且上面设置的 user 用户要有写权限 slowlog = /www/wwwlogs/php/slow.log
随后在 nginx 配置文件,对应的 server 中修改 fastcgi_pass
为刚才设置中的 listen
对应的路径,注意此文件 nginx 运行用户必须有读权限,否则会报错:
location ~ [^/]\.php(/|$) { - fastcgi_pass 127.0.0.1:9000; + fastcgi_pass unix:/tmp/php81.sock; fastcgi_index index.php; include fastcgi.conf; }
php-fpm
即php-Fastcgi Process Manager
,php-fpm
是FastCGI
的实现,并提供了进程管理的功能。php-fpm
进程包含master
进程与worker
进程,一般情况下,master
进程只有一个,负责监听端口、调度请求,而worder
进程则有多个,每个进程内部都嵌入了一个PHP
解释器,是PHP
代码真正运行的地方。前文设置中的worker
即php-fpm
的worker
进程数量。
编辑文件 /etc/init.d/php-fpm81
,如需多版本兼容文件名后加上当前版本,如这里使用 php-fpm81
,写入如下内容:
#!/bin/bash # chkconfig: - 51 64 . /etc/init.d/functions # php-fpm 路径 exec=/www/server/php81/sbin/php-fpm # 锁文件 用于识别当前软件是否在运行 lock=/var/lock/subsys/php-fpm81 # 标识 输出信息用 可随意修改 proc=php-fpm81 function start() { pidofproc $exec > /dev/null [ $? = 0 ] && echo "${proc} 正在运行中" && exit daemon $exec if [ $? = 0 ]; then echo "${proc} 启动成功" rm -f lock touch $lock else echo "${proc} 启动失败 $?" fi } function stop() { pidofproc $exec > /dev/null [ $? != 0 ] && echo "${proc} 未运行" && exit killproc $exec if [[ $? == 0 ]]; then echo "${proc} 停止成功" rm -f $lock else echo "${proc} 停止失败 $?" fi } function reload() { killproc $exec -HUP if [[ $? == 0 ]]; then echo "平滑重启成功" else echo "平滑重启失败 $?" fi } function restart() { stop start } function procStatus() { status $exec > /dev/null if [[ $? == 0 ]]; then echo "${proc} 已启动" else echo "${proc} 未启动" fi } case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) restart ;; status) procStatus ;; *) echo $"Usage: $0 {start|stop|reload|restart|status}" esac
随后添加为开机自启即可,如下:( php-fpm81
是上一步自定义得到文件名)
# 添加运行权限 chmod +x /etc/init.d/php-fpm81 chkconfig --add php-fpm81 chkconfig php-fpm81 on
手动操作命令如下:
# 启动 /etc/init.d/php-fpm81 start # 停止 /etc/init.d/php-fpm81 stop # 平滑重启 /etc/init.d/php-fpm81 reload # 重启 /etc/init.d/php-fpm81 restart # 运行状态 /etc/init.d/php-fpm81 status
推荐学习:《PHP视频教程》
以上是步驟詳解Centos中編譯安裝php8與設定方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!