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

介绍

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

先决条件

要完成本教程,您需要:

  • 运行FreeBSD 11.0的服务器。
  • 配置为使用sudo运行命令的用户帐户。 DigitalOceanFreeBSD Droplet附带的freebsd默认帐户将适用于本教程。 要了解有关配置FreeBSD的更多信息,请参阅FreeBSD入门教程系列。

第1步 - 安装Lighttpd

有几种安装Lighttpd的选项,但在本教程中,您将使用软件包进行安装。 这种方法比从源或通过端口安装更快,并且使用这种方法安装的软件很容易更新。

要使用其软件包安装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

按:确认安装。

安装完成后,在系统启动时启用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?

警告 :启用此功能是一个判断呼叫。 如果启用,与指定条件不符的密码将被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更改此密码。

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

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 Process Manager”。 我们将配置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-productionphp.ini-developmentphp.ini-production文件将更接近您想要的服务器,因此将其复制到/usr/local/etc/php.ini希望找到其配置文件的位置:

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

找到以下部分:

/usr/local/etc/lighttpd/modules.conf

...
##
## FastCGI (mod_fastcgi)
##
#include "conf.d/fastcgi.conf"
...

通过删除#符号取消对include行的注释。 如果找不到该行,请将其添加到文件的末尾。

/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


  

保存文件并退出编辑器。

在您的网络浏览器中访问http:// your_server_ip /info.php 。 你会看到一个如下所示的页面:

PHP信息页面

此页面显示有关您的操作系统,Web服务器以及Web服务器如何处理PHP文件的信息。 它还验证您的Web服务器可以正确地提供PHP文件。

如果您没有看到此页面,而是看到错误503服务不可用 ,请确保php-fpm服务在上一步骤中正确启动。

一旦验证了这些功能,请删除info.php页面,因为它暴露了您应该保持私有的服务器信息:

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

Web服务器现已完全配置,随时准备就绪。 将您的文件放在/usr/local/www/data中。

结论

现在,Lighttpd Web服务器完全启动并运行,您可以在Web服务器上托管网页,文档和其他文件。 通过添加SSL配置和其他安全功能,使您的Web服务器更安全。 有关Lighttpd的更多信息,请访问Lighttpd论坛

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏