如何在FreeBSD11.0上使用MySQL和PHP安装Lighttpd
介绍
Lighttpd 是一个轻量级的开源 Web 服务器,针对高速环境进行了优化,同时保持低资源使用率。 它是常用 Web 服务器 Nginx 和 Apache 的绝佳替代品。 在本教程中,您将在运行 FreeBSD 11.0 的服务器上安装和配置 Lighttpd。 您还将 MySQL 和 PHP 添加到新的 Lighttpd Web 服务器,以便您可以提供 Web 应用程序以及静态内容。
先决条件
要完成本教程,您需要:
- 运行 FreeBSD 11.0 的服务器。
- 配置为使用
sudo
运行命令的用户帐户。 Digital Ocean FreeBSD Droplet 附带的默认 freebsd 帐户适用于本教程。 要了解有关配置 FreeBSD 的更多信息,请查看 FreeBSD 入门 教程系列。
第 1 步 — 安装 Lighttpd
有几个安装 Lighttpd 的选项,但在本教程中,您将使用软件包进行安装。 此方法比从源安装或通过 Ports 安装更快,并且使用此方法安装的软件易于更新。
要安装 Lighttpd 及其软件包,首先更新存储库信息以确保您拥有最新的可用软件包列表:
sudo pkg update
接下来,下载并安装lighttpd
包:
sudo pkg install lighttpd
输入 y
确认安装。 Lighttpd 将安装。
使用此默认配置,您将在启动服务器时看到此错误:
Output(network.c.260) warning: please use server.use-ipv6 only for hostnames, not without server.bind / empty address; your config will break if the kernel default for IPV6_V6ONLY changes
这是因为默认的 Lighttpd 配置并未完全配置为支持 IPv6。 为避免以后出现意外,请编辑 Lighttpd 的配置文件并禁用对 IPv6 的支持,因为完成本教程不需要它。 如果您决定使用它,您可以在将来启用它:
sudo ee /usr/local/etc/lighttpd/lighttpd.conf
找到此部分:
/usr/local/etc/lighttpd/lighttpd.conf
... ## ## Use IPv6? ## server.use-ipv6 = "enable" ...
将 enable
更改为 disable
:
/usr/local/etc/lighttpd/lighttpd.conf
... ... server.use-ipv6 = "disable" ...
接下来,在配置文件的最后找到这一行:
/usr/local/etc/lighttpd/lighttpd.conf
... ... $SERVER["socket"] == "0.0.0.0:80" { }
注释掉它,因为当我们不使用 IPv6 时它是不必要的:
/usr/local/etc/lighttpd/lighttpd.conf
... ... #$SERVER["socket"] == "0.0.0.0:80" { }
然后保存文件并退出编辑器。
接下来让我们配置 MySQL。
第 2 步 — 安装和配置 MySQL
MySQL 是一个数据库管理系统,它允许为您计划在 Lighttpd Web 服务器上托管的 PHP 应用程序创建数据库。
您将通过它的包安装 MySQL,就像您为 Lighttpd 所做的那样。 然后,您将为 MySQL root 用户设置密码并禁用其他一些测试选项。 这可确保您拥有安全的 MySQL 设置。
由于您已经在步骤 1 中更新了 pkg
存储库信息,您可以快速下载并安装 MySQL 服务器包:
sudo pkg install mysql57-server
按:y
确认安装。
安装完成后,在系统启动时启用 MySQL:
sudo sysrc mysql_enable=yes
然后启动mysql-server
服务:
sudo service mysql-server start
服务启动后,使用 mysql_secure_installation
脚本保护您的 MySQL 安装。 这将删除一些危险的默认设置并稍微锁定对数据库系统的访问。 通过运行启动交互式脚本:
sudo mysql_secure_installation
您将看到以下消息:
OutputSecuring the MySQL server deployment. Connecting to MySQL server using password in '/root/.mysql_secret'
接下来,将询问您是否要配置插件来验证密码:
OutputVALIDATE PASSWORD PLUGIN can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Warning:启用此功能是一种判断。 如果启用,与指定条件不匹配的密码将被 MySQL 拒绝并出现错误。 如果您将弱密码与自动配置 MySQL 用户凭据的软件结合使用,这将导致问题。 禁用验证是安全的,但您应该始终为数据库凭据使用强而唯一的密码。
回答 Y
表示是,或者在不启用的情况下继续进行其他任何操作。
如果您选择启用此功能,系统会要求您选择密码验证级别。 请记住,如果您输入2
,对于最强级别,您在尝试设置任何不包含数字、大小写字母和特殊字符或基于常用密码的密码时都会收到错误消息。字典单词。
OutputThere 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:
接下来,系统会询问您是否要更改 root 用户的密码:
OutputChange the password for root ? ((Press y|Y for Yes, any other key for No) :
按 Y
更改此密码。
如果您启用了密码验证,您将看到现有根密码的密码强度,并询问您是否要更改该密码。
OutputNew password: Re-enter new password: Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :
按 Y
继续输入新密码。
对于其余的问题,您应该按 Y
并在每个提示时按 Enter 键。 这将删除一些匿名用户和测试数据库,禁用远程 root 登录,并加载这些新规则,以便 MySQL 立即尊重我们所做的更改。
然后重启 mysql-server
服务以确保您的实例立即实施安全更改:
sudo service mysql-server restart
一旦 MySQL 实例启动并运行,我们就可以安装和配置 PHP。
第 3 步 — 安装和配置 PHP
PHP 是我们设置的组件,它将处理代码以显示动态内容。 它可以运行脚本,连接到我们的 MySQL 数据库以获取信息,并将处理后的内容交给我们的 Web 服务器进行显示。
再次使用包系统安装 PHP,以及添加 MySQL 支持的 PHP 扩展 mysqli
:
sudo pkg install php71 php71-mysqli
Lighttpd 不像其他一些 Web 服务器那样包含原生 PHP 处理,所以我们将使用 PHP-FPM,它代表“FastCGI 进程管理器”。 我们将配置 Lighttpd 以使用此模块来处理 PHP 请求。 在我们这样做之前,我们需要配置 PHP-FPM 本身。
首先编辑 PHP-FPM 配置文件:
sudo ee /usr/local/etc/php-fpm.d/www.conf
我们将配置 PHP-FPM 以使用 Unix 套接字而不是网络端口进行通信。 这对于在单个服务器内通信的服务更安全。
在配置文件中查找这一行:
/usr/local/etc/php-fpm.d/www.conf
listen = 127.0.0.1:9000
更改此行以使用 php-fpm
套接字:
/usr/local/etc/php-fpm.d/www.conf
listen = /var/run/php-fpm.sock
现在为要创建的套接字设置所有者、组和权限。 查找配置文件的这一部分:
/usr/local/etc/php-fpm.d/www.conf
... ;listen.owner = www ;listen.group = www ;listen.mode = 0660 ...
通过删除每行开头的分号来取消注释以下部分,因此该部分如下所示:
/usr/local/etc/php-fpm.d/www.conf
... listen.owner = www listen.group = www listen.mode = 0660 ...
完成后保存并关闭文件。
接下来,创建一个 php.ini
文件来配置 PHP 的一般行为。 包含两个示例文件:php.ini-production
和 php.ini-development
。 php.ini-production
文件将更接近您的服务器所需,因此将其复制到 /usr/local/etc/php.ini
,PHP 期望找到其配置文件的位置:
sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
使用文本编辑器打开新的 php.ini
文件:
sudo ee /usr/local/etc/php.ini
在配置文件中,找到 cgi.fix_pathinfo
行为部分。 它将被注释掉并默认设置为1
:
/usr/local/etc/php.ini
... ;cgi.fix_pathinfo=1 ...
取消注释此行并将值设置为 0
。 如果未找到传递给进程的文件,这可以防止 PHP 尝试执行部分路径。 这可能被攻击者用来执行恶意代码。
/usr/local/etc/php.ini
... cgi.fix_pathinfo=0 ...
保存文件并退出编辑器。
然后启用php-fpm
服务开机启动:
sudo sysrc php_fpm_enable=yes
然后启动服务:
sudo service php-fpm start
接下来,让我们配置 Lighttpd 以服务 PHP 应用程序。
第 4 步 — 配置 Lighttpd 以服务 PHP 应用程序
在这一步中,您将配置 Lighttpd 以使用 FastCGI 和 PHP-FPM。 这将在 Lighttpd 上启用 PHP,并提供快速高效的 PHP 支持。
首先,启用 FastCGI 模块。 打开 Lighttpd 模块配置文件:
sudo ee /usr/local/etc/lighttpd/modules.conf
找到以下部分:
... [label /usr/local/etc/lighttpd/modules.conf] ## ## FastCGI (mod_fastcgi) ## #include "conf.d/fastcgi.conf" ...
通过删除 #
符号取消注释 include
行。 如果找不到该行,请将其添加到文件末尾。
... [label /usr/local/etc/lighttpd/modules.conf] ## ## FastCGI (mod_fastcgi) ## include "conf.d/fastcgi.conf" ...
保存文件并退出编辑器。
接下来,编辑 FastCGI 配置文件:
sudo ee /usr/local/etc/lighttpd/conf.d/fastcgi.conf
这个文件有几个例子,注释掉了。 将以下配置行添加到文件末尾,将 Lighttpd 配置为使用 FastCGI 和 PHP-FPM 提供 PHP 文件:
/usr/local/etc/lighttpd/conf.d/fastcgi.conf
... fastcgi.server += ( ".php" => (( "socket" => "/var/run/php-fpm.sock", "broken-scriptfilename" => "enable" )) ) ...
接下来,启用 Lighttpd 以在启动时启动。 这样,只要 Web 服务器重新启动,Lighttpd 就会自动启动:
sudo sysrc lighttpd_enable=yes
然后启动lighttpd
服务:
sudo service lighttpd start
现在 PHP 已准备就绪,让我们确保一切正常。
第 5 步 — 测试服务器设置
要测试新配置的 Lighttpd 服务器,首先创建文件夹 /usr/local/www/data
,Lighttpd 将在该文件夹中查找要服务的网页。
sudo mkdir -p /usr/local/www/data
然后在/usr/local/www/data/
文件夹中创建一个info.php
。 此文件将测试 PHP 是否正常工作,并让您在 Web 浏览器中查看有关 Web 服务器设置的信息:
sudo ee /usr/local/www/data/info.php
将此代码添加到文件中:
/usr/local/www/data/info.php
<?php phpinfo(); ?>
保存文件并退出编辑器。
在您的网络浏览器中访问 http://your_server_ip/info.php
。 您将看到如下所示的页面:
此页面显示有关您的操作系统、Web 服务器以及您的 Web 服务器如何处理 PHP 文件的信息。 它还验证您的 Web 服务器是否可以正确地提供 PHP 文件。
如果您没有看到此页面,而是看到 Error 503 Service Not Available,请确保 php-fpm
服务在上一步中正确启动。
一旦您确认一切正常,请删除 info.php
页面,因为它会公开有关您的服务器的信息,您应该保密:
sudo rm /usr/local/www/data/info.php
Web 服务器现在已完全配置并准备就绪。 将您的文件放在 /usr/local/www/data
中以提供服务。
结论
现在 Lighttpd Web 服务器已完全启动并运行,您可以在您的 Web 服务器上托管网页、文档和其他文件。 通过添加 SSL 配置和其他安全功能使您的 Web 服务器更安全。 有关 Lighttpd 的更多信息,请访问 Lighttpd 论坛。