如何使用Nginx,Mysql,PHP 7.0(PHP FPM)设置FreeBSD 11 Web服务器
我们已经在基于Linux的操作系统中运行LEMP堆栈,即Nginx,MySQL和PHP,但是今天我们将在FreeBSD 11上安装FEMP堆栈。
FreeBSD是基于BSD系统的免费和开源的类Unix操作系统。
与Linux不同,FreeBSD是从内核,设备驱动程序到userland实用程序的完整操作系统,并作为一个完整的操作系统进行开发和维护,而linux是带有设备驱动程序的内核。
Nginx是一个免费的开源Web服务器,以其速度以及负载平衡和缓存功能而广为人知。
它是在大量服务器中使用的最受欢迎的Web服务器和代理服务器之一。
MySQL是由Oracle开发和维护的开源关系数据库管理系统,而其免费和开源版本(即MariaDB)也可以从Internet上获得。
PHP是一种服务器端脚本语言,是为Web开发而编写的,是一种由Zend Technologies开发和维护的后端语言。
在FreeBSD 11中运行的Nginx,MySQL和PHP的组合被称为FEMP堆栈。
前提条件
首先,我们将FreeBSD 11操作系统更新为存储库中可用的最新软件包。
由于FreeBSD 11的默认软件包管理器是pkg,因此我们将运行以下pkg命令来使用sudo特权更新系统。
% sudo freebsd-update fetch install
安装Nginx
系统更新后,现在将在FreeBSD 11机器上安装Nginx Web服务器。
为此,我们需要在sudo特权下运行以下pkg命令。
% sudo pkg install nginx
安装MySQL
然后,我们将安装MySQL数据库系统,在该数据库系统中,我们将存储和检索将在计算机上运行的基于Web的应用程序的数据。
要安装MySQL服务器软件包,我们需要运行以下命令。
% sudo pkg install mysql56-server
安装PHP 7.0模块
现在,我们将从FreeBSD官方存储库中安装PHP 7.0的所有必需模块,以便可以执行我们要运行的基于PHP的Web应用程序。
为了安装所需的PHP模块,我们需要运行以下命令。
% sudo pkg install php70 php70-mysqli php70-xml php70-gd php70-curl php70-zlib php70-zip php70-hash php70-tokenizer
请注意,本教程中安装的模块是常用的php模块,而根据要求,我们可能需要安装其他模块。
然后,我们将通过执行以下命令将示例php配置(即/usr/local/etc/php.ini-production)复制到/usr/local/etc/php.ini。
% sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
我们将使用文本编辑器打开文件/usr/local/etc/php.ini,如下所示。
% sudo nano /usr/local/etc/php.ini
然后,我们将取消注释php.ini中的cig.fix_pathinfo行并将其值设置为0,以防止用户执行任意PHP代码。
cgi.fix_pathinfo=0
完成编辑后,我们将保存文件并退出文本编辑器。
接下来,我们将需要运行rehash命令以重新生成有关已安装的可执行文件的系统缓存信息。
% rehash
启用服务
为了启用nginx,php-fpm和mysql服务,我们将运行以下sysrc命令,如下所示。
启用服务将在每次系统引导时自动运行守护程序。
% sudo sysrc nginx_enable=yes mysql_enable=yes php_fpm_enable=yes
完成后,我们将通过运行以下命令来启动守护程序。
% sudo service nginx start % sudo service mysql-server start % sudo service php-fpm start
配置PHP-FPM
现在,我们需要将PHP-FPM配置为使用Unix套接字而不是网络端口进行通信,因为它比网络端口更安全。
为此,我们需要使用文本编辑器对php-fpm配置文件/usr/local/etc/php-fpm.d/www.conf进行少量更改。
% sudo nano /usr/local/etc/php-fpm.d/www.conf
然后,通过添加分号ie;对行listen = 127.0.0.1:9000进行注释。
前行。
完成后,我们将在其下方添加以下行。
listen = /var/run/php-fpm.sock
接下来,我们将通过删除分号as取消注释以下行。
listen.owner = www listen.group = www listen.mode = 0660
完成后,我们将保存文件并退出文本编辑器,然后通过运行以下命令重新启动PHP-FPM。
% sudo service php-fpm restart
配置MySQL
由于我们尚未为MySQL服务器的root用户设置任何密码,因此在这里我们将为其设置root密码。
为此,我们需要运行以下命令。
% sudo mysql_secure_installation
它将要求我们输入MySQL服务器的root密码,但是由于我们之前没有设置任何密码,因此只需按键盘上的Enter键即可。
然后,将要求我们为我们的MySQL根用户设置密码,在这里我们将点击Y并输入密码。
然后,我们只需点击键盘上的Enter按钮即可为其他设置设置默认值。
使用PHP-FPM配置Nginx
一切设置完成后,我们现在将配置Nginx Web服务器以使用php-fpm运行php脚本。
为此,我们需要使用文本编辑器配置位于/usr/local/etc/nginx/nginx.conf的Nginx配置。
% sudo nano /usr/local/etc/nginx/nginx.conf
打开文本编辑器后,我们需要将用户值设置为www,并将worker_processes设置为系统具有的CPU或者内核数。
可以通过在控制台中运行sysctl hw.ncpu进行检查。
然后,我们需要配置server {}块,如以下nginx配置所示。
user www; worker_processes 1; #No. of processors error_log /var/log/nginx/error.log info; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; sendfile on; keepalive_timeout 65; server { listen 80; server_name theitroad.com www.theitroad.com; root /usr/local/www/nginx; index index.php index.html index.htm; location/{ try_files $uri $uri/=404; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/local/www/nginx-dist; } location ~ \.php${ try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; } } }
完成配置后,我们需要保存并重新启动我们的nginx服务器。
我们可以通过运行以下命令来重启nginx服务器。
% sudo service nginx restart
测验
现在,为了测试FreeBSD 11中的FEMP设置,我们将使用文本编辑器在webroot下创建一个名为info.php的测试文件。
% sudo nano /usr/local/www/nginx/info.php
然后,我们将编写以下php测试代码,该代码将打印所有PHP信息,这将向我们证明我们的FEMP堆栈已成功设置。
<?php phpinfo(); ?>
现在,我们将打开一个网络浏览器,并尝试根据配置将浏览器指向http://ip-address/info.php或者http://theitroad.com/info.php来访问info.php文件制成。