分享
 
 
 

如何在linux上设置虚拟主机(一)

王朝system·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

一个全套的虚拟主机业务应该包括DNS解析,FTP上传,APACHE虚拟主机设置,磁盘空间限定等等,本文的目的就在于如何让大家在短时间内学会如何配置虚拟主机服务。前提条件:假设我们有一台经过注册合法的DNS服务器,域名为ns.domain.com(aa.aa.aa.aa),一台用作邮件转发服务器(bb.bb.bb.bb)以及一台WEB服务器(cc.cc.cc.cc),客户在申请域名的时候将自己的DNS服务器指向设置为 ns.domain.com或其IP地址aa.aa.aa.aa。现在假设一家公司注册了test.com这个域名并由我们来负责做DNS指向和网站寄存业务,我们来看一看具体的步骤是怎样的1.添加用户帐号# groupadd guest(设置一个用户组,将所有的虚拟主机用户都放到这个组里)# adduser -g guest -s /usr/bin/passwd -d /opt/vhosts/www.test.com test;创建一个用户,该用户符合下列条件:1.他的登陆用户名是test2.用户组是guest3.他的shell是/usr/bin/passwd

这样用户将无法登陆我们的系统,而只能用ftp上传文件,当他试图用telnet或者ssh方式访问server时,他只能修改自己的明码。4.他的主页空间是在/opt/vhosts/www.test.com目录下。

我们还需要修改/etc/shells文件把/usr/bin/passwd追加到该文件的最后:

# echo /usr/bin/passwd >>/etc/shells

# cat /etc/shells(检查改动是否生效)

/bin/bash

/bin/sh

/bin/tcsh

/bin/csh

/bin/ash

/bin/bsh

/bin/bash2

/bin/ksh

/bin/zsh

/usr/bin/passwd <--我们所修改的部分

之所以这么做是因为出于安全的因素,如果用户的shell没有在/etc/shells文件中列出,那么该用户将被禁止使用ftp服务。2.设置FTP服务

设置ftp服务主要是设置访问控制,禁止FTP用户访问除其自己目录以外的其他目录以免其对我们的服务器构成威胁。修改你自己机器上的/etc/ftpaccess文件把该文件改为:

class all real,guest,anonymous *

email root@localhost

loginfails 5

readme README* login

readme README* cwd=*

message /welcome.msg login

message .message cwd=*

guestgroup guest

compress yes all

tar yes all

chmod yes guest

chmod no anonymous

delete yes guest

delete no anonymous

overwrite yes guest

overwrite no anonymous

rename yes guest

rename no anonymous

log transfers anonymous,real inbound,outbound

shutdown /etc/shutmsg

passwd-check rfc822 warn

注意这里的guest要和你上面添加用户之前定义的用户组一致,也就是说如果你添加的用户是其他组比如是ftpuser的话,那么你要把ftpaccess文件里的guest全部换成ftpuser。

之后,还需要把/home/ftp/目录下的所有文件都复制到该用户的目录下才能保证安全的目录控制:

# cp -r /home/ftp/* /opt/vhosts/www.test.com/

注意要保证etc,lib,bin等目录的权限和/home/ftp/目录下的权限一致。这样该用户的ftp就基本设置好了,测试一下吧:

# ftp 127.0.0.1Connected to 127.0.0.1.

220 ns2.cnuol.com FTP server (Version wu-2.6.0(1) Mon Feb 28 10:30:36 EST 2000) ready.

Name (127.0.0.1:root): test

Password:

230 User linuxpub logged in.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>ls

200 PORT command successful.

150 Opening ASCII mode data connection for /bin/ls.

total 13872

-rw-r--r-- 1 jiangpen zelex 1422 Dec 6 03:53 .Xdefaults

-rw------- 1 root root 31 Dec 6 04:04 .bash_history

-rw-r--r-- 1 jiangpen zelex 24 Dec 6 03:53 .bash_logout

-rw-r--r-- 1 jiangpen zelex 230 Dec 6 03:53 .bash_profile

-rw-r--r-- 1 jiangpen zelex 124 Dec 6 03:53 .bashrc

drwxr-xr-x 3 jiangpen zelex 4096 Nov 4 00:03 .kde

-rw-r--r-- 1 jiangpen zelex 435 Dec 6 03:53 .kderc

-rw-r--r-- 1 jiangpen zelex 3394 Dec 6 03:53 .screenrc

d--x--x--x 2 root root 4096 Mar 12 08:24 bin

d--x--x--x 2 root root 4096 Mar 12 08:24 etc

drwxr-xr-x 2 root root 4096 Mar 12 08:24 lib

drwxr-sr-x 2 root ftp 4096 Feb 4 2000 pub

226 Transfer complete.

ftp>cd /

ftp>ls

200 PORT command successful.

150 Opening ASCII mode data connection for /bin/ls.

total 13872

-rw-r--r-- 1 jiangpen zelex 1422 Dec 6 03:53 .Xdefaults

-rw------- 1 root root 31 Dec 6 04:04 .bash_history

-rw-r--r-- 1 jiangpen zelex 24 Dec 6 03:53 .bash_logout

-rw-r--r-- 1 jiangpen zelex 230 Dec 6 03:53 .bash_profile

-rw-r--r-- 1 jiangpen zelex 124 Dec 6 03:53 .bashrc

drwxr-xr-x 3 jiangpen zelex 4096 Nov 4 00:03 .kde

-rw-r--r-- 1 jiangpen zelex 435 Dec 6 03:53 .kderc

-rw-r--r-- 1 jiangpen zelex 3394 Dec 6 03:53 .screenrc

d--x--x--x 2 root root 4096 Mar 12 08:24 bin

d--x--x--x 2 root root 4096 Mar 12 08:24 etc

drwxr-xr-x 2 root root 4096 Mar 12 08:24 lib

drwxr-sr-x 2 root ftp 4096 Feb 4 2000 pub

226 Transfer complete.

好了,我们可以看到这个用户只能访问自己的home目录了。

3.设置DNS服务

本人水平很次,文章中有什么不周之处还望大家批评指正,谢谢! DNS服务如果只是达到能使用的话,我觉得配置起来是最简单的了,可是最近论坛以及OICQ上总有网友向我询问这方面的问题,可是有很少能把自己的问题说清楚,所以忙的我不亦乐乎。下面我就讲讲最基本的DNS配置以及在虚拟主机业务中的DNS的配置。 首先,还是要先说明前提条件: 1.有一台安装好了的DNS服务器,版本建议用BIND-8.2.3,该版本本站有下载,路径是http: //ftp.cnuol.com/network/bind/bind-8.2.3-src.tar.gzBIND9我没使用过但是听说有一些安全隐患,大家如果要选用的话最好先了解清楚。 2.这台服务器必须是经过注册的合法的DNS服务器(ns.domain.com),此外当客户在填写域名注册表的时候必须将其主DNS服务器填写为该服务器所对应的域名ns.domain.com。具体的做法请到CNNIC或NIC上查询,此项内容不在本文讨论范围之内。接下来要首先要把主DNS配置好使它能解析域名domain.com,我不具体讲如何配置,我只把配置文件的示例列出来,大家只要把其中的 domain.com换成你自己域的域名,把IP换成自己的IP就可以启动DNS服务了。

/etc/named.conf文件:

options {

directory "/var/named";

};

zone "." {

type hint;

file "named.ca";

};

zone "domain.com"{

type master;

file "db.domain.com";

};

zone "8.96.202.in-addr.arpa"{

type master;

file "named.rev";

};

zone "0.0.127.in-addr.arpa"{

type master;

file "named.local";

};

/var/named/named.ca

这是一个cache文件可以通过运行

# dig > named.ca来获得

/var/named/named.local

@ IN SOA localhost. root.localhost. (

1997022700 ; serial

28800 ; refresh

14400 ; retry

3600000 ; expire

86400 ; default_ttl

)

@ IN NS localhost.

1 IN PTR localhost.

/var/named/db.domain.com

@ IN SOA domain.com. root.domain.com. (

2000122001 ; serial

28800 ; refresh

14400 ; retry

1209600 ; expire

43200 ; default_ttl

)

@ IN NS ns.domain.com.

@ IN MX 10 smtp.domain.com.

domain.com. IN A 202.96.8.198

ns.domain.com. IN A 202.96.8.193

smtp.domain.com. IN A 202.96.8.193

pop3.domain.com. IN A 202.96.8.194

web.domain.com IN A 202.96.8.195

/var/named/named.rev

@ IN SOA domain.com. root.domain.com. (

2001032102 ; serial

28800 ; refresh

14400 ; retry

3600000 ; expire

86400 ; default_ttl

)

@ IN NS ns.domain.com.

193 IN PTR ns.domain.com.

194 IN PTR smtp.domain.com.

195 IN PTR web.domain.com.

修改/etc/resolv.conf把DNS服务器设置为本机

nameserver 202.96.8.193

然后启动DNS服务

# ndc start

测试:

#nslookup

Default Server: ns.domain.com

Address: 202.96.8.93

>ns.domain.com

Server: ns.domain.com

Address: 202.96.8.193

Name: ns.domain.com

Address: 202.96.8.193

如果正向和反向都可以解析的话就没有什么问题了。

下面看看虚拟主机的DNS是如何实现的。虚拟主机的DNS其实和主DNS的配置差不多,只是少了反向解析的部分,我们只需要修改 /etc/named.conf和/var/named/下的一个DB文件就可以了。对于我门上次提到的test.com这个域名来说具体步骤如下:

1。修改/etc/named.conf,在最后加入下面几行

zone "test.com"{

type master;

file "db.test.com";

};

2.在/var/named目录下创建一个名为db.test.com的文件,内容如下:

@ IN SOA test.com. root.test.com. (

2000122001 ; serial

28800 ; refresh

14400 ; retry

1209600 ; expire

43200 ; default_ttl

)

@ IN NS ns.test.com.

@ IN MX 10 smtp.test.com.

test.com. IN A 202.96.8.200

ns.test.com. IN A 202.96.8.193

smtp.test.com. IN A 202.96.8.200

pop3.test.com. IN A 202.96.8.200

web.test.com. IN A 202.96.8.201

从这个文件可以看出来,将来我们要把该域名的邮件服务器放在202.96.8.200这台服务器上,外发和POP3服务都是由202.96.8.200台服务器提供。该域的HTTP服务器是202.96.8.201,因此我们要把上面的ftp用户开在202.96.8.200这台服务器上以方便用户自己上传更新主页。

做好解析之后,必须重新启动DNS使改动生效:

# ndc restart

如果你觉得不放心还可以用nslookup来做一下测试,看看我们刚才做的虚拟主机能否正常解析。当客户的虚拟主机解析工作作好之后,根据DNS服务器的刷新时间的长短可能需要等半天他的域名才能被internet上其他的DNS服务器被正常解析。

在下一次,本人将介绍配置apache的虚拟主机服务

4.Apache

在开始之前要规划好网站需要提供哪些服务设计好合理的虚拟主机目录存放位置,以免日后改动给自己带来麻烦。

本文以最常用的方式介绍Apache+MySQL+PHP的配置方式,尽量以简单直接的命令行和配置文件说明问题避免涉及一些原理性问题以免给初学者带来困难。

首先安装MySQL

# tar zxvf mysql-3.23.36.tar.gz

# cd mysql-3.23.36

# 调整mysql的最大连接数,具体作好看本站文章《加大MySQL的最大连接数》

# ./configure --prefix=/usr/local/mysql --with-charset=gbk --with-extra-charsets=all --with-mysqld-user=mysql

# make

# make install

# echo /usr/local/mysql/lib/mysql >> /etc/ld.so.conf(将mysql的lib库加入系统)

# su -

# ldconfig(使改动生效)

# cd mysql-3.23.36/support-files/

# chmod 700 mysql.server(使脚本root可执行)

# cp mysql.server /etc/rc.d/init.d/mysql

# chkconfig --add mysql(将mysql的加入启动文件)

# chown -R mysql.root /usr/local/mysql/var(调整目录属性)

# chmod 700 /usr/local/mysql/var

# adduser mysql -s /bin/false

# /usr/local/mysql/bin/mysql_install_db(初始化数据库)

# /etc/rc.d/init.d/mysql start(启动数据库)

# /usr/local/mysql/bin/mysql

elcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 11856 to server version: 3.22.32

Type 'help' for help.

mysql> usr mysql

mysql> update user set password=password("password") where user='root';(给root分配口令)

mysql>flush privileges;(使改动生效)

安装apache

# tar zxvf apache-1.3.19.tar.gz

# cd apache-1.3.19

# ./configure --enable-module=most --enable-shared=max --disable-rule=WANTHSREGEX

# make

# make install

# cp /usr/local/apache/bin/apachectl /etc/rc.d/rc3.d/S85httpd(自动启动httpd)

# cp /usr/local/apache/bin/apachectl /etc/rc.d/rc0.d/K15httpd(自动关闭HTTPD)

# cp /usr/local/apache/bin/apachectl /etc/rc.d/rc6.d/K15httpd

安装PHP

# tar zxvf php-version.tar.gz

# cd php-version

# ./configure --with-apxs=/usr/local/apache/bin/apxs --with-mysql --with-system-regex

# make

# make install

# cp php.ini-dist /usr/local/lib/php.ini

配置Apache使之支持虚拟主机和PHP

在httpd.conf文件里找到:

DirectoryIndex index.html

把她改为:(使支持以php结尾的入口文件)

DirectoryIndex index.php index.php3 index.html index.htm

添加:(使支持对PHP文件的解释)

AddType application/x-httpd-php .php

AddType application/x-httpd-php .php3

AddType application/x-httpd-php-source .phps

在文件最后添加:

NameVirtualHost 202.96.8.201(使支持虚拟主机,IP为你服务器的IP)

(设置本机的web是IP202.96.8.201的虚拟主机)

ServerAdmin webmast@domain.com(设置本机WEB的管理员信箱)

DocumentRoot /opt/vhosts/web.domain.com(设置本机WEB目录)

ServerName web.domain.com (设置web服务名,需要有DNS解析)

ErrorLog logs/domain.com-error_log(设置错误日志)

CustomLog logs/domain.com-access_log common(设置访问日志)

(设置本机的web是IP202.96.8.201的虚拟主机)

ServerAdmin webmast@test.com(设置本机WEB的管理员信箱)

DocumentRoot /opt/vhosts/web.test.com(设置本机WEB目录,要和我们上面定义的ftp用户的目录一致,以方便用户自己上传主页)

ServerName web.test.com (设置web服务名,需要有DNS解析)

ErrorLog logs/test.com-error_log(设置错误日志)

CustomLog logs/test.com-access_log common(设置访问日志)

基本上就是这样,以后如果有新的虚拟主机就按照这个格式添加到httpd.conf文件的最后然后重新启动apache就可以生效了

下次将介绍基于sendmail和postfix的虚拟邮件的配置以及如何在这2中邮件系统中实现stmp认证服务

设置sendmail的虚拟主机

其实很简单的,只要修改sendmail.cw文件加入虚拟与名就可以了

vi /etc/sendmail.cw(新版本的是/etc/mail/local-host-names

virtualdomain1.com

aaa.com

ccc.com

然后重新启动sendmail

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有