如何使用Nginx,Mysql,PHP 7.0(PHP FPM)设置FreeBSD 11 Web服务器

时间:2020-03-05 15:31:56  来源:igfitidea点击:

我们已经在基于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文件制成。