如何在FreeBSD12.0上安装Apache、MySQL和PHP(FAMP)堆栈
作为 Write for DOnations 计划的一部分,作者选择了 Free and Open Source Fund 来接受捐赠。
介绍
FAMP 堆栈类似于 Linux 上的 LAMP 堆栈,是一组开源软件,通常安装在一起以使 FreeBSD 服务器能够托管动态网站和 Web 应用程序。 FAMP 是一个首字母缩写词,代表 F[X40X]reeBSD(操作系统)、Apache(Web 服务器)、MySQL(数据库服务器)和 PHP(处理动态 PHP 内容)。
在本指南中,我们将使用 FreeBSD 包管理器 pkg
在 FreeBSD 12.0 云服务器上安装 FAMP 堆栈。
先决条件
在开始本指南之前,您需要以下内容:
- FreeBSD 12.0 Droplet。
- 访问具有 root 权限(或使用 sudo 允许)的用户以进行配置更改。
- 使用本教程在 新 FreeBSD 12.0 服务器的推荐步骤 上配置的防火墙。 确保在设置过程中打开端口
80
和443
。 - 建议熟悉 CLI(命令行界面)。 FreeBSD 的 vi 编辑器具有与 vim 几乎相同的 语法。
第 1 步 — 安装 Apache
Apache Web 服务器是目前世界上最流行的 Web 服务器,这使其成为托管网站的绝佳选择。
您可以使用 FreeBSD 的包管理器 pkg
安装 Apache。 包管理器允许您从 FreeBSD 维护的存储库中轻松安装大多数软件。 您可以在此处 了解有关 如何使用 pkg 的更多信息。
要使用 pkg
安装 Apache 2.4,请使用以下命令:
sudo pkg install apache24
在确认提示处输入 y
以安装 Apache 及其依赖项。
要启用 Apache 作为服务,请将 apache24_enable="YES"
添加到 /etc/rc.conf
文件。 您将使用 sysrc
命令来做到这一点:
sudo sysrc apache24_enable="YES"
现在启动 Apache:
sudo service apache24 start
要检查 Apache 是否已启动,您可以运行以下命令:
sudo service apache24 status
结果,您将看到类似于以下内容的内容:
Outputapache24 is running as pid 20815.
您可以通过在 Web 浏览器中访问服务器的公共 IP 地址来立即进行抽查,以验证一切是否按计划进行。 如果您还没有此信息,请参阅下一个标题下的注释以了解您的公共 IP 地址是什么:
http://your_server_IP_address/
您将看到默认的 FreeBSD Apache 网页,该网页用于测试目的。 您将看到:It Works!,这表明您的 Web 服务器已正确安装。
如何找到您的服务器的公共 IP 地址
如果您不知道服务器的公共 IP 地址是什么,可以通过多种方式找到它。 通常,这是您用于通过 SSH 连接到服务器的地址。
如果您使用的是 DigitalOcean,您可以在控制面板中查找服务器的 IP 地址。 您还可以通过以下命令从服务器本身使用 DigitalOcean 元数据服务:curl -w "\n" http://169.254.169.254/metadata/v1/interfaces/public/0/ipv4/address
。
查找 IP 地址的更通用方法是在服务器本身上使用 ifconfig
命令。 ifconfig
命令将打印出有关您的网络接口的信息。 为了将输出范围缩小到仅服务器的公共 IP 地址,请使用以下命令(请注意,突出显示的部分是网络接口的名称,可能会有所不同):
ifconfig vtnet0 | grep "inet " | awk '{ print $2; exit }'
您还可以使用 curl
联系外部方,例如 icanhazip,告诉您它如何看待您的服务器。 这是通过询问特定服务器您的 IP 地址是什么来完成的:
curl http://icanhazip.com
现在您有了公共 IP 地址,您可以在 Web 浏览器的地址栏中使用它来访问您的 Web 服务器。
第 2 步 — 安装 MySQL
现在您的 Web 服务器已启动并运行,是时候安装关系数据库管理系统 MySQL 了。 MySQL 服务器将组织并提供对您的服务器可以存储信息的数据库的访问。
同样,您可以使用 pkg
来获取和安装您的软件。
要使用 pkg
安装 MySQL 8.0,请使用以下命令:
sudo pkg install mysql80-server
在确认提示处输入 y
以安装 MySQL 服务器和客户端软件包。
要将 MySQL 服务器作为服务启用,请将 mysql_enable="YES"
添加到 /etc/rc.conf
文件。 您可以使用 sysrc
命令来做到这一点:
sudo sysrc mysql_enable="YES"
现在使用以下命令启动 MySQL 服务器:
sudo service mysql-server start
您可以验证服务是否已启动并正在运行:
sudo service mysql-server status
您将阅读类似于以下内容的内容:
Outputmysql is running as pid 21587.
现在您的 MySQL 数据库正在运行,您将需要运行一个简单的安全脚本,该脚本将删除一些危险的默认设置并稍微限制对您的数据库系统的访问。 通过运行以下命令启动交互式脚本:
sudo mysql_secure_installation
提示将询问您是否要设置密码。 由于您刚刚安装了 MySQL,您很可能没有,因此请输入 Y
并按照说明进行操作:
Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: y There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0 Please set the password for root here. New password: password Re-enter new password: password Estimated strength of the password: 50 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
对于其余的问题,您应该在每个提示符下按 y
键以接受推荐的安全值。 这将删除一些示例用户和数据库,禁用远程 root 登录,并加载这些新规则,以便 MySQL 立即尊重您所做的更改。
至此,您的数据库系统现已设置完毕,您可以继续安装 PHP。
第 3 步 — 安装 PHP
PHP 是您设置的组件,它将处理代码以显示动态内容。 它可以运行脚本,连接到 MySQL 数据库以获取信息,并将处理后的内容交给 Web 服务器显示。
您可以再次利用 pkg
系统来安装您的组件。 您还将包含 mod_php
、php-mysql
和 php-mysqli
包。
要使用 pkg
安装 PHP 7.3,请运行以下命令:
sudo pkg install php73 php73-mysqli mod_php73
在确认提示处输入 y
。 这将安装 php73
、mod_php73
和 php73-mysqli
包。
现在使用以下命令将示例 PHP 配置文件复制到适当位置:
sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
现在运行 rehash
命令重新生成系统缓存的有关已安装可执行文件的信息:
rehash
在使用 PHP 之前,您必须将其配置为与 Apache 一起使用。
安装 PHP 模块(可选)
为了增强 PHP 的功能,您可以选择安装一些附加模块。
要查看 PHP 7.3 模块和库的可用选项,您可以键入:
pkg search php73
结果将主要是您可以安装的 PHP 7.3 模块:
Outputphp73-7.3.5 PHP Scripting Language 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.5 The bcmath shared extension for php php73-brotli-0.6.2 Brotli extension for PHP php73-bsdconv-11.5.0 PHP wrapper for bsdconv php73-bz2-7.3.5 The bz2 shared extension for php php73-calendar-7.3.5 The calendar shared extension for php php73-composer-1.8.4 Dependency Manager for PHP php73-ctype-7.3.5 The ctype shared extension for php php73-curl-7.3.5 The curl shared extension for php php73-dba-7.3.5 The dba shared extension for php php73-deployer-6.4.3 Deployment tool for PHP php73-dom-7.3.5 The dom shared extension for php ...
要获取有关每个模块功能的更多信息,您可以搜索互联网,也可以通过键入以下内容查看包的详细说明:
pkg search -f package_name
将会有很多输出,其中一个名为 Comment 的字段将解释模块提供的功能。
例如,要找出 php73-calendar
包的作用,您可以输入:
pkg search -f php73-calendar
连同大量其他信息,您会发现如下所示的内容:
Outputphp73-calendar-7.3.5 Name : php73-calendar Version : 7.3.5 ... Comment : The calendar shared extension for php ...
如果经过研究,您决定要安装一个软件包,您可以使用 pkg install
命令来安装。
例如,如果您决定 php73-calendar
是您需要的东西,您可以键入:
sudo pkg install php73-calendar
如果你想一次安装多个模块,你可以通过在 pkg install
命令之后列出每个模块,用空格分隔,如下所示:
sudo pkg install package1 package2 ...
第 4 步 — 配置 Apache 以使用 PHP 模块
Apache HTTP 有一个专用目录,用于将特定模块的配置文件写入其中。 您将为 Apache HTTP 编写其中一个配置文件来“说”PHP。
sudo vi /usr/local/etc/apache24/modules.d/001_mod-php.conf
将以下行添加到该文件中:
/usr/local/etc/apache24/modules.d/001_mod-php.conf
<IfModule dir_module> DirectoryIndex index.php index.html <FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch> </IfModule>
现在检查 Apache 的 HTTP 配置是否完好:
sudo apachectl configtest
您将看到以下输出:
OutputPerforming sanity check on apache24 configuration: Syntax OK
因为您已经在 Apache 中进行了配置更改,所以您必须重新启动服务才能应用这些更改。 否则 Apache 仍然可以使用之前的配置。
sudo apachectl restart
现在您可以继续在您的系统上测试 PHP。
第 5 步 — 测试 PHP 处理
为了测试您的系统是否为 PHP 正确配置,您可以创建一个非常基本的 PHP 脚本。
您将调用此脚本 info.php
。 为了让 Apache 找到并正确提供文件,它必须保存在一个特定的目录下——DocumentRoot
——当用户访问 Web 服务器时,Apache 将在该目录中查找文件。 DocumentRoot
的位置在您之前修改的 Apache 配置文件 (/usr/local/etc/apache24/httpd.conf
) 中指定。
默认情况下,DocumentRoot
设置为 /usr/local/www/apache24/data
。 您可以通过键入以下命令在该位置下创建 info.php
文件:
sudo vi /usr/local/www/apache24/data/info.php
这将打开一个空白文件。 将此 PHP 代码插入文件中:
/usr/local/www/apache24/data/info.php
<?php phpinfo(); ?>
保存并退出。
现在您可以测试您的 Web 服务器是否可以正确显示 PHP 脚本生成的内容。 要尝试此操作,您可以在 Web 浏览器中访问此页面:
http://your_server_IP_address/info.php
您将看到一个 PHP FreeBSD 测试页面。
此页面从 PHP 的角度为您提供有关服务器的信息。 它对于调试和确保正确应用您的设置很有用。
如果这成功了,那么您的 PHP 正在按预期工作。
您应该在此测试后删除此文件,因为它实际上可能会将有关您的服务器的信息提供给未经授权的用户。 为此,您可以键入:
sudo rm /usr/local/www/apache24/data/info.php
如果您以后需要再次访问该信息,您可以随时重新创建此页面。
结论
现在您已经安装了 FAMP 堆栈,接下来您有很多选择。 您已经安装了一个平台,该平台允许您在服务器上安装大多数类型的网站和 Web 软件。