如何在FreeBSD 11.0上安装LighttpdMySQL和PHP

介绍

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

准备

要完成本教程,您需要:

  • 运行FreeBSD 11.0的服务器,具有sudo权限的用户。

第一步 - 安装Lighttpd

安装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

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

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-fpmsocket:

/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-productionphp.ini-developmentphp.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以服务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

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》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

干货!Hibernate事务and并发问题处理

1.事务介绍: 1.1.事务的定义: 事务就是指作为单个逻辑工作单元执行的一组数据操作,这些操作要么必须全部成功,要么必须全部失败,以保证数据的一致性和完整性。...

325100
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Pydio托管文件共享服务器

随着云的采用增加,越来越多的数据被远程存储。从音乐到图片再到个人文档,很多人都将文件上传到他们不管理的服务器上。如果您希望将文件保存在您控制的服务器上,则可以使...

40200
来自专栏CaiRui

linux+Nginx+Mysql+Php

LNMP简介 LAMP(Linux apache mysql php)---比较早的web服务。 LNMP(Linux nginx mysql php)---比...

34690
来自专栏java学习

maven常用命令集合(收藏大全)

如果你是初学者,或者是自学者!你可以加小编微信(xxf960326)!小编可以给你学习上,工作上的一些建议以及可以给你(免费)提供学习资料!最重要我们还可以交个...

10810
来自专栏我有一个梦想

Python 项目实践三(Web应用程序)第五篇

 接着上节继续学习,在这一节,我们将建立一个用户注册和身份验证系统,让用户能够注册账户,进而登录和注销。我们将创建一个新的应用程序,其中包含与处理用户账户相关的...

23080
来自专栏专注于主流技术和业务

Jenkins构建maven项目:找不到本地依赖JAR包的解决办法

在Springboot项目中,使用Jenkins自动检测SVN自动构建发布项目,但是有些jar需要本地引入,无法从maven服务器下载,因为这些jar包是引用其...

1.3K20
来自专栏冷冷

Spring 支持的事务隔离级别

并发事务所导致的问题:     当同一个应用程序或者不同应用程序中的多个事务在同一个数据集上并发执行时, 可能会出现许多意外的问题 并发事务所导致的问题可以分为...

20990
来自专栏运维

系统重启后ngix reload不生效原因分析

这是一种比较少见,困扰我很久的问题,虽然这个问题很简单,但是找到根本原因还是费了不少时间,现在把分析过程分享如下。

9520
来自专栏程序员同行者

maven搭建详解

15220
来自专栏刺客博客

PHP利用淘宝IP接口获取用户IP所在地

最近在研究PHP解析JSON,怎奈技术不过关,问了一下相关同学,获取到了解决办法,废话不多,直接上代码:

22210

扫码关注云+社区

领取腾讯云代金券