Lighttpd是一款轻量级的开源Web服务器,针对高速环境进行了优化,同时保持较低的资源使用率。它是常用Web服务器Nginx和Apache的绝佳替代品。在本教程中,您将在运行FreeBSD 11.0的服务器上安装和配置Lighttpd。您还可以将MySQL和PHP添加到新的Lighttpd Web服务器中,以便您可以提供Web应用程序以及静态内容。
要完成本教程,您需要:
安装Lighttpd有几个选项,但在本教程中,您将使用软件包进行安装。此方法比从源安装更快,并且使用此方法安装的软件易于更新。
要使用其软件包安装Lighttpd,请首先更新存储库信息以确保您拥有最新的可用软件包列表:
$ sudo pkg update
接下来,下载并安装lighttpd包:
$ sudo pkg install lighttpd
键入确认安装y
。Lighttpd将安装。
使用此默认配置,启动服务器时将看到此错误:
(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。
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
您将看到以下消息:
Securing the MySQL server deployment.
Connecting to MySQL server using password in '/root/.mysql_secret'
接下来,系统将询问您是否要配置插件以验证密码:
VALIDATE 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
,对于最强级别,在尝试设置任何不包含数字,大写和小写字母以及特殊字符的密码或基于常用字典单词的密码时,您将收到错误。
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:
接下来,系统将询问您是否要更改root用户的密码:
Change the password for root ? ((Press y|Y for Yes, any other key for No) :
按Y
更改此密码。
如果您启用了密码验证,则会显示现有root密码的密码强度,并询问您是否要更改该密码。
New 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。
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 socket 而不是网络端口进行通信。这对于在单个服务器内进行通信的服务更安全。
在配置文件中查找此行:
/usr/local/etc/php-fpm.d/www.conf
listen = 127.0.0.1:9000
更改此行以使用php-fpm
socket:
/usr/local/etc/php-fpm.d/www.conf
listen = /var/run/php-fpm.sock
现在设置将要创建的socket的所有者,组和权限。查找配置文件的这一部分:
/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应用程序提供服务。
在此步骤中,您将配置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已准备就绪,让我们确保一切正常。
要测试新配置的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文件。
如果您没有看到此页面,而是看到错误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论坛。可以直接使用腾讯云服务器和云数据省去繁琐的配置过程。
参考文献:《How to Install Lighttpd with MySQL and PHP on FreeBSD 11.0》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。