操作系統:CentOS Linux release 7.9
實戰任務:安裝PHP、Nginx與PHP-FPM的整合
操作步驟如下:
1.安裝依賴庫
# yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel
2.編譯安裝PHP7
[root@Linux tool]# wget -c http://mirrors.sohu.com/php/php-7.2.3.tar.gz
[root@Linux php-7.2.3]# ./configure --prefix=/usr/local/php7 --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo --enable-tokenizer --enable-zip
[root@Linux php-7.2.3]# make -j 8 && make install
[root@Linux php-7.2.3]# cp php.ini-production /usr/local/php7/lib/php.ini
[root@Linux php-7.2.3]# cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
3.PHP-FPM配置文件
[root@Linux php7]# cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
[root@Linux php7]# cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
[root@Linux php-fpm.d]# pwd
/usr/local/php7/etc/php-fpm.d
[root@Linux php-fpm.d]# cat www.conf
user = www
group = www
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children=100
pm.start_servers=20
pm.min_spare_serves=10
pm.max_spare_servers=50
#上面的參數值是錯誤的,先保持默認參數,不能隨意修改,否則導致PHP-FPM服務無法啓動。
[root@Linux /]# cat /usr/lib/systemd/system/php-fpm.service
[root@Linux /]# systemctl enable php-fpm
[root@Linux /]# systemctl start php-fpm
4.配置Nginx來支持PHP
location / {
root /www/html/;
index index.html index.php;
}
location ~ \.php$ {
root /www/html/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/html$fastcgi_script_name;
include fastcgi_params;
}
#訪問的時候說找不到php文件,將上面的$fastcgi_script_name前加上存放文件的路徑即可。
5.測試服務是否啓動
[root@Linux /]# ps -ef|grep nginx
root 3843 1 0 16:54 ? 00:00:00 nginx: master process ./nginx
nginx 3844 3843 0 16:54 ? 00:00:00 nginx: worker process
nginx 3845 3843 0 16:54 ? 00:00:00 nginx: worker process
nginx 3846 3843 0 16:54 ? 00:00:00 nginx: worker process
root 16097 29641 0 17:08 pts/2 00:00:00 grep --color=auto nginx
root 25925 16795 0 15:21 pts/1 00:00:00 vi nginx.conf
[root@Linux /]# ps -ef|grep php-fpm
root 17669 29641 0 17:09 pts/2 00:00:00 grep --color=auto php-fpm
root 21425 1 0 16:27 ? 00:00:00 php-fpm: master process (/usr/local/php7/etc/php-fpm.conf)
www 21426 21425 0 16:27 ? 00:00:00 php-fpm: pool www
www 21427 21425 0 16:27 ? 00:00:00 php-fpm: pool www
6.測試Nginx對PHP的解析
7.測試PHP連接MySQL
1)通過MySQLi方式連接MySQL
[root@Linux html]# cat mysqli.php
<?php
$conn=mysqli_connect('127.0.0.1','root','********','mysql');
if(!$conn){
die("數據庫連接錯誤".mysqli_connect_error());
}else{
echo "<center><font size='+4' color='red'>MySQLi數據庫連接成功!</font></center>";
}
?>
2)通過pdo-mysql方式連接MySQL
[root@Linux html]# cat pdomysql.php
<?php
try{
$pdo=new pdo('mysql:host=127.0.0.1;dbname=mysql','root','*******');
}catch(PDDException $e){
echo '數據庫連接錯誤';
}
echo "<center><font size='+4' color='red'>pdo-mysql數據庫連接成功!</font></center>"
?>
8.操作技巧:
# vi /etc/profile
PATH=/usr/local/php7/bin:$PATH
export PATH
#source /etc/profile
[root@Linux /]# php -v
PHP 7.2.3 (cli) (built: Feb 3 2021 14:41:48) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
[root@Linux /]# php-fpm -v
PHP 7.2.3 (fpm-fcgi) (built: Feb 3 2021 14:41:49)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies