如何在FreeBSD 12.0上安装Nginx,MySQL和PHP(FEMP)堆栈

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com

FEMP堆栈类似于Linux上的LEMP堆栈,是通常安装在一起以使FreeBSD服务器托管动态网站和Web应用程序的开源软件的集合。 FEMP是FreeBSD,Nginx,MySQL和PHP的首字母缩写。

在本指南中,我们将使用以下方法在FreeBSD 12.0 Vultr实例上部署FEMP堆栈的元素 pkg,FreeBSD软件包管理器。

要求

在开始本指南之前,您需要满足以下条件:

FreeBSD 12.0 VPS。
具有root特权的用户或 sudo 用户进行配置更改。
建议对FreeBSD系统和命令行界面有基本的了解。

在你开始之前

检查FreeBSD版本。

uname -ro
# FreeBSD 12.0-RELEASE-p6

确保您的FreeBSD系统是最新的。

freebsd-update fetch install
pkg update && pkg upgrade -y

安装必要的软件包。

pkg install -y sudo vim bash curl

使用您的首选用户名创建一个新的用户帐户。我们用 johndoe

adduser

# Username: johndoe
# Full name: John Doe
# Uid (Leave empty for default): 
# Login group [johndoe]: 
# Login group is johndoe. Invite johndoe into other groups? []: wheel
# Login class [default]: 
# Shell (sh csh tcsh nologin) [sh]: bash
# Home directory [/home/johndoe]: 
# Home directory permissions (Leave empty for default): 
# Use password-based authentication? [yes]: 
# Use an empty password? (yes/no) [no]: 
# Use a random password? (yes/no) [no]: 
# Enter password: your_secure_password
# Enter password again: your_secure_password
# Lock out the account after creation? [no]: 
# OK? (yes/no): yes
# Add another user? (yes/no): no
# Goodbye!

跑过 visudo 命令并取消注释 %wheel ALL=(ALL) ALL 行,以允许成员 wheel 组以执行任何命令。

visudo

# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALL

现在,使用以下命令切换到新创建的用户 su

su - johndoe

注意: 更换 johndoe 使用您的用户名。

设置时区:

sudo tzsetup

安装主线Nginx

您可以使用FreeBSD的软件包管理器安装Nginx, pkg。软件包管理器使您可以轻松地从FreeBSD维护的存储库中安装大多数软件。您可以了解更多有关如何使用的信息 pkg 这里。

要安装最新的主线Nginx,请发出以下命令:

sudo pkg install -y nginx-devel

检查版本:

nginx -v
# nginx version: nginx/1.17.1

此命令将安装最新的主线版本,该版本可以在生产服务器上可靠地使用。如果要安装最新的稳定版本,只需使用 nginx 包装而不是 nginx-devel

现在,启用并启动Nginx:

sudo sysrc nginx_enable=yes
sudo service nginx start

要检查Nginx是否已启动,可以运行以下命令:

sudo service nginx status

结果,您将看到类似于以下内容:

# Output
nginx is running as pid 17607.

您可以通过在Web浏览器中访问服务器的公共IP地址来验证Nginx是否已安装并正常工作。导航 your_server_IP。您将看到默认的“欢迎使用nginx!”。页。

安装MySQL

同样,您可以利用 pkg 获取并安装您的软件。

使用安装MySQL pkg

sudo pkg install -y mysql80-client mysql80-server

检查版本:

mysql --version
# mysql  Ver 8.0.16 for FreeBSD12.0 on amd64 (Source distribution)

现在,启用并启动MySQL:

sudo sysrc mysql_enable=yes
sudo service mysql-server start

要检查MySQL是否已启动,可以运行以下命令:

sudo service mysql-server status

您将看到类似于以下内容:

# Output
mysql is running as pid 19066.

作为一种好的做法,您应该运行 mysql_secure_installation 安全脚本,该脚本将删除一些不安全的默认值,并稍微限制对数据库系统的访问。

sudo mysql_secure_installation

系统将要求您设置密码,然后提出其他一些问题。输入一个强密码,然后对其余问题按ENTER键选择默认值。

安装PHP 7.3

安装PHP 7.3pkg,运行以下命令:

sudo pkg install -y php73

检查版本。

php --version
# PHP 7.3.7 (cli) (built: Jul 18 2019 01:14:37) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.3.7, Copyright (c) 1998-2018 Zend Technologies

软链接 php.ini-productionphp.ini

sudo ln -s /usr/local/etc/php.ini-production /usr/local/etc/php.ini

现在,启用并启动PHP-FPM:

sudo sysrc php_fpm_enable=yes
sudo service php-fpm start

要检查PHP-FPM是否已启动,可以运行以下命令:

sudo service php-fpm status

结果,您将看到类似的内容:

# Output
php_fpm is running as pid 23005.

安装PHP模块(可选)

为了增强PHP的功能,您可以选择安装一些其他模块。

要查看当前在PHP模块中编译的代码,可以运行以下命令:

php -m
# [PHP Modules]
# Core
# date
# libxml
# mysqlnd
# pcre
# Reflection
# SPL
# standard

# [Zend Modules]

要搜索可用的PHP模块,可以使用以下命令:

pkg search ^php73-*

结果将主要是可以安装的PHP 7.3模块:

# Output
# php73-7.3.7                    PHP Scripting Language
# php73-Ice37-3.7.2              Modern alternative to object middleware such as CORBA/COM/DCOM/COM+
# php73-aphpbreakdown-2.2.2      Code-Analyzer for PHP for Compatibility Check-UP
# php73-aphpunit-1.8             Testing framework for unit tests
# php73-bcmath-7.3.7             The bcmath shared extension for php
# php73-brotli-0.7.0             Brotli extension for PHP
# php73-bsdconv-11.5.0           PHP wrapper for bsdconv
# php73-bz2-7.3.7                The bz2 shared extension for php
# php73-calendar-7.3.7           The calendar shared extension for php
# php73-composer-1.8.6           Dependency Manager for PHP
# php73-ctype-7.3.7              The ctype shared extension for php
# php73-curl-7.3.7               The curl shared extension for php
# . . .

经过研究后,如果您决定需要安装软件包,可以使用 pkg install 命令。大多数PHP Web应用程序将需要其他模块,因此很高兴知道如何搜索它们。

配置Nginx以使用PHP模块

在使用PHP之前,必须先配置它以与Nginx一起使用。

sudo vim /usr/local/etc/nginx/test.conf 并使用以下内容填充文件:

server {

  listen 80;
  server_name SERVER_IP; # Replace with your IP or hostname
  root /usr/local/www/nginx-dist;
  index index.php index.html index.htm;

  location / {
    try_files $uri $uri/ =404;
  }

  location ~ .php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }

}

保存文件并使用:+ W + Q退出

现在我们需要包括 test.conf 在主要 nginx.conf 文件。 Nginx的主要配置文件位于 /usr/local/etc/nginxnginx.conf

sudo vim /usr/local/etc/nginx/nginx.conf 在Vim中打开主配置文件,并将以下行添加到 http {} 块。

include test.conf;

测试Nginx配置:

sudo nginx -t

因为您已经在Nginx中进行了配置更改,所以必须重新加载要应用的服务。否则,Nginx将仍然可以使用早期的配置。

sudo service nginx reload

测试PHP处理

要测试您的系统是否正确配置了PHP,可以创建一个非常基本的PHP脚本。您将调用此脚本 info.php。默认情况下, root 设定为 /usr/local/www/nginx-dist。您可以创建 info.php 该位置下的文件:

sudo vim /usr/local/www/nginx-dist/info.php

将此代码添加到该文件:


导航 https://your_server_IP/ìnfo.php 您将看到以下页面:

安装和设置后,您应该删除 info.php 文件,以避免向公众公开有关服务器的信息。

sudo rm /usr/local/www/nginx-dist/info.php

结论

恭喜,您已经在FreeBSD 12.0 VPS上成功安装了FEMP堆栈。现在,您可以选择下一步做什么。您已经安装了一个平台,该平台将允许您在其之上安装大多数类型的网站和网络软件。

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com