在本教程中,我将描述在FreeBSD 11.x上安装和配置FEMP堆栈的过程。FEMP软件堆栈是一个缩写,代表一组通常安装在Unix/Linux操作系统中的程序,主要用于部署动态web应用程序。在这种情况下,FEMP缩写是指FreeBSD类Unix操作系统,其上安装了以下应用程序:
Nginx web服务器是一种快速增长的流行web服务器,主要用于提供HTML内容,但它也可以为web服务器或其他网络服务提供负载平衡、高可用性或反向代理。
PHP动态编程语言解释器,用于后端操作数据库数据并创建可以包含在纯HTML中的动态web内容。PHP脚本仅在服务器端执行,从不在客户端(浏览器中)执行
Mariadb \ MySQL RDBMS,数据存储在后台,动态处理由PHP处理。在本教程中,我们将安装和使用MariaDB关系数据库管理系统,MySQL的社区分支,支持MySQL数据库,MySQL数据库现在由Oracle拥有和开发。
要求:
FreeBSD 11.x的最小安装。
为网络接口配置的静态IP地址。
配置有root权限或通过root帐户直接访问系统的常规帐户。
最好是配置了最少DNS记录(a和CNAME记录)的公开注册域名。
步骤1-安装MariaDB数据库
第一步,我们将安装MariaDB数据库系统,这是FEMP组件,用于存储和管理网站的动态数据。MariaDB/MySQL是世界上最常用的开源关系数据库之一,与Nginx或Apache web服务器结合使用。这两种服务器都被高度用于创建和开发复杂的web应用程序或动态网站。MariaDB可以直接从PORTS存储库提供的二进制文件安装在FreeBSD中。然而,在FreeBSD Ports数据库部分使用ls命令进行简单搜索,就会发现MariaDB的多个版本,如以下命令输出所示。此外,运行Package Manager pkg命令也会显示相同的结果。
ls -al /usr/ports/databases/ | grep mariadb
pkg search mariadb
![图片[1]_在FreeBSD 11上安装Nginx、MariaDB和PHP(FEMP堆栈)_马特资源网](http://www.pc-maint.com/wp-content/uploads/2025/07/b989414234102409.png)
在本指南中,我们将使用pkg命令安装最新版本的MariaDB数据库和客户端,如下摘录所示。
pkg install mariadb102-server mariadb102-client
MariaDB在系统中完成安装后,发出以下命令以在系统范围内启用MySQL服务器。此外,请确保按照如下所示启动MariaDB守护进程。
sysrc mysql_enable=”YES”
service mysql-server start
接下来,我们需要通过运行mysql_secure_installation脚本来保护MariaDB数据库。在运行脚本时,我们会被问到一系列问题。这些问题的目的是为MySQL引擎提供一定程度的安全性,例如为MySQL根用户设置根密码、删除匿名用户、禁用根用户的远程登录和删除测试数据库。为MySQL root用户选择强密码后,对所有问题都回答“是”,如下面的脚本示例所示。不要将MariaDB数据库根用户与系统根用户混淆。虽然这些帐户具有相同的名称root,但它们并不等同,并且用于不同的目的,一个用于系统管理,另一个用于数据库管理。
/usr/local/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
最后,在您完成MariaDB数据库的安全保护后,通过运行以下命令测试是否允许您从root帐户执行数据库的本地登录。连接到数据库提示符后,只需键入quit或exit即可离开数据库控制台并返回系统用户控制台提示符,如下图所示。
mysql -u root -p
MariaDB> quit
![图片[2]_在FreeBSD 11上安装Nginx、MariaDB和PHP(FEMP堆栈)_马特资源网](http://www.pc-maint.com/wp-content/uploads/2025/07/8f04b14cff102611.png)
在FreeBSD中运行sockstat命令可以快速揭示这样一个事实,即MariaDB对外部网络连接开放,可以通过3306/TCP端口从任何网络远程访问。
sockstat -4 -6
![图片[3]_在FreeBSD 11上安装Nginx、MariaDB和PHP(FEMP堆栈)_马特资源网](http://www.pc-maint.com/wp-content/uploads/2025/07/c4f31b4a1c102633.png)
为了完全禁用与MariaDB的远程网络连接,您只需使用以下命令在/etc/rc.conf文件中添加以下行,即可强制mysql网络套接字绑定到环回接口。
sysrc mysql_args="--bind-address=127.0.0.1"
然后,重新启动MariaDB守护进程以应用更改,并再次执行sockstat命令以显示mysql服务的网络套接字。这一次,MariaDB服务应该只监听localhost:3306套接字上的网络连接。
service mysql-server restart
sockstat -4 -6|grep mysql
![图片[4]_在FreeBSD 11上安装Nginx、MariaDB和PHP(FEMP堆栈)_马特资源网](http://www.pc-maint.com/wp-content/uploads/2025/07/ef04696143102714.png)
如果您正在开发一个需要访问此计算机上数据库的远程web应用程序,请通过从/etc/rc.conf文件中删除或注释行MySQL_args=“–bind-address=127.0.0.1”并重新启动数据库以反映更改来还原到目前为止所做的MySQL套接字更改。在这种情况下,您应该考虑其他替代方案来限制或禁止对MySQL的远程访问,例如在本地运行防火墙,过滤需要远程登录的客户端的IP地址,或者创建具有正确IP地址授权的MySQL用户登录服务器。
步骤2-安装Nginx Web服务器
我们将在FreeBSD中为FEMP堆栈安装的下一个重要守护进程是web服务器,由Nginx服务表示。在FreeBSD中安装Nginx web服务器的过程非常简单。Nginx web服务器可以从FreeBSD 11.x Ports提供的二进制文件安装。在www部分的Ports存储库中进行简单搜索,可以显示Nginx软件可用的预编译版本列表,如下面的命令摘录所示。
ls /usr/ports/www/ | grep nginx
发出包管理命令可以显示与下图所示相同的结果。
pkg search –o nginx
![图片[5]_在FreeBSD 11上安装Nginx、MariaDB和PHP(FEMP堆栈)_马特资源网](http://www.pc-maint.com/wp-content/uploads/2025/07/66dd8f27ef102811.png)
为了在FreeBSD中安装最常见的Nginx版本,请运行以下命令。在安装二进制包时,包管理器会询问您是否同意下载和安装Nginx包。通常,您应该在提示中键入单词yes或y,以便开始安装过程。为了避免出现提示,在发出命令时添加–y标志:pkg–y install nginx。
pkg install nginx
![图片[6]_在FreeBSD 11上安装Nginx、MariaDB和PHP(FEMP堆栈)_马特资源网](http://www.pc-maint.com/wp-content/uploads/2025/07/832f34f9e6102838.png)
在您的系统上安装Nginx web服务器软件后,您应该通过发出以下命令启用并运行该服务。
sysrc nginx_enable=”yes”
service nginx start
![图片[7]_在FreeBSD 11上安装Nginx、MariaDB和PHP(FEMP堆栈)_马特资源网](http://www.pc-maint.com/wp-content/uploads/2025/07/bacebd118a102906.png)
您可以执行sockstat命令来检查Nginx服务是否在您的系统上启动,以及它绑定在哪些网络套接字上。通常,默认情况下,它应该绑定在*:80 TCP套接字上。您可以使用grep命令行过滤器仅显示与nginx服务器匹配的套接字。
sockstat -4 -6 | grep nginx
![图片[8]_在FreeBSD 11上安装Nginx、MariaDB和PHP(FEMP堆栈)_马特资源网](http://www.pc-maint.com/wp-content/uploads/2025/07/e3548a07b2102927.png)
要访问Nginx默认网页,请在网络中的计算机上打开浏览器,并通过HTTP协议导航到服务器的IP地址。如果您已注册域名或在您的场所使用本地DNS服务器,您可以在浏览器的URI字段中写入您的计算机的完全限定域名或域名。浏览器中应显示标题消息“欢迎使用nginx!”以及几行HTML,如下图所示。
![图片[9]_在FreeBSD 11上安装Nginx、MariaDB和PHP(FEMP堆栈)_马特资源网](http://www.pc-maint.com/wp-content/uploads/2025/07/2f4c40a8d3103100.png)
FreeBSD 11.x中Nginx的web文件存储位置是/usr/local/www/nnginx/目录。此目录是指向nginx dist目录的符号链接。要部署网站,请将html或php脚本文件复制到此目录中。要更改Nginx默认的webroot目录,请从/usr/local/etc/Nginx/目录打开Nginx配置文件,并更新根语句行,如下例所示。
nano /usr/local/etc/nginx/nginx.conf
这将是Nginx的新webroot路径:
root /usr/local/www/new_html_directory;
![图片[10]_在FreeBSD 11上安装Nginx、MariaDB和PHP(FEMP堆栈)_马特资源网](http://www.pc-maint.com/wp-content/uploads/2025/07/b66298959d103134.png)
步骤3:安装PHP编程语言
默认情况下,Nginx web服务器不能直接解析PHP脚本,Nginx需要通过FastCGI网关将PHP代码传递给PHP-FPM守护进程,由其解释和执行PHP脚本。为了在FreeBSD中安装PHP-FPM守护进程,请通过发出以下命令搜索可用的PHP预编译二进制包。
ls /usr/ports/lang/ | grep php
pkg search –o php
从FreeBSD Ports存储库中提供的众多PHP版本中,通过发出以下命令选择安装最新版本的PHP解释器,当前为PHP 7.1版本。
pkg install php71
为了安装一些部署复杂web应用程序可能需要的额外PHP扩展,请发出以下命令。官方支持的PHP扩展列表可以通过访问以下链接找到:http://php.net/manual/en/extensions.alphabetical.php
如果您计划基于内容管理系统构建网站,请查看CMS文档,以了解您的系统的要求,特别是需要哪些PHP模块或扩展。
php71-mcrypt mod_php71 php71-mbstring php71-curl php71-zlib php71-gd php71-json
因为我们在设置中运行一个数据库服务器,所以我们还应该安装PHP数据库驱动程序扩展,PHP解释器使用该扩展连接到MariaDB数据库。
pkg install php71-mysqli
接下来,通过编辑PHP-FPM配置文件,更新PHP-FPM用户和组以匹配Nginx运行时用户。将用户和组行变量更改为www,如下面的摘录所示。
cp /usr/local/etc/php-fpm.d/www.conf{,.backup}
nano /usr/local/etc/php-fpm.d/www.conf
将以下行更改为如下所示。
user = www
group = www
![图片[11]_在FreeBSD 11上安装Nginx、MariaDB和PHP(FEMP堆栈)_马特资源网](http://www.pc-maint.com/wp-content/uploads/2025/07/d4a077a386103329.png)
默认情况下,Nginx守护进程以“nobody”系统用户的权限运行。通过编辑/usr/local/etc/Nginx/Nginx.conf文件并更新以下行,将Nginx运行时用户更改为与PHP-FPM运行时用户匹配:
user www;
![图片[12]_在FreeBSD 11上安装Nginx、MariaDB和PHP(FEMP堆栈)_马特资源网](http://www.pc-maint.com/wp-content/uploads/2025/07/1e51c6bf20103349.png)
默认情况下,FreeBSD中的PHP-FPM守护进程在localhost:9000 TCP端口上打开一个处于监听状态的网络套接字。要显示此套接字,您可以使用sockstat命令,如下例所示。
sockstat -4 -6| grep php-fpm
![图片[13]_在FreeBSD 11上安装Nginx、MariaDB和PHP(FEMP堆栈)_马特资源网](http://www.pc-maint.com/wp-content/uploads/2025/07/8946f50f93103409.png)
为了让Nginx web服务器在127.0.0.1:9000网络套接字上与PHP FastCGI网关交换PHP脚本,请打开Nginx配置文件并更新PHP-FPM块,如下图所示。
Nginx的PHP FastCGI网关示例:
location ~ \.php$ {
root /usr/local/www/nginx;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
![图片[14]_在FreeBSD 11上安装Nginx、MariaDB和PHP(FEMP堆栈)_马特资源网](http://www.pc-maint.com/wp-content/uploads/2025/07/17830969ec103434.png)
完成上述所有更改后,通过发出以下命令,基于默认生产文件为PHP创建一个配置文件。您可以通过编辑PHP.ini文件中的变量来更改PHP运行时设置。
ln -s /usr/local/etc/php.ini-production /usr/local/etc/php.ini
最后,为了应用到目前为止所做的所有更改,请在系统范围内启用PHP-FPM守护进程,并通过发出以下命令重新启动PHP-FPM和Nginx服务。
sysrc php_fpm_enable=yes
service php-fpm restart
测试nginx配置是否存在语法错误:
nginx –t
service nginx restart
![图片[15]_在FreeBSD 11上安装Nginx、MariaDB和PHP(FEMP堆栈)_马特资源网](http://www.pc-maint.com/wp-content/uploads/2025/07/e556dcc9c6103522.png)
为了获取FreeBSD中FEMP堆栈可用的当前PHP信息,请通过发出以下命令在服务器文档根目录中创建一个phpinfo.PHP文件。
echo "<?php phpinfo(); ?>" | tee /usr/local/www/nginx/phpinfo.php
然后,打开浏览器,通过访问服务器的域名或公共IP地址后面的/phpinfo.php文件导航到phpinfo.php页面,如下图所示。
![图片[16]_在FreeBSD 11上安装Nginx、MariaDB和PHP(FEMP堆栈)_马特资源网](http://www.pc-maint.com/wp-content/uploads/2025/07/5b7f53ca77103601.png)
就这些!您已在FreeBSD 11中成功安装并配置了FEMP堆栈。环境现在已经准备就绪,并且功能齐全,可以开始在您的场所部署动态web应用程序。
暂无评论内容