前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在FreeBSD 11.0上安装LighttpdMySQL和PHP

如何在FreeBSD 11.0上安装LighttpdMySQL和PHP

原创
作者头像
宇cccc
发布2018-08-09 10:49:27
1.1K0
发布2018-08-09 10:49:27
举报

介绍

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

准备

要完成本教程,您需要:

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

第一步 - 安装Lighttpd

安装Lighttpd有几个选项,但在本教程中,您将使用软件包进行安装。此方法比从源安装更快,并且使用此方法安装的软件易于更新。

要使用其软件包安装Lighttpd,请首先更新存储库信息以确保您拥有最新的可用软件包列表:

代码语言:txt
复制
$ sudo pkg update

接下来,下载并安装lighttpd包:

代码语言:txt
复制
$ sudo pkg install lighttpd

键入确认安装y。Lighttpd将安装。

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

代码语言:txt
复制
(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的支持,因为您不需要它来完成本教程。如果您决定使用它,您可以在将来启用它:

代码语言:txt
复制
$ sudo ee /usr/local/etc/lighttpd/lighttpd.conf

找到此部分:

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

代码语言:txt
复制
...
##
## Use IPv6?
##
server.use-ipv6 = "enable"
...

更改enable到disable:

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

代码语言:txt
复制
...
...
server.use-ipv6 = "disable"
...

接下来,在配置文件的最后找到此行:

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

代码语言:txt
复制
...
...
$SERVER["socket"] == "0.0.0.0:80" { }

请注意,因为当我们不使用IPv6时,这是不必要的:

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

代码语言:txt
复制
...
...
#$SERVER["socket"] == "0.0.0.0:80" { }

然后保存文件并退出编辑器。

让我们接下来配置MySQL。

第二步 - 安装和配置MySQL

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

您将通过其软件包安装MySQL,就像您对Lighttpd所做的那样。然后,您将为MySQL root用户设置密码并禁用其他一些测试选项。这可确保您拥有安全的MySQL设置。

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

代码语言:txt
复制
$ sudo pkg install mysql57-server

确认安装按:y

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

代码语言:txt
复制
$ sudo sysrc mysql_enable=yes

然后启动mysql-server服务:

代码语言:txt
复制
$ sudo service mysql-server start

服务启动后,使用mysql_secure_installation脚本保护MySQL的安装。这将删除一些危险的默认值并锁定对数据库系统的访问。运行以下命令启动交互式脚本:

代码语言:txt
复制
$ sudo mysql_secure_installation

您将看到以下消息:

代码语言:txt
复制
Securing the MySQL server deployment.
Connecting to MySQL server using password in '/root/.mysql_secret'

接下来,系统将询问您是否要配置插件以验证密码:

代码语言:txt
复制
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,对于最强级别,在尝试设置任何不包含数字,大写和小写字母以及特殊字符的密码或基于常用字典单词的密码时,您将收到错误。

代码语言:txt
复制
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用户的密码:

代码语言:txt
复制
Change the password for root ? ((Press y|Y for Yes, any other key for No) :

Y更改此密码。

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

代码语言:txt
复制
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服务以确保您的实例立即实现安全性更改:

代码语言:txt
复制
$ sudo service mysql-server restart

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

第三步 - 安装和配置PHP

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

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

代码语言:txt
复制
$ sudo pkg install php71 php71-mysqli

Lighttpd不像其他一些Web服务器那样包含本机PHP处理,因此我们将使用PHP-FPM,它代表“FastCGI Process Manager”。 我们将配置Lighttpd以使用此模块来处理PHP请求。在我们这样做之前,我们需要配置PHP-FPM本身。

首先编辑PHP-FPM配置文件:

代码语言:txt
复制
$ sudo ee /usr/local/etc/php-fpm.d/www.conf

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

在配置文件中查找此行:

/usr/local/etc/php-fpm.d/www.conf

代码语言:txt
复制
listen = 127.0.0.1:9000

更改此行以使用php-fpmsocket:

/usr/local/etc/php-fpm.d/www.conf

代码语言:txt
复制
listen = /var/run/php-fpm.sock

现在设置将要创建的socket的所有者,组和权限。查找配置文件的这一部分:

/usr/local/etc/php-fpm.d/www.conf

代码语言:txt
复制
...
;listen.owner = www
;listen.group = www
;listen.mode = 0660
...

通过删除每行开头的分号取消注释以下部分,因此该部分如下所示:

/usr/local/etc/php-fpm.d/www.conf

代码语言:txt
复制
...
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期望找到其配置文件的位置:

代码语言:txt
复制
$ sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

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

代码语言:txt
复制
$ sudo ee /usr/local/etc/php.ini

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

/usr/local/etc/php.ini

代码语言:txt
复制
...
;cgi.fix_pathinfo=1
...

取消注释该行并将值设置为0。如果找不到传入进程的文件,这可以防止PHP尝试执行部分路径。攻击者可以使用它来执行恶意代码。

/usr/local/etc/php.ini

代码语言:txt
复制
...
cgi.fix_pathinfo=0
...

保存文件并退出编辑器。

然后在启动时启用php-fpm服务:

代码语言:txt
复制
$ sudo sysrc php_fpm_enable=yes

然后启动服务:

代码语言:txt
复制
$ sudo service php-fpm start

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

第四步 - 配置Lighttpd以服务PHP应用程序

在此步骤中,您将配置Lighttpd以使用FastCGI和PHP-FPM。这将使Lighttpd上的PHP成为可能,并提供快速有效的PHP支持。

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

代码语言:txt
复制
$ sudo ee /usr/local/etc/lighttpd/modules.conf

找到以下部分:

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

代码语言:txt
复制
...
##
## FastCGI (mod_fastcgi)
##
#include "conf.d/fastcgi.conf"
...

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

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

代码语言:txt
复制
...
##
## FastCGI (mod_fastcgi)
##
include "conf.d/fastcgi.conf"
...

保存文件并退出编辑器。

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

代码语言:txt
复制
$ sudo ee /usr/local/etc/lighttpd/conf.d/fastcgi.conf

这个文件有几个例子,注释掉了。将以下配置行添加到文件末尾,配置Lighttpd以使用FastCGI和PHP-FPM提供PHP文件:

/usr/local/etc/lighttpd/conf.d/fastcgi.conf

代码语言:txt
复制
...
fastcgi.server += ( ".php" =>
        ((
                "socket" => "/var/run/php-fpm.sock",
                "broken-scriptfilename" => "enable"
        ))
)
...

接下来,启用Lighttpd以在启动时启动。这样,只要重新启动Web服务器,Lighttpd就会自动启动:

代码语言:txt
复制
$ sudo sysrc lighttpd_enable=yes

然后启动lighttpd服务:

代码语言:txt
复制
$ sudo service lighttpd start

现在PHP已准备就绪,让我们确保一切正常。

第五步 - 测试服务器设置

要测试新配置的Lighttpd服务器,首先要创建文件夹/usr/local/www/data,Lighttpd将在该文件夹中查找要提供的网页。

代码语言:txt
复制
$ sudo mkdir -p /usr/local/www/data

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

代码语言:txt
复制
$ sudo ee /usr/local/www/data/info.php

将此代码添加到文件中:

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

代码语言:txt
复制
<?php phpinfo(); ?>

保存文件并退出编辑器。

访问您的网络浏览器。你会看到一个看起来像这样的页面:http://your_server_ip/info.php

php界面
php界面

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

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

一旦您确认某些内容正在运行,请删除该info.php页面,因为它会公开您应该保密的服务器信息:

代码语言:txt
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 第一步 - 安装Lighttpd
  • 第二步 - 安装和配置MySQL
  • 第三步 - 安装和配置PHP
  • 第四步 - 配置Lighttpd以服务PHP应用程序
  • 第五步 - 测试服务器设置
  • 结论
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档