如何在 FreeBSD 11.0 上安装带有 MySQL 和 PHP 的 Lighttpd

介绍

Lighttpd是一个轻量级、开源的 Web 服务器,为高速环境优化,同时保持资源使用率低. 它是常用的 Web 服务器 Nginx 和 Apache 的绝佳替代品. 在本教程中,您将在运行 FreeBSD 11.0 的服务器上安装和配置 Lighttpd. 您还将MySQL 和 PHP 添加到新的 Lighttpd Web 服务器中,以便您可以服务 Web 应用程序以及静态内容。

<$>[注] 注: 截至 2022 年 7 月 1 日,DigitalOcean 将不再通过控制面板或 API 支持 FreeBSD Droplets. 但是,您仍然可以使用自定义图像将 FreeBSD Droplets 旋转。

前提条件

要完成本教程,您将需要:

  • 运行 FreeBSD 11.0 的服务器
  • 一个用户帐户配置为运行sudo命令. 对于本教程的目的,用户被称为 freebsd . 有关配置 FreeBSD 的更多信息,请参阅 Getting Started with FreeBSD 教程系列。

步骤 1 - 安装 Lighttpd

安装 Lighttpd 有几种选项,但在本教程中,您将使用安装套件. 此方法比从源头或通过 Ports安装更快,使用此方法安装的软件易于更新。

若要将 Lighttpd 与其包一起安装,请先更新存储库信息,以确保您有最新的可用包列表:

1sudo pkg update

下载并安装lighttpd包:

1sudo pkg install lighttpd

通过键入y来确认安装,Lighttpd 将安装。

使用此默认配置,您将在启动服务器时看到此错误:

1[secondary_label Output]
2(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的支持,因为您不需要它来完成本教程。

1sudo ee /usr/local/etc/lighttpd/lighttpd.conf

查找此部分:

1[label /usr/local/etc/lighttpd/lighttpd.conf]
2...
3##
4## Use IPv6?
5##
6server.use-ipv6 = "enable"
7...

允许更改为禁用:

1[label /usr/local/etc/lighttpd/lighttpd.conf]
2...
3...
4server.use-ipv6 = "disable"
5...

接下来,在配置文件的尽头找到这个行:

1[label /usr/local/etc/lighttpd/lighttpd.conf]
2...
3...
4$SERVER["socket"] == "0.0.0.0:80" { }

评论它,因为当我们不使用IPv6时是不必要的:

1[label /usr/local/etc/lighttpd/lighttpd.conf]
2...
3...
4#$SERVER["socket"] == "0.0.0.0:80" { }

然后保存文件并离开编辑器。

接下来我们来配置MySQL吧。

第2步:安装和配置MySQL

MySQL 是一个数据库管理系统,将允许您在 Lighttpd Web 服务器上托管的 PHP 应用程序创建数据库。

您将通过其包安装MySQL,就像您在Lighttpd中一样。然后您将为MySQL root 用户设置密码,并禁用一些其他测试选项。

由于您已经在步骤 1 中更新了pkg存储信息,您可以快速下载和安装 MySQL 服务器包:

1sudo pkg install mysql57-server

通过按下y来确认安装。

安装完成后,在系统启动时启用MySQL:

1sudo sysrc mysql_enable=yes

然后开始mysql-server服务:

1sudo service mysql-server start

一旦该服务启动,使用mysql_secure_installation脚本来保护您的MySQL安装,这将删除一些危险的默认文件,并稍微阻止访问您的数据库系统。

1sudo mysql_secure_installation

你会看到以下消息:

1[secondary_label Output]
2Securing the MySQL server deployment.
3
4Connecting to MySQL server using password in '/root/.mysql_secret'

接下来,您将被问到是否要配置一个插件来验证密码:

1[secondary_label Output]
2VALIDATE PASSWORD PLUGIN can be used to test passwords
3and improve security. It checks the strength of password
4and allows the users to set only those passwords which are
5secure enough. Would you like to setup VALIDATE PASSWORD plugin?

<$>[warning] 警告 :启用此功能是一种判断呼叫。如果启用,不符合指定的标准的密码将被MySQL错误地拒绝。如果您与自动配置MySQL用户凭证的软件一起使用弱密码,这将导致问题。安全地禁用验证,但您应该始终使用强有力的、独特的数据库凭证密码。

回答Y是的,或其他任何事情,不允许继续。

如果您选择启用此功能,您将被要求选择一个密码验证级别. 请记住,如果您输入2,对于最强的级别,您将收到错误,当您尝试设置任何密码,不包含数字,顶部和底部字母和特殊字符,或基于常见字典单词。

1[secondary_label Output]
2There are three levels of password validation policy:
3
4LOW Length >= 8
5MEDIUM Length >= 8, numeric, mixed case, and special characters
6STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
7
8Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:

接下来,您将被问到是否想要更改 root 用户的密码:

1[secondary_label Output]
2Change the password for root ? ((Press y|Y for Yes, any other key for No) :

Y来更改此密码。

如果您启用了密码验证,则会显示现有根密码的密码强度,并询问您是否要更改该密码。

1[secondary_label Output]
2New password:
3
4Re-enter new password:
5
6Estimated strength of the password: 100
7Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :

Y继续使用新密码。

对于其他问题,你应该按Y并在每个提示键中按Enter。这将删除一些匿名用户和测试数据库,禁用远程根登录,并加载这些新规则,以便MySQL立即尊重我们所做的更改。

然后重新启动mysql-server服务,以确保您的实例立即实施安全更改:

1sudo service mysql-server restart

一旦 MySQL 实例启动并运行,我们就可以安装和配置 PHP。

第3步:安装和配置PHP

PHP是我们设置的组件,它将处理代码以显示动态内容,它可以运行脚本,连接到我们的MySQL数据库以获取信息,并将处理的内容传递给我们的Web服务器以显示。

再一次,使用包系统来安装PHP,以及添加MySQL支持的PHP扩展名mysqli:

1sudo pkg install php71 php71-mysqli

Lighttpd 不会像其他一些 Web 服务器一样包含原生 PHP 处理,所以我们会使用 PHP-FPM,即FastCGI 流程管理器。我们将配置 Lighttpd 以使用此模块来处理 PHP 请求。

开始编辑 PHP-FPM 配置文件:

1sudo ee /usr/local/etc/php-fpm.d/www.conf

我们将配置 PHP-FPM 以使用 Unix 接口而不是网络端口进行通信,这对于在单一服务器内通信的服务更为安全。

在配置文件中搜索此行:

1[label /usr/local/etc/php-fpm.d/www.conf]
2listen = 127.0.0.1:9000

更改此行以使用php-fpm接口:

1[label /usr/local/etc/php-fpm.d/www.conf]
2listen = /var/run/php-fpm.sock

现在为要创建的插槽设置所有者、组和权限。

1[label /usr/local/etc/php-fpm.d/www.conf]
2...
3;listen.owner = www
4;listen.group = www
5;listen.mode = 0660
6...

通过在每个行开始时删除半色彩来解析下面的部分,所以该部分看起来像这样:

1[label /usr/local/etc/php-fpm.d/www.conf]
2...
3listen.owner = www
4listen.group = www
5listen.mode = 0660
6...

保存并关闭文件,当你完成。

接下来,创建一个php.ini文件,将配置PHP的一般行为. 包含两个样本文件:php.ini-productionphp.ini-developmentphp.ini-production文件将更接近你想要的服务器,所以将其复制到/usr/local/etc/php.ini,PHP希望找到其配置文件的位置:

1sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

使用您的文本编辑器打开新的 php.ini 文件:

1sudo ee /usr/local/etc/php.ini

在配置文件中,找到cgi.fix_pathinfo行为的部分,它将被评论并默认设置为1:

1[label /usr/local/etc/php.ini]
2...
3;cgi.fix_pathinfo=1
4...

删除此行并将值设置为0。这将防止PHP尝试执行路径的部分,如果没有找到被传入进程的文件。

1[label /usr/local/etc/php.ini]
2...
3cgi.fix_pathinfo=0
4...

保存文件并离开编辑器。

然后启用php-fpm服务开始启动:

1sudo sysrc php_fpm_enable=yes

然后开始服务:

1sudo service php-fpm start

接下来,让我们配置 Lighttpd 来服务 PHP 应用程序。

步骤 4 — 配置 Lighttpd 以服务 PHP 应用程序

在此步骤中,您将配置Lighttpd以使用FastCGI和PHP-FPM,从而在Lighttpd上启用PHP,并提供快速高效的PHP支持。

首先,启用 FastCGI 模块,打开 Lighttpd 模块配置文件:

1sudo ee /usr/local/etc/lighttpd/modules.conf

查找下列部分:

1...
2[label /usr/local/etc/lighttpd/modules.conf]
3##
4## FastCGI (mod_fastcgi)
5##
6#include "conf.d/fastcgi.conf"
7...

通过删除# 符号,删除包括行,如果找不到该行,请将其添加到文件的末尾。

1...
2[label /usr/local/etc/lighttpd/modules.conf]
3##
4## FastCGI (mod_fastcgi)
5##
6include "conf.d/fastcgi.conf"
7...

保存文件并离开编辑器。

接下来,编辑 FastCGI 配置文件:

1sudo ee /usr/local/etc/lighttpd/conf.d/fastcgi.conf

将下列配置行添加到文件的末尾,该文件将 Lighttpd 配置为用 FastCGI 和 PHP-FPM 服务 PHP 文件:

1[label /usr/local/etc/lighttpd/conf.d/fastcgi.conf]
2...
3fastcgi.server += ( ".php" =>
4        ((
5                "socket" => "/var/run/php-fpm.sock",
6                "broken-scriptfilename" => "enable"
7        ))
8)
9...

接下来,启用Lighttpd在启动时启动,这样Lighttpd在重新启动Web服务器时都会自动启动:

1sudo sysrc lighttpd_enable=yes

然后开始lighttpd服务:

1sudo service lighttpd start

现在PHP已经准备好了,让我们确保一切都起作用。

步骤 5 – 测试服务器设置

要测试新配置的 Lighttpd 服务器,首先创建文件夹 /usr/local/www/data,这就是 Lighttpd 将寻找 Web 页面来服务的地方。

1sudo mkdir -p /usr/local/www/data

然后在/usr/local/www/data/文件夹中创建一个info.php。这个文件将测试PHP是否在工作,并允许您在Web浏览器中查看有关Web服务器设置的信息:

1sudo ee /usr/local/www/data/info.php

将此代码添加到文件中:

1[label /usr/local/www/data/info.php]
2<?php phpinfo(); ?>

保存文件并离开编辑器。

请访问您的网页浏览器中的http://your_server_ip/info.php,您将看到一个看起来像这样的页面:

The PHP Info page

此页面显示了有关您的操作系统、Web服务器以及您的Web服务器如何处理PHP文件的信息,还验证了您的Web服务器是否能够正确地服务PHP文件。

如果您看不到此页面,而看不到 Error 503 Service Not Available ,请确保php-fpm服务在上一步中正确启动。

一旦你验证了事情的运行,删除info.php页面,因为它暴露了你应该保密的服务器信息:

1sudo rm /usr/local/www/data/info.php

现在,网页服务器已完全配置并准备好运行,将您的文件放入 /usr/local/www/data 以服务它们。

结论

现在,Lighttpd Web 服务器已完全启动并运行,您可以在您的 Web 服务器上托管网页、文档和其他文件. 通过添加 SSL 配置和其他安全功能来使您的 Web 服务器更安全。

Published At
Categories with 技术
comments powered by Disqus