FreeBSD为Nginx安装带有FPM的PHP 7.2

时间:2019-11-20 08:54:01  来源:igfitidea点击:

如何在FreeBSD中安装PHP7.2?
如何在Nginx服务器中配置使用FPM的PHP?

PHP是PHP: Hypertext Preprocessor(超文本预处理器)的缩写。
是现在流行的web开发脚本语言。

1.更新FreeBSD ports树

使用portsnap命令完成操作:

# portsnap fetch update

2.在FreeBSD上安装PHP 7.2

可以使用端口或者二进制软件包方法安装PHP 7.2。

使用ports方法安装

# cd /usr/ports/lang/php72/
# make install clean

使用二进制包安装

运行pkg命令进行安装:

# pkg install php72

3.在FreeBSD上安装PHP 7.2扩展

同样,可以使用ports或pkg方法安装PHP扩展。

使用ports方法安装php扩展:

# cd /usr/ports/lang/php72-extensions/ && make install clean

使用二进制安装包安装php扩展:

# pkg install php72-extensions

如果还有其他扩展包需要安装,可以参照下面命:

# pkg search php72 | grep gd
# pkg search php72 | egrep -i --color 'gd|mysqli|openssl'
# pkg search php72 | egrep --color -i -- '-(gd|mysqli|openssl|memcached|opcache|json|mbstring|imagick|xml|zip|composer|igbinary)-'

pkg install php72-composer php72-gd php72-json

4.配置PHP-FPM

编辑文件/usr/local/etc/php-fpm.d/www.conf

# vi /usr/local/etc/php-fpm.d/www.conf

将:

listen = 127.0.0.1:9000

改成:

listen = /var/run/php72-fpm.sock

取消下面行的注释:

listen.owner = www
listen.group = www
listen.mode = 0660

启用php-fpm服务:

sysrc php_fpm_enable = YES

在FreeBSD服务器上启动,停止,重启php-fpm服务的命令:

# service php-fpm stop
# service php-fpm start
# service php-fpm restart
# service php-fpm status

配置PHP 7

安装php.ini文件:

# cp -v /usr/local/etc/php.ini-production /usr/local/etc/php.ini
`/usr/local/etc/php.ini-production -> /usr/local/etc/php.ini`

对php进行个性化配置:

# vi /usr/local/etc/php/99-custom.ini

添加以下配置:

display_errors=Off
safe_mode=Off
safe_mode_exec_dir=
safe_mode_allowed_env_vars=PHP_
expose_php=Off
log_errors=On
error_log=/var/log/nginx/php.scripts.log
register_globals=Off
cgi.force_redirect=0
file_uploads=On
allow_url_fopen=Off
sql.safe_mode=Off
disable_functions=show_source, system, shell_exec, passthru, proc_open, proc_nice, exec
max_execution_time=60
memory_limit=60M
upload_max_filesize=2M
post_max_size=2M
cgi.fix_pathinfo=0
sendmail_path=/usr/sbin/sendmail [email protected] -t

在FreeBSD上重启PHP:

# service php-fpm restart

5.配置Nginx以使用PHP 7.2(PHP-FPM)

通过FCGI协议将Nginx连接到PHP-FPM服务。如

编辑虚拟域或者nginx.conf文件:

# cd /usr/local/etc/nginx
# vi nginx.conf

或者

# vi vdomains/http.192.168.1.100.conf

配置示例,注意fastcgi相关的配置项:

server {
    server_name 192.168.1.100; # use domain name if you have here
    access_log  /var/log/nginx/192.168.1.100.access.log;
    error_log  /var/log/nginx/192.168.1.100.error.log;
 
    root /var/www/html;
    # php config let nginx talk to php socket
    location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
                return 404;
        }
 
        # Mitigate https://httpoxy.org/ vulnerabilities
         fastcgi_param HTTP_PROXY "";
 
        fastcgi_pass unix:/var/run/php72-fpm.sock;
        fastcgi_index index.php;
 
        # include the fastcgi_param setting
        include fastcgi_params;
 
        # SCRIPT_FILENAME parameter is used for PHP FPM determining
        # the script name.
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
    }
}

重新加载nginx配置:

# service nginx reload

6.测试设置

在/var/www/html 中创建一个PHP脚本文件test.php

# vi /var/www/html/test.php

文件代码如下:

<?php
    phpinfo();
?>

设置站点根目录的权限

# chown -R nginx:nginx /var/www/html/
# chmod -R 0555 /var/www/html/

使用浏览器打开测试页面

http://192.168.1.100/test.php

一切正常,将会看到PHP的有关信息。

如何检查PHP-fpm是否正在运行

在FreeBSD上使用sockstat命令可以列出正在运行的服务,打开的端口和Unix套接字:

# sockstat -46lu | egrep --color 'www|nginx|php'

如果在运行PHP时遇到问题,可以检查日志文件:

# ls -l /var/log/nginx/
# tail -f /var/log/nginx/192.168.1.100.error.log