|
快速架设apache/vsftpd/samba/sendmail服务器
daweicheng
[email protected]
1 序言
2 参考文档
3 动态域名实现
4 apache
5 vsftpd
6 samba
7 sendmail
8 附录
a) httpd.conf的详细设定
b) vsftpd.conf的详细设定
c) smb.conf的详细设定
d) sendmail.mc的详细设定
e) tcp端口对照表(0~1457)
1 序言
现在宽带网络越来越普及,这为个人架设服务器提供了良好的基础.
本文讲述了如何实现动态域名,并快速设置好apache/vsftpd/samba/sendmail服务器.本文参阅了不少优秀文档,并接合了自己的一些心得.在这里,感谢这些无私的作者和为linux做出贡献的人们.
环境:redhat linux 9
2 参考文档
Red Hat Linux 9.0服务器架设全程实录
http://www.douzhe.com/linuxtips/1701.html
简易www伺服器设定
http://linux.vbird.org/linux_server/0360apache.php
简易vsftpd伺服器设定
http://linux.vbird.org/linux_server/0410vsftpd.php
简易samba伺服器设定
http://linux.vbird.org/linux_server/0370samba.php
简易Mail Server架设 -- Sendmail设定
http://linux.vbird.org/linux_server/0380sendmail.php
RHCE_Linux_Study_Guide
此文档在许多linux站点都可以找到
3 动态域名实现
考虑虚拟拨号的用户ip地址是动态分配的,这里我们申请动态域名.假设我们拥有公网ip.
在http://www.comexe.cn/ddns/ddns_trying.php上申请一个二级域名,然后下载linux的动态域名客户端linux_i.tar.gz,放在/tmp下
cd /tmp
tar zxvf linux_i.tar.gz
解压后的文件pipclient我们放在/usr/local/comexe/下
mkdir /usr/local/comexe/
mv pipclient /usr/local/comexe/
cd /usr/local/comexe/
下面配置客户端,在以下网址有说明:
http://www.comexe.cn/ddns/ddns_assistant_use.php#a4
./pipclient
依此输入在科迈注册的用户名,密码,域名
在Input Offline URL or Offline IP(Enter for none):此处我们直接回车(离线域名对我们注册的二级域名无效)
Has another domain?(Y/N):多个域名按"Y"
配置完按Ctrl+C结束.
修改配置用-c参数:
./pipclient -c
运行:
pipclient要在系统启动时以后台进程运行。请修改系统启动脚本(/etc/rc.d/rc.local),加入如下命令:
nohup /usr/local/comexe/pipclient -w /usr/local/comexe &
其中“-w”参数指定工作目录
因为我个人更喜欢用ntsysv(setup->system service),所以没有在rc.local中加命令
于是自己写了个简陋的脚本,用chkconfig加入系统服务,以后可以用service comexe start和service comexe stop启用和停止动态域名:
cd /etc/init.d/
vi comexe
然后写入下面的内容:
#! /bin/sh
#chkconfig:2345 90 90
#description:comexe
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo -n "start ddns: "
/usr/local/comexe/pipclient -w /usr/local/comexe > /dev/null &
echo
;;
stop)
echo -n "stop ddns: "
killproc pipclient
echo
;;
*)
exit 1
;;
esac
exit 0
好了,wq保存退出
chmod 755 comexe
chkconfig --add comexe
chkconfig --level 35 comexe on
这样,把comexe这个脚本加到了启动服务中,以后每次开机后自动加载(运行级3,5)
service comexe start和service comexe stop可手动加载和停止该服务.
4 apache
apache是被广泛应用的web服务器软件,有多个平台的版本.关于apache名称的由来,大家有兴趣可以看看参考文档中的解释
首先是安装工作.
我们需要安装如下的软件包(可以在redhat linux 9 光盘中找到)
httpd
httpd-devel
redhat-config-httpd
httpd-manual
autoconf
automake
libtool
mod_perl
mod_ssl
mod_python
用rpm -Uvh将这些软件包装好,然后:
/sbin/chkconfig --level 35 httpd on 将httpd服务在运行级3,5自动加载
/sbin/service httpd start 启动httpd服务
在web浏览器中输入http://localhost,如果安装无误,你会看见apache的测试页面
在apache 2中主配置文件是/etc/httpd/conf/httpd.conf
该文件的修改可以手动编辑或用redhat-config-httpd这样的图形化程式来完成
下面简单介绍一下该配置文件的主要配置参数:
KeepAlive On
是否允许持续性连线,即一个连线有多个请求
MaxKeepAliveRequests 100
在持续性连线中,最大允许的连接数目,设定为0,表示没有限制
MinSpareServers与MaxSpareServers是设定httpd进程数量的范围
StartServers可以设定在这两者之间(用ps -guax|grep httpd可以看到httpd进程数)
MaxClients 150
同一时间的连接数目.如果设得太大会很耗资源,设得太小则无法让很多人连上来
MaxRequestsPerChild
一个服务进程允许的最大请求数,设为0表示无限制
Listen 80
设定监听端口,默认80,表示监听所有ip的80端口,可以根据情况设成其他端口
也可以设为监听某一ip的端口,如xxx.xxx.xxx.xxx:80
这要在系统启动时激活网络(仅限固定ip),否则httpd服务启动失败
DocumentRoot "/var/www/html"
DocumentRoot设定apache的根目录
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
设定apache根目录的属性,Options后面的值表示:
ExecCGI 使该目录下CGI可执行
FollowSymLinks 允许链接至其他目录
Includes 允许使用SSI
Indexes 如果该目录下找不到index.html,则显示该目录下文件名称
MultiViews 根据特定条件自动选择并返回一个合适的文件(很少用到)
All 使用上面所有参数,除了MultiViews
AddDefaultCharset ISO-8859-1
apache缺省的显示语言编码,将ISO-8859-1改为GB2312,以显示简体中文
NameVirtualHost *
虚拟主机设定.所谓虚拟机指一个主机有多个域名对应,
该设定可以让不同的域名对应不同的页面,就好像存在多个主机一样
apache有两种方式的虚拟机:基于ip的虚拟机和基于名字的机
基于IP的虚拟主机要求使用不同的IP地址来区别不同的虚拟主机
基于名字的虚拟主机使用相同的IP地址来配置不同的虚拟主机
*可以用ip地址或internet上的主机名称来替代
<VirtualHost www.myvirtualhost.com>
ServerName www.myvirtualhost.com
DocumentRoot /var/www/html/myvirtualhost
ServerAdmin [email protected]
ErrorLog logs/www.myvirtualhost.com-error_log
CustomLog logs/www.myvirtualhost.com-access_log common
</VirtualHost>
上面是一个虚拟机的例子,即www.myvirtualhost.com
ServerAdmin 管理员电邮地址
ErrorLog 错误日志
CustomLog 访问日志
设定一个虚拟机至少需要ServerName和DocumentRoot两项,即服务器名和虚拟机网页的根目录.
可根据情况设定多个虚拟主机
设置无误后,用httpd -t测试有无语法错误
service httpd reload装载修改过的设定
现在可以用浏览器测试一下
最后,开放iptables中的80端口(取决于httpd.conf中的端口设定)
vi /etc/sysconfig/iptables
由于iptables是至上而下读取配置文件规则的,所以在
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 0:1023 --syn -j REJECT
这一行之上加入允许的规则就可以了.加入:
#httpd(apache)
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 80 --syn -j ACCEPT
然后service iptables restart
重启iptables服务
这样,可以从internet上访问这台主机的www服务了.
5 vsftpd
vsftpd是linux上常用的几种ftp服务器软件之一,vsftpd是very secure FTP daemon的缩写.
首先,将redhat linux 9 cd #3上的vsftpd-1.1.3-8.i386.rpm装好
chkconfig --level 35 vsftpd on
运行级3,5下,vsftpd服务开机自动加载
service vsftpd start
启动vsftpd服务
参数restart,stop可重启/停止服务
配置文件:
/etc/vsftpd/vsftpd.conf
是vsftpd的主要设定文件
/etc/vsftpd.ftpusers
不能访问ftp服务器的用户列表,默认root不可访问vsftpd服务器
/etc/vsftpd.user_list
这个文件中也是一些用户的列表
在/etc/vsftpd/vsftpd.conf中:
1)当userlist_enable=YES(默认)时,启用配置文件/etc/vsftpd.user_list
a)此时若没有userlist_deny=NO,则/etc/vsftpd.user_list中的用户也不可访问vsftpd服务器
b)此时若存在userlist_deny=NO,则仅接受/etc/vsftpd.user_list中存在的用户的登录请求(同时这些用户不存在于/etc/vsftpd.ftpusers中)
2)当userlist_enable=NO时,则不会启用配置文件/etc/vsftpd.user_list
下面简单说明一下/etc/vsftpd/vsftpd.conf的参数设定:
anonymous_enable=YES
允许匿名用户登录
local_enable=YES
允许本地用户登录(linux系统下实在的帐户)
write_enable=YES
允许上传
local_umask=022
本地用户上传文件的umask设为022
xferlog_enable=YES
启用记录上传/下载活动日志
connect_from_port_20=YES
tcp端口20作为ftp-data传送端口(一般21为ftp-control端口)
userlist_enable=YES
(请参看上面/etc/vsftpd.user_list配置文件的简单说明)
listen=YES
使用standalone模式
local_root=/var/ftp
本地用户登录后的目录为/var/ftp
如果没有这项设定,本地用户登录后的目录为自己的家目录
chroot_list_enable=YES
让下面配置文件中的本地用户不能到达家目录之外的地方
chroot_list_file=/etc/vsftpd.chroot_list
pasv_enable=YES
启用被动模式
#port_enable=YES
启用主动模式
注意,这两个参数只能出现一个,另一个必需用#注释掉(设为NO也不可以)
以上是vsftpd.conf的一些基本设定,更详悉的设定,请参看附录
修改好配置文件,重启一下服务service vsftpd restart
下面开放tcp 20,21端口
在/etc/sysconfig/iptables中加入:
#vsftpd(vsftp)
-A RH-Lokkit-0-50-INPUT -p tcp -m multiport --dport 20,21 --syn -j ACCEPT
(加入的位置在REJECT规则之前)
然后service iptables restart
重启iptables服务
这样,vsftpd服务器就架好了,可以用客户端测试一下
6 samba
samba的作用是提供Unix/Linux与Windows之间的通讯,并使她们之间实现文件/打印机/设备共享.在Windows网络中,设置好samba的Linux机器可以做服务器也可以做客户端.
安装以下几个rpm包:
samba
samba-common
samba-client
samba-swat
redhat-config-samba
其中samba-swat是以web页面方式配置samba的前端,redhat-config-samba是Xwindow下的图形化配置程式,她们的作用都是设定/etc/samba/smb.conf这个配置文件,此文件也可以手动编辑.
chkconfig --level 35 smb on
运行级3,5下,samba服务开机自动加载
service smb start
开启samba服务.参数包括start/restart/stop/reload等
samba的一些重要组成文件:
/usr/sbin/smbd SMB服务守护程式
/usr/sbin/nmbd NetBIOS服务守护程式
/etc/samba/smb.conf samba主配置文件
/usr/bin/smbclient 连接到SMB共享的客户端程式
/usr/bin/testparm 检验smb.conf有效性的脚本
/usr/bin/smbprint 此脚本可以将打印任务送至SMB主机的打印机
/usr/bin/smbstatus 列出本地主机的SMB连接
smbfs smbfs文件系统,可以将共享文件夹用mount命令挂载至本地
samba主配置文件/etc/samba/smb.conf中的主要参数设定:
该文件中#为信息注释符 ;为参数注释符
#======================= Global Settings =====================================
[global]
workgroup = MYGROUP
工作组名称
server string = Samba Server
主机说明
netbios name = SMBServer
在网络中的netbios名称,如果没有设定,预设值为HOSTNAME
hosts allow = 192.168.1. 192.168.2. 127.
设定哪些ip地址可访问主机
security = user
samba的安全级别,从低到高有四级:share/user/server/domain
share: 任何用户都可以访问服务器上的资源,无须帐号
user: 需要用户名和密码进行验证
server: 帐号验证交给另外一个服务器,如交给另一台NT服务器.
如果递交失败,就退到user安全级.
domain: 这个安全级别要求网络上存在一台Windows的主域控制器,samba将帐号递交
给该服务器验证.
user/server/domain要求用户在本地linux机器上也有系统帐户,否则不能访问.
这里只简单介绍一下share/user的用法,详悉设定请参看附录
encrypt passwords = yes
使用加密密码
smb passwd file = /etc/samba/smbpasswd
存放samba帐户密码的文件
local master = yes
samba服务器可以成为本地主浏览器
os level = 33
samba服务器的管理等级
domain master = yes
该服务器成为域浏览器
preferred master = yes
该服务器成为工作组中的首要主浏览器
#============================ Share Definitions ==============================
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775
上面是用户家 |
|