使用mod_mysql_vhost创建简单的虚拟主机在Lighttpd(Debian Etch)
本指南介绍如何使用mod_mysql_vhost在Debian Etch上的lighttpd Web服务器上创建简单的虚拟主机。 使用mod_mysql_vhost,lighttpd可以从MySQL数据库读取vhost配置。 目前,您可以将域和文档根存储在MySQL数据库中,从而导致非常简单的虚拟主机。 如果您需要更多的vhosts指令,那么您必须在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.com
和http://www.example.org
。 http://www.example.com
应显示www.example.com
, http://www.example.org
应显示www.example.org
。
5链接
- mod_mysql_vhost: http : //trac.lighttpd.net/trac/wiki/Docs#Optionsformod_mysql_vhost-Mysqlvirtualhostingmodule
- Lighttpd: http : //www.lighttpd.net
- Debian: http : //www.debian.org