如何在FreeBSD上安装Nginx,MariaDB和PHP(FEMP)

本教程将指导您如何安装和配置FBEMP(Nginx,MariaDB和PHP)通常在FreeBSD 11.x最新版本中引用LEMP。

本教程将指导您如何在FreeBSD 11.x最新版本中安装和配置FBEMP。 FBEMP是描述以下软件集合的缩写:

FreeBSD 11.1 Unix式分发,Nginx Web服务器,MariaDB关系数据库管理系统(MySQL社区分支)以及在服务器端运行的PHP动态编程语言。

要求

  1. 安装FreeBSD 11.x
  2. FreeBSD安装后的10个事情

第1步:在FreeBSD上安装Nginx Web Server

1.我们为FreeBSD中的FBEMP安装的第一项服务是由Nginx软件代理的Web服务器。

Nginx Web服务器在FreeBSD 11.x PORTS中提供了更多预编译的软件包。 要从Ports存储库获取Nginx二进制文件列表,请在服务器终端中发出以下命令。

# ls /usr/ports/www/ | grep nginx
# pkg search -o nginx
查找Nginx包

查找Nginx包

2.在这个特殊配置中,我们将通过发出以下命令来安装Nginx的主包版本。 pkg包管理将询问您是否要继续安装nginx包。 回答yes(在命令行中)为了开始安装过程。

# pkg install nginx
在FreeBSD上安装Nginx

在FreeBSD上安装Nginx

3.在您的系统中安装Nginx Web服务器软件包后,执行以下命令,以便在系统中启用守护程序并启动服务。

# sysrc nginx_enable="yes"
# service nginx start
在FreeBSD上启动并启用Nginx

在FreeBSD上启动并启用Nginx

4.接下来,使用sockstat命令,通过发出以下命令,验证Nginx服务网络套接字(如果它们在80 / TCP端口上绑定)。 sockstat命令的输出将通过grep实用程序进行管道传递,以便将返回的结果仅减少到nginx字符串。

# sockstat -4 | grep nginx

5.最后,在网络上的桌面计算机上打开浏览器,并通过HTTP协议访问Nginx默认网页。 在浏览器的URL中写入机器的FQDN或您的域名或服务器的IP地址,以请求Nginx Web服务器默认网页。 消息“ 欢迎来到nginx! “应该在浏览器中显示,如下图所示。

http://yourdomain.com
http://your_server_IP
http://your_machine_FQDN
在FreeBSD上验证Nginx

在FreeBSD上验证Nginx

6.位于/ usr / local / www / nginx / absolute系统路径中的Nginx Web内容的默认的weboot目录。 在此位置,您应该为您的网站创建,复制或安装Web内容文件,例如.html.php文件。

要更改此位置,请编辑nginx主配置文件并更改根指令以反映您的新webroot路径。

# nano /usr/local/etc/nginx/nginx.conf

在这里,搜索并更新以下行以反映您的新webroot路径:

root	/path/to/new/webroot;

第2步:在FreeBSD上安装PHP

7.Apache HTTP服务器不同,Nginx不具备本地处理PHP代码的功能。 作为回报,Nginx Web服务器将PHP请求传递给PHP解释器,例如检查并执行代码的php-fpm FastCGI守护程序。 所得到的代码然后返回到Nginx,Nginx将代码重新组合到所请求的html格式,并将代码进一步发送到访问者Web浏览器。

FreeBSD 11.x端口存储库提供PHP编程语言的多种二进制版本,如PHP 5.6PHP 7.0PHP 7.1版本。 为了在FreeBSD 11.x中显示所有可用的预编译PHP版本,请运行以下命令。

# pkg search -o php
# ls /usr/ports/lang/ | grep php

8.您可以选择安装您最适合您在系统中运行的Web应用程序的任何版本的PHP。 但是,在本指南中,我们将安装PHP最新版本。

要安装PHP 7.1发行版和各种Web应用程序所需的一些PHP重要模块,请运行以下命令。

# pkg install php71 php71-mysqli php71-mcrypt php71-zlib php71-gd php71-json mod_php71 php71-mbstring php71-curl

9.在系统中安装PHP软件包后,打开Nginx的PHP-FPM配置文件,并调整用户和组的值以匹配Nginx运行时用户( www)上的值 首先,使用以下命令备份文件。

# cp /usr/local/etc/php-fpm.d/www.conf{,.backup}

然后,打开文件并更新以下行,如下面的示例所示。

user = www
group = www
在FreeBSD上配置PHP-FPM

在FreeBSD上配置PHP-FPM

另外,通过发出以下命令创建一个用于生产的PHP配置文件。 在此文件中,您可以进行自定义更改,这些更改将在运行时应用于PHP解释器。

# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

例如,更改PHP解释器的date.timezone设置,以便更新您的机器物理位置,如下面的示例所示。 PHP时区列表可以在这里找到: http : //php.net/manual/en/timezones.php

# vi /usr/local/etc/php.ini

添加以下时区(根据您的国家/地区设置时区)。

date.timezone = Europe/London

您还可以调整其他PHP变量,例如上传文件的最大文件大小,这可以通过修改以下值来增加:

upload_max_filesize = 10M
post_max_size = 10M

11.之后,您已经进行了PHP的自定义设置,启用和启动PHP-FPM守护程序,以通过发出以下命令来应用新的配置。

# sysrc php_fpm_enable=yes
# service php-fpm start
在FreeBSD上启动和启用PHP-FPM

在FreeBSD上启动和启用PHP-FPM

12.默认情况下,FreeBSD中的PHP-FPM守护程序绑定在端口9000 / TCP上的本地网络套接字上。 要显示PHP-FPM网络套接字,请执行以下命令。

# sockstat -4 -6| grep php-fpm

13.为了使Nginx Web服务器将PHP脚本传递给正在监听127.0.0.1:9000套接字的FastCGI网关服务器,请打开Nginx主配置文件,并添加以下代码块,如下面的示例所示。

# vi /usr/local/etc/nginx/nginx.conf

nginx的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;
}
在FreeBSD上为Nginx配置FastCGI

在FreeBSD上为Nginx配置FastCGI

14.为了查看服务器当前的PHP信息,通过发出以下命令,在Nginx weboot路径中创建一个info.php文件。

# echo "<?php phpinfo(); ?>" | tee /usr/local/www/nginx/info.php

15.然后,测试并重新启动Nginx守护程序以应用PHP FastCGI设置,并在浏览器中访问info.php页面。

# nginx -t # Test nginx configuration file for syntax errors
# service nginx restart

相应地在以下链接中替换IP地址或域名。 PHP信息页应显示如下图所示的信息。

http://yourdomain.com/info.php
http://server_IP-or-FQDN/info.php
检查PHP信息在FreeBSD

检查PHP信息在FreeBSD

第3步:在FreeBSD上安装MariaDB

16.数据库中FEMP中最后一个组件丢失。 MariaDB / MySQL是用于部署动态网站的Nginx Web服务器最相关的开源RDBMS软件之一。

实际上, MariaDB / MySQL是世界上最常用的关系数据库之一。 通过FreeBSD Ports搜索,您可以找到多个版本的MariaDB / MySQL

在本指南中,我们将安装MariaDB数据库,它是MySQL数据库的社区分支。 要搜索可用版本的MariaDB ,请在终端中发出以下命令。

# ls -al /usr/ports/databases/ | grep mariadb
# pkg search mariadb
查找MariaDB包

查找MariaDB包

17.要安装最新版本的MariaDB数据库服务器,请执行以下命令。 您还应该安装PHP脚本用于连接到MySQL的PHP​​关系数据库驱动程序模块。

# pkg install mariadb102-server php71-mysqli

18.数据库安装完成后,启动MySQL守护程序并运行以下命令启动数据库服务。

# sysrc mysql_enable="YES" 
# service mysql-server start

另外,为了加载MySQL驱动程序扩展,请确保重新启动PHP-FPM守护程序。

# service php-fpm restart
20. On the next step, secure MariaDB database by launching mysql_secure_installation script. Use the below sample of the installation script in order to answer the questions. Basically, say yes (y) for all asked questions to secure the database and type a strong password for MySQL root user.
# /usr/local/bin/mysql_secure_installation
MySQL安全安装脚本输出
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!

21.要从控制台测试MariaDB数据库连接,请执行以下命令。

# mysql -u root -p -e "show status like ‘Connections’"

22.为了进一步保证MariaDB在默认情况下监听0.0.0.0:3306/TCP套接字上的传入网络连接,请执行以下命令强制服务在环回接口上绑定,并完全禁止远程访问。 之后,重新启动MySQL服务以应用新的配置。

# sysrc mysql_args="--bind-address=127.0.0.1"
# service mysql-server restart
将MariaDB绑定到环回地址

将MariaDB绑定到环回地址

通过运行netstat命令验证localhost绑定是否成功应用,如下例所示。

# netstat -an -p tcp

就这样! 您已经在FreeBSD中成功安装了Nginx Web服务器,MariaDB关系数据库和PHP服务器端编程语言。 您现在可以开始构建动态网页来向访问者提供Web内容。