使用mod_mysql_vhost在Lighttpd(Debian Etch)上创建简单的虚拟主机

使用mod_mysql_vhost创建简单的虚拟主机在Lighttpd(Debian Etch)

本指南介绍如何使用mod_mysql_vhost在Debian Etch上的lighttpd Web服务器上创建简单的虚拟主机。 使用mod_mysql_vhost,lighttpd可以从MySQL数据库读取vhost配置。 目前,您可以将域和文档根存储在MySQL数据库中,从而导致非常简单的虚拟主机。 如果您需要更多的vh​​osts指令,那么您必须在lighttpd.conf的全局部分中进行配置,这意味着它们对所有vhosts都有效。 因此,如果您的vhosts在域和文档根目录中有所不同,那么mod_mysql_vhost是非常理想的。

我不会保证这将为您工作!

1安装MySQL 5.0

首先我们像这样安装MySQL 5.0:

apt-get install mysql-server mysql-client

为MySQL用户root创建密码(将yourrootsql密码替换为您要使用的密码):

mysqladmin -u root password yourrootsqlpassword

然后检查

netstat -tap | grep mysql

MySQL正在监听哪个地址。 如果输出如下所示:

tcp        0      0 localhost.localdo:mysql *:*                     LISTEN     2713/mysqld

这意味着MySQL只监听localhost.localdomain ,那么你以前设置的密码是安全的。 但如果输出如下所示:

tcp        0      0 *:mysql *:*                     LISTEN     2713/mysqld

您应该为您的主机名(我的主机名为server1.example.com )设置一个MySQL密码,因为否则任何人都可以访问您的数据库并修改数据:

mysqladmin -h server1.example.com -u root password yourrootsqlpassword

2安装Lighttpd和mod_mysql_vhost

您可以安装lighttpd(如果尚未安装)和mod_mysql_vhost,如下所示:

apt-get install lighttpd lighttpd-mod-mysql-vhost

要启用mod_mysql_vhost,我们打开/etc/lighttpd/lighttpd.conf并在server.modules节中添加/启用“mod_mysql_vhost”

vi /etc/lighttpd/lighttpd.conf
[...]
server.modules              = (
            "mod_access",
            "mod_alias",
            "mod_accesslog",
            "mod_mysql_vhost",
#           "mod_rewrite",
#           "mod_redirect",
#           "mod_status",
#           "mod_evhost",
#           "mod_compress",
#           "mod_usertrack",
#           "mod_rrdtool",
#           "mod_webdav",
#           "mod_expire",
#           "mod_flv_streaming",
#           "mod_evasive"
 )
[...]

之后,我们重新启动lighttpd:

/etc/init.d/lighttpd restart

3配置mod_mysql_vhost

现在我们登录到MySQL ...

mysql -u root -p

...并创建数据库lighttpd

CREATE DATABASE lighttpd;

接下来,我们使用lighttpd数据库的SELECT权限创建一个数据库用户(我们名为lighttpd ):

GRANT SELECT ON lighttpd.* TO lighttpd@localhost IDENTIFIED BY 'secret';
GRANT SELECT ON lighttpd.* TO lighttpd@localhost.localdomain IDENTIFIED BY 'secret';
FLUSH PRIVILEGES;

(用您选择的密码替换密码。)

然后我们在lighttpd数据库中创建表,并离开MySQL:

USE lighttpd;
CREATE TABLE domains (
domain varchar(64) not null primary key,
docroot varchar(128) not null
);
quit;

现在我们打开/etc/lighttpd/lighttpd.conf ,并在文件末尾添加以下mod_mysql_vhost配置:

vi /etc/lighttpd/lighttpd.conf
[...]
mysql-vhost.db             = "lighttpd"
mysql-vhost.user           = "lighttpd"
mysql-vhost.pass           = "secret"
mysql-vhost.sql            = "SELECT docroot FROM domains WHERE domain='?';"
mysql-vhost.hostname       = "localhost"
mysql-vhost.port           = 3306

(使用以前为lighttpd MySQL用户设置的密码替换密码。)

重启lighttpd:

/etc/init.d/lighttpd restart

现在是配置虚拟主机的时候了...

4配置虚拟主机

我现在将配置两个虚拟主机,一个用于www.example.com (文档根目录为/var/www/www.example.com/web ),另一个用于www.example.org (文件根/ var / www /www.example.org/web )。

首先,我们创建两个网站的文档根(如果它们不存在):

mkdir -p /var/www/www.example.com/web
mkdir -p /var/www/www.example.org/web

然后我们登录到MySQL ...

mysql -u root -p
USE lighttpd;

...并创建vhosts如下:

INSERT INTO domains VALUES ('www.example.com','/var/www/www.example.com/web/');
INSERT INTO domains VALUES ('www.example.org','/var/www/www.example.org/web/');

我们现在可以离开MySQL shell:

quit;

就是这样,vhosts现在被配置和工作,并且不需要lighttpd重新启动。

要检查vhosts是否正常工作,我们在每个文档根目录中创建一个index.html文件,其中一个字符串为“www.example.com”,另一个为“www.example.org”。 .. ..

echo "www.example.com" > /var/www/www.example.com/web/index.html
echo "www.example.org" > /var/www/www.example.org/web/index.html

并在浏览器中调用http://www.example.comhttp://www.example.orghttp://www.example.com应显示www.example.comhttp://www.example.org应显示www.example.org

5链接

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

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

支付宝扫一扫打赏

微信扫一扫打赏