某个人站点,需要实现以下的需求:(已根据实际案例进行操作)
1、要求搭建DNS服务器,维护一个 upl.com的域名的解析记录
其中存在 www.upl.com的A记录,bbs.upl.com 别名到 www.upl.com,这些记录都指向本机IP,要求能够反向解析。
1、要求搭建DNS服务器,维护一个 upl.com的域名的解析记录
其中存在 www.upl.com的A记录,bbs.upl.com 别名到 www.upl.com,这些记录都指向本机IP,要求能够反向解析。
2、搭建apache服务器
a、建立服务器用户的个人主页
b、配置基于端口的apache网站服务
c、配置基于IP的apache网站服务
d、配置基于域名的apache网站服务
要求建立两个虚拟主机,分别达到:
虚拟主机1 绑定域名 www.upl.com ,网站的根目录为 /wwwroot/www如果没有首页,也不要显示welcome的页面。
登入需要密码。
用户:chen
密码:123qwe
虚拟主机2 绑定域名 bbs.upl.com ,网站的根目录为 /wwwroot/bbs
允许列目录,允许链接。登入bbs.upl.com的首页要为index.html,不允许来自一个IP的访问。
所有的虚拟主机要求使用DNS进行域名解析才能访问,不要使用本地的hosts作为解析。
a、建立服务器用户的个人主页
b、配置基于端口的apache网站服务
c、配置基于IP的apache网站服务
d、配置基于域名的apache网站服务
要求建立两个虚拟主机,分别达到:
虚拟主机1 绑定域名 www.upl.com ,网站的根目录为 /wwwroot/www如果没有首页,也不要显示welcome的页面。
登入需要密码。
用户:chen
密码:123qwe
虚拟主机2 绑定域名 bbs.upl.com ,网站的根目录为 /wwwroot/bbs
允许列目录,允许链接。登入bbs.upl.com的首页要为index.html,不允许来自一个IP的访问。
所有的虚拟主机要求使用DNS进行域名解析才能访问,不要使用本地的hosts作为解析。
3、搭建vsftp服务器,要就建立两个帐号,使用系统帐号验证,分别为 www 和 tom 。
帐号的密码均为123,不允许登录系统,只能用于ftp登录
要求 www登录之后,只能管理 /wwwroot/www目录下的内容,不能切换到外层的目录
要求 bbs登录之后,只能管理 /wwwroot/bbs目录下的内容,不能切换到外层的目录
要求建立虚拟账户,允许下载、写入;最大的写入空间为100M,下载速度为100KB/s
4、要求建立一个raid5设备,并且支持磁盘配额,把该raid设备挂载到/wwwroot目录
实现 www只能使用 200M空间 ,bbs只能使用 100M空间
帐号的密码均为123,不允许登录系统,只能用于ftp登录
要求 www登录之后,只能管理 /wwwroot/www目录下的内容,不能切换到外层的目录
要求 bbs登录之后,只能管理 /wwwroot/bbs目录下的内容,不能切换到外层的目录
要求建立虚拟账户,允许下载、写入;最大的写入空间为100M,下载速度为100KB/s
4、要求建立一个raid5设备,并且支持磁盘配额,把该raid设备挂载到/wwwroot目录
实现 www只能使用 200M空间 ,bbs只能使用 100M空间
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
分析:以上四个需求,可以按照我们的操作步骤来实现:
A、实现RAID5并开启Quota
B、DNS服务建立解析
C、apache
D、vsftpd
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
为了让实验成功,需要保证:1、静态IP,主机名可以正常解析
(本实例由某台实际服务的需求改编而来)
分析:以上四个需求,可以按照我们的操作步骤来实现:
A、实现RAID5并开启Quota
B、DNS服务建立解析
C、apache
D、vsftpd
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
为了让实验成功,需要保证:1、静态IP,主机名可以正常解析
(本实例由某台实际服务的需求改编而来)
A、实现Raid5并开启quota.
备注:本例中,使用了3块8GB的SCSI硬盘(/dev/sdb,/dev/sdc,/dev/sdd)。存放web服务的数据!
以其中一块硬盘为例:
# fdisk /dev/sdd
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p #直接分一个主分区
Partition number (1-4): 1
First cylinder (1-1044, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1044, default 1044):
Using default value 1044
备注:本例中,使用了3块8GB的SCSI硬盘(/dev/sdb,/dev/sdc,/dev/sdd)。存放web服务的数据!
以其中一块硬盘为例:
# fdisk /dev/sdd
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p #直接分一个主分区
Partition number (1-4): 1
First cylinder (1-1044, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1044, default 1044):
Using default value 1044
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): w
The partition table has been altered!
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@www ~]# partprobe
Syncing disks.
[root@www ~]# partprobe
# mdadm --creat /dev/md5 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd
mdadm: array /dev/md5 started.
mdadm: array /dev/md5 started.
# cat /proc/mdstat #看看当前三块硬盘的状态同步情况
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdd[2] sdc[1] sdb[0]
16777088 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU] #3个U表示三个硬盘都是OK的,如果有其中一个挂了会显示[UU_],这个时候你就应该注意了。
unused devices: <none>
# mkfs.ext3 /dev/md5 #格式化这个硬盘,结果就不输出了。
# mkdir /wwwroot
# vi /etc/fstab
/dev/md5 /wwwroot ext3 defaults,usrquota 0 0
# mount -a && mount
........省略无关内容
/dev/md5 on /wwwroot type ext3 (rw,usrquota)
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdd[2] sdc[1] sdb[0]
16777088 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU] #3个U表示三个硬盘都是OK的,如果有其中一个挂了会显示[UU_],这个时候你就应该注意了。
unused devices: <none>
# mkfs.ext3 /dev/md5 #格式化这个硬盘,结果就不输出了。
# mkdir /wwwroot
# vi /etc/fstab
/dev/md5 /wwwroot ext3 defaults,usrquota 0 0
# mount -a && mount
........省略无关内容
/dev/md5 on /wwwroot type ext3 (rw,usrquota)
配置quota吧
# quotacheck -cau && ll /wwwroot/
总计 28
-rw------- 1 root root 6144 11-08 05:48 aquota.user #出现该文件表时usrquota已经OK,可以配置了。
drwx------ 2 root root 16384 11-08 05:42 lost+found
# quotacheck -cau && ll /wwwroot/
总计 28
-rw------- 1 root root 6144 11-08 05:48 aquota.user #出现该文件表时usrquota已经OK,可以配置了。
drwx------ 2 root root 16384 11-08 05:42 lost+found
# useradd -s /sbin/nologin -d /wwwroot/www www
# useradd -s /sbin/nologin -d /wwwroot/bbs bbs
# passwd www
# passwd bbs
-------------------------
备注:以上两条命令会让/wwwroot/bbs /wwwroot/www目录的权限为700。
为了让后面的apache实验能够不出问题,我们把权限改一下:
chmod 755 /wwwroot/{bbs,www}
笔者,在测试apache实验时曾出现不能访问,最终发生是这个目录的权限问题。
-------------------------
# edquota -u www
Disk quotas for user www (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/md5 0 180000 200000 0 0 0
# useradd -s /sbin/nologin -d /wwwroot/bbs bbs
# passwd www
# passwd bbs
-------------------------
备注:以上两条命令会让/wwwroot/bbs /wwwroot/www目录的权限为700。
为了让后面的apache实验能够不出问题,我们把权限改一下:
chmod 755 /wwwroot/{bbs,www}
笔者,在测试apache实验时曾出现不能访问,最终发生是这个目录的权限问题。
-------------------------
# edquota -u www
Disk quotas for user www (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/md5 0 180000 200000 0 0 0
# edquota -u bbs
Disk quotas for user bbs (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/md5 0 90000 100000 0 0 0
Disk quotas for user bbs (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/md5 0 90000 100000 0 0 0
# quotaon /wwwroot/
#这个时候可以试着写入一定大小的文件,然后进行测试。使用dd if=/dev/zero of=/wwwroot/www.file.90M bs=1M count=90
#关于最后的结果可以使用repquota -a 来看,对于用户-u,对于组-g
#这个时候可以试着写入一定大小的文件,然后进行测试。使用dd if=/dev/zero of=/wwwroot/www.file.90M bs=1M count=90
#关于最后的结果可以使用repquota -a 来看,对于用户-u,对于组-g
======================================================================
B、DNS 服务器的建立
安装包:bind,bind-chroot,bind-devel,bind-unitl包
安装方式:自己选吧
安装过程:略过
配置DNS服务器:
# cat /var/named/chroot/etc/named.conf
options {
directory "/var/named";
};
B、DNS 服务器的建立
安装包:bind,bind-chroot,bind-devel,bind-unitl包
安装方式:自己选吧
安装过程:略过
配置DNS服务器:
# cat /var/named/chroot/etc/named.conf
options {
directory "/var/named";
};
zone "upl.com." {
type master;
file "data/master.upl.com.zone";
};
type master;
file "data/master.upl.com.zone";
};
zone "10.168.192.in-addr.arpa." {
type master;
file "data/10.168.192.arpa.zone";
};
type master;
file "data/10.168.192.arpa.zone";
};
# cat /var/named/chroot/var/named/data/master.upl.com.zone
$TTL 86400
@ IN SOA www.upl.com. postmaster.postfixlinux.3322.org. (
0000001
1400
2500
36000
86400 )
@ IN NS www.upl.com.
www IN A 192.168.10.22
bbs IN CNAME www
# cat /var/named/chroot/var/named/data/10.168.192.arpa.zone
$TTL 86400
@ IN SOA www.upl.com. postmaster.postfixlinux.3322.org. (
0000001
1400
2500
36000
86400 )
@ IN NS www.upl.com.
22 IN PTR www.upl.com.
$TTL 86400
@ IN SOA www.upl.com. postmaster.postfixlinux.3322.org. (
0000001
1400
2500
36000
86400 )
@ IN NS www.upl.com.
22 IN PTR www.upl.com.
# vi /etc/resolv.conf
nameserver 192.168.10.22
nameserver 192.168.10.22
# vi /etc/resolv.conf
# service named restart
停止 named: [确定]
启动 named: [确定]
# nslookup www.upl.com
Server: 192.168.10.22
Address: 192.168.10.22#53
Name: www.upl.com
Address: 192.168.10.22
# service named restart
停止 named: [确定]
启动 named: [确定]
# nslookup www.upl.com
Server: 192.168.10.22
Address: 192.168.10.22#53
Name: www.upl.com
Address: 192.168.10.22
# nslookup 192.168.10.22
Server: 192.168.10.22
Address: 192.168.10.22#53
22.10.168.192.in-addr.arpa name = www.upl.com.
========================================================================
C、配置Apache服务
安装包:httpd.i386包
安装方式:RPM安装
安装过程:略过
配置:
C.1、建立服务器用户的个人主页(其他内容保持默认值)
# vi /etc/httpd/conf/httpd.conf
---------------------------------------
<IfModule mod_userdir.c>
#UserDir disable
UserDir public_html
</IfModule>
Server: 192.168.10.22
Address: 192.168.10.22#53
22.10.168.192.in-addr.arpa name = www.upl.com.
========================================================================
C、配置Apache服务
安装包:httpd.i386包
安装方式:RPM安装
安装过程:略过
配置:
C.1、建立服务器用户的个人主页(其他内容保持默认值)
# vi /etc/httpd/conf/httpd.conf
---------------------------------------
<IfModule mod_userdir.c>
#UserDir disable
UserDir public_html
</IfModule>
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
---------------------------------------
要成功配置用户的个人主页,还要完成以下内容:
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.
#
# The path to the end user account 'public_html' directory must be
# accessible to the webserver userid. This usually means that ~userid
# must have permissions of 711, ~userid/public_html must have permissions
# of 755, and documents contained therein must be world-readable.
# Otherwise, the client will only receive a "403 Forbidden" message.
---------------------------------------
# useradd chen
# su - chen
$ mkdir public_html
$ chmod 755 public_html/
$ chmod 711 /home/chen/
$ echo "I am chen" >> /home/chen/public_html/index.html
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
---------------------------------------
要成功配置用户的个人主页,还要完成以下内容:
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.
#
# The path to the end user account 'public_html' directory must be
# accessible to the webserver userid. This usually means that ~userid
# must have permissions of 711, ~userid/public_html must have permissions
# of 755, and documents contained therein must be world-readable.
# Otherwise, the client will only receive a "403 Forbidden" message.
---------------------------------------
# useradd chen
# su - chen
$ mkdir public_html
$ chmod 755 public_html/
$ chmod 711 /home/chen/
$ echo "I am chen" >> /home/chen/public_html/index.html
C.2配置基于端口的apache网站服务(以侦听80,81两个端口为例)
# vi /etc/httpd/conf/httpd.conf
-----------------------------------
Listen 80
Listen 81
DocumentRoot "/wwwroot/"
<Directory "/wwwroot">
# vi /etc/httpd/conf/httpd.conf
-----------------------------------
Listen 80
Listen 81
DocumentRoot "/wwwroot/"
<Directory "/wwwroot">
<VirtualHost *:80>
ServerAdmin postmaster@postfixlinux.3322.org
DocumentRoot /wwwroot/web1
ServerName www.upl.com
ErrorLog logs/www.upl.com-error_log80
CustomLog logs/www.upl.comm.com-access_log80 common
</VirtualHost>
ServerAdmin postmaster@postfixlinux.3322.org
DocumentRoot /wwwroot/web1
ServerName www.upl.com
ErrorLog logs/www.upl.com-error_log80
CustomLog logs/www.upl.comm.com-access_log80 common
</VirtualHost>
<VirtualHost *:81>
ServerAdmin postmaster@postfixlinux.3322.org
DocumentRoot /wwwroot/web2
ServerName www.upl.com
ErrorLog logs/www.upl.com-error_log81
CustomLog logs/www.upl.com-access_log81 common
</VirtualHost>
----------------------------------
# mkdir /wwwroot/web{1,2}
# mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.confbk #这样就不会出现RHEL的测试首页了
# touch /wwwroot/web1/web1
# touch /wwwroot/web2/web2
# service httpd restart
停止 httpd: [确定]
启动 httpd: [确定]
经过测试OK。
C.3配置基于IP的apache网站服务
# ifconfig eth0:0 192.168.10.23 netmask 255.255.255.0 (要永久生效,请修改./etc/sysconfig/network-scripts/ifcfg-eth0:0)
# vi /etc/httpd/conf/httpd.conf
-----------------------------------
DocumentRoot "/wwwroot/"
<Directory "/wwwroot">
# ifconfig eth0:0 192.168.10.23 netmask 255.255.255.0 (要永久生效,请修改./etc/sysconfig/network-scripts/ifcfg-eth0:0)
# vi /etc/httpd/conf/httpd.conf
-----------------------------------
DocumentRoot "/wwwroot/"
<Directory "/wwwroot">
<VirtualHost 192.168.10.22:80>
ServerAdmin postmaster@postfixlinux.3322.org
DocumentRoot /wwwroot/web1
ServerName www.upl.com
ErrorLog logs/www.upl.com-error_log80
CustomLog logs/www.upl.comm.com-access_log80 common
</VirtualHost>
ServerAdmin postmaster@postfixlinux.3322.org
DocumentRoot /wwwroot/web1
ServerName www.upl.com
ErrorLog logs/www.upl.com-error_log80
CustomLog logs/www.upl.comm.com-access_log80 common
</VirtualHost>
<VirtualHost 192.168.10.23:80>
ServerAdmin postmaster@postfixlinux.3322.org
DocumentRoot /wwwroot/web2
ServerName www.upl.com
ErrorLog logs/www.upl.com-error_log81
CustomLog logs/www.upl.com-access_log81 common
</VirtualHost>
------------------------------------
# service httpd restart
停止 httpd: [确定]
启动 httpd: [确定]
经过测试OK。
C.4配置基于域名的apaceh网站服务
# cat /etc/resolv.conf
nameserver 192.168.10.22
# cat /etc/resolv.conf
nameserver 192.168.10.22
# vi /etc/httpd/conf/httpd.conf
-------------------------------------
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin postmaster@postfixlinux.3322.org
DocumentRoot /wwwroot/www
ServerName www.upl.com
ErrorLog logs/www.upl.com-error_log80
CustomLog logs/www.upl.comm.com-access_log80 common
<Directory /wwwroot/www>
Options -Indexes -FollowSymLinks
AllowOverride all
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
-------------------------------------
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin postmaster@postfixlinux.3322.org
DocumentRoot /wwwroot/www
ServerName www.upl.com
ErrorLog logs/www.upl.com-error_log80
CustomLog logs/www.upl.comm.com-access_log80 common
<Directory /wwwroot/www>
Options -Indexes -FollowSymLinks
AllowOverride all
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin postmaster@postfixlinux.3322.org
DocumentRoot /wwwroot/bbs
ServerName bbs.upl.com
ErrorLog logs/www.upl.com-error_log81
CustomLog logs/www.upl.com-access_log81 common
<Directory /wwwroot/www>
Options -Indexes -FollowSymLinks
AllowOverride none
Order allow,deny
Allow from all
deny from 192.168.10.59
</Directory>
</VirtualHost>
----------------------------------------
# vim /wwwroot/www/.htaccess #建立apache的权限文件
authname " www.upl.com"
authtype basic
authuserfile /etc/httpd/passwd
require valid-user
------------------------------------------------
# htpasswd -c /etc/httpd/passwd chen
New password:
Re-type new password:
Adding password for user chen
------------------------------------------------
# service httpd restart
停止 httpd: [确定]
启动 httpd: [确定]
经过测试OK。
----------------------------------------
# vim /wwwroot/www/.htaccess #建立apache的权限文件
authname " www.upl.com"
authtype basic
authuserfile /etc/httpd/passwd
require valid-user
------------------------------------------------
# htpasswd -c /etc/httpd/passwd chen
New password:
Re-type new password:
Adding password for user chen
------------------------------------------------
# service httpd restart
停止 httpd: [确定]
启动 httpd: [确定]
经过测试OK。
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
这里是我新增加的一段,因为看到一个博友说可以看到服务器的状态。
我先不说安全性了:http://ip/server-staus
<Location /server-status>
sethandler server-status
order deny,allow
deny from all
allow from all
</Location>
另外就是一个server-info的模块,这个可危险了,可以看到apache所有开放的模块,都有很详细的信息。这要是被人给黑了,都不知道是怎么回事。。。。
所以我没有开放!
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
------------------------------------------------
实现FTP方面比较简单:
1、安装vsftpd(详见我之前的博文 )
2、开启功能chroot_local选项
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
3、将www,bbs两个用户加入到chroot_list目录里
#echo www >> /etc/vsftpd/chroot_list
#echo bbs >> /etc/vsftpd/chroot_list
实现FTP方面比较简单:
1、安装vsftpd(详见我之前的博文 )
2、开启功能chroot_local选项
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
3、将www,bbs两个用户加入到chroot_list目录里
#echo www >> /etc/vsftpd/chroot_list
#echo bbs >> /etc/vsftpd/chroot_list
完成用户的需求。
转载于:https://blog.51cto.com/myhat/417627