FreeBSD为Nginx安装带有FPM的PHP 7.2

时间:2020-01-09 10:38:34  来源:igfitidea点击:

如何在FreeBSD操作系统上为Nginx Web服务器安装FPM安装PHP 7.2?

说明:PHP是PHP的缩写:超文本预处理器。
它是一种开源通用脚本语言。

PHP可方便地进行Web开发和运行流行的软件,例如MediaWiki,WordPress等。

PHP易于学习,并允许您动态编写动态生成的网页。
该页面显示了如何在FreeBSD v11.x Unix机器上以及Nginx Web服务器上安装PHP 7.2。

FreeBSD为Nginx安装带有FPM的PHP 7.2

在FreeBSD上安装PHP 7.2的过程如下:

  • 更新FreeBSD端口树
  • 安装PHP 7.2二进制软件包:pkg install nginx
  • 安装Nginx二进制包
  • 配置Nginx和PHP 7.2
  • 在FreeBSD上打开PHP-fpm服务
  • 测试设置

让我们详细了解所有步骤。

1.更新FreeBSD端口树

您必须使用portsnap命令

# portsnap fetch update

2.在FreeBSD上安装PHP 7.2

您可以使用端口或二进制软件包方法安装PHP 7.2。
使用以下任何一种方法。

端口方法

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

二进制打包方法

运行pkg命令进行安装:

# pkg install php72

3.在FreeBSD上安装PHP 7.2扩展

同样,可以使用ports或pkg方法安装PHP扩展。
使用以下任何一种方法。

要安装端口,请运行以下命令并选择所需的扩展名:

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

或添加二进制包:

# pkg install php72-extensions

另一个选择是根据您的Web应用程序或软件项目需求安装单个PHP扩展。
可以使用pkg命令和grep命令/egrep命令搜索PHP 7.2扩展

# 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
### OR ###
# pkg install php72-composer-1.6.5 php72-gd-7.2.10 php72-json-7.2.10 php72-mbstring-7.2.10 php72-mysqli-7.2.10 php72-opcache-7.2.10 php72-openssl-7.2.10 php72-pecl-imagick-3.4.3_2 php72-pecl-memcached-3.0.4 php72-xml-7.2.10 php72-zip-7.2.10 php72-pecl-igbinary-2.0.7

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命令安装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.2.31.conf

这是一个更新的示例配置文件:

server {
    server_name 192.168.2.31; # use domain name if you have here
    access_log  /var/log/nginx/192.168.2.31.access.log;
    error_log  /var/log/nginx/192.168.2.31.error.log;
 
    root /wwwwiki;
    # 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.测试设置

在/wwwwiki /中创建一个名为test.php的PHP脚本

# vi /wwwwiki/test.php

追加以下代码,显示有关使用phpinfo配置PHP的信息:

<?php
        phpinfo();
?>

保存并关闭文件。
在DocumentRoot(Web服务器根目录)上设置严格的文件许可权:

# chown -R wwwwiki:wwwwiki /wwwwiki/
# chmod -R 0555 /wwwwiki/

打开浏览器并对其进行测试:

http://192.168.2.31/test.php
http://your-domain-name-here/test.php

在那里,PHP可以按预期工作,并且Nginx正在通过Unix套接字与PHP-FPM进行通信。

如何验证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.2.31.error.log