服务器安装配置流水帐

一、安装系统
因为业务系统的原因,只能采用CentOS5.X版本,这里采用的是5.8 x86_64版本
1)安装界面语言,选择英文,不选简体中文
2)分区,我不太喜欢用LVM,还是用基本文件系统

/ 5G opt和home没有单独分区,都在/
/boot 128M 事实上即便是100M都用不完
/tmp 2G 临时文件,频繁读写,单独分个区
/usr 8G 这个并不需要很大,事实上8G已经太大了点
/var 40G 大量日志会频繁写到这里,单独分割区
swap 2G 2G足够,现在服务器内存都很大,并不需要按照2倍内存大小来分割这个区
/www 所有剩余的空间 WEB文件和一些应用全都会放在这里
3)安装类型,不选,选择现在定制,勾选Applications->Editors->VIM,勾选Base System->Base,勾选LANGUAGES->Chinese Support即可

系统安装完成后,第一件事,同步一下时间
ntpdate us.pool.ntp.org
我习惯用vim,不带代码高亮的vi用着很痛苦
shell> mv /bin/vi /bin/vi.bak
shell> ln -s /usr/bin/vim /bin/vi
二、配置YUM
1)备份初始的CentOS-Base.repo
2)关闭fastmirror
3)添加自定义镜像源源,南方电信用163,北方网通用搜狐;有必要的话再添加epel源
4)修改yum.conf排除一些包的升级,如php*5.3、kernel*等
shell>mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
shell>vi /etc/yum/pluginconf.d/fastestmirror  -->enable = 0
shell>wget http://mirrors.163.com/.help/CentOS5-Base-163.repo
shell>vi /etc/yum.conf -->exclude=php*5.3* exclude=kernel*
三、设置Selinux、SSHD、iptables与其他服务
关闭selinux可以通过setup或者修改/etc/selinux/config来实现,记得重启
shell>vi /etc/selinux/config -->SELINUX=disabled
SSH服务,只允许使用SSH2协议,使用1024位加密,禁止root登录,禁止空密码
shell>vi /etc/ssh/sshd_config
port xxxx #最好指定一个10000以上的端口
Protocol 2 #只是用SSH2
ServerKeyBits 1024 #使用1024位加密
MaxAuthTries  x    #指定一个密码错误的最大重试次数
UseDNS no
PasswordAuthentication yes
PermitRootLogin no #禁止root登录
修改/etc/sysconfig/i18n解决中文乱码,关闭不必要的众多系统服务
  shell>vi /etc/sysconfig/i18n
  LANG="en_US.UTF-8" #指定系统使用的字符集
  LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN" #指定应用程序使用的字符集,这行可以不要,注销掉
  SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en" #系统支持的字符集,重要
  SYSFONT="latarcyrheb-sun16"
使用Putty或SecureCRT等ssh客户端时,记得指定字符集为UTF8,与上面例子中的字符集对应。

四、修改系统时区,配置NTPD服务,严重不建议使用ntpdate这种断点式的时间更新方法,可能会引发很严重的问题

五、安装Apache+Mysql+PHP
通过Yum安装,过程很简单,安装之前记得yum list php mysql httpd,看看所获取的软件包版本是否是自己需要的

#安装/更新公用库和一些常用的RPM
yum -y install gcc gcc-c++ autoconf make libtool libXaw dialog expect ntp expat-devel libxml2-devel libevent libevent-devel screen
 
#安装/更新Apache/PHP/MySQL/MemCache
yum -y install httpd php php-devel mysql mysql-server mysql-devel memcached
yum -y install php-pecl-memcache
 
#安装常用PHP扩展
yum -y install php-mysql php-gd php-xml php-mcrypt php-mbstring php-pear php-snmp libdbi-dbd-mysql
 
#Zend和eacclerator如果能找rpm包,也可以通过这种方式安装
分别为apache和mysql建立用户,创建文档目录,日志目录,设置权限等等,日志和数据目录最好在不同的挂载点上


#创建一个脚本来完成目录的创建于权限设置


htdocs="/www/htdocs"
mysql="/data/mysql"
PHPLOG="/var/log/php"
MYSQLLOG="/var/log/mysql"
 
if [ ! -d $mysql ]; then
        mkdir -p $mysql
fi
 
chown -R mysql:mysql $mysql
chmod 700 $mysql
 
if [ ! -d $htdocs ]; then
        mkdir -p $htdocs
fi
chown -R apache:apache $htdocs
 
if [ ! -d $PHPLOG ]; then
        mkdir -p $PHPLOG
fi
chown -R apache:apache $PHPLOG
 
if [ ! -d $MYSQLLOG ]; then
        mkdir -p $MYSQLLOG
fi
chown -R mysql:mysql $MYSQLLOG
chmod 700 $MYSQLLOG
chown -R apache:apache /var/lib/php/session

六、配置Proftpd建立ftp服务
Purefptd和Proftpd都很不错,我是因为找不到Pureftpd的RPM包,而且越来越不愿意手动编译安装所以才选用了Proftpd,同样支持虚拟用户/mysql,使用ftpasswd的命令创建/修改/删除用户的时候要输入的参数是在比较多,我写过一个很烂但是可以很简单的执行这些操作的脚本,写的很丑,就不贴出来了:-)
shell>yum install proftpd
shell>chkconfig –level 3 proftpd on
shell>vi /etc/proftpd.conf
#简单的配置文件修改
 #添加下面代码进配置文件:
AuthUserFile /etc/ftpd.passwd
AuthGroupFile /etc/ftpd.group
#关闭检测 shells:
RequireValidShell off
 #设置仅使用虚拟用户认证:
AuthOrder mod_auth_file.c
 #禁止PAM认证:
PersistentPasswd off
AuthPAM off
 #限制改变根目录:
DefaulRoot ~
 #结束
shell>cd /usr/sbin/
shell>wget http://www.castaglia.org/proftpd/contrib/ftpasswd
shell>chmod +x ftpasswd
ftpasswd工具的格式如下:
添加用户:
ftpasswd -passwd -file /etc/proftpd/ftpd.passwd -uid {uid} -gid {gid} -home {home} -shell /sbin/nologin -des -name {username}
 更改密码: 
ftpasswd -passwd -change-password -file /etc/proftpd/ftpd.passwd -name {username}
删除用户: 
ftpasswd -passwd -delete-user -file /etc/proftpd/ftpd.passwd -name {username}
更多命令执行 ftpasswd -help或查看:http://www.castaglia.org/proftpd/contrib/ftpasswd.html proftpd详细的配置文件说明在 这里,常见问题在 这里 

七、配置Awstats流量统计
到Awstats.org下载最新的RPM包安装即可,当然,按日统计的话,Apache里要配置Cronolog进行日志轮询
shell> yum -y install perl-libwww-perl.noarch
shell> wget http://prdownloads.sourceforge.net/awstats/awstats-7.0-1.noarch.rpm
shell> rpm -ivh awstats-7.0-1.noarch.rpm
shell> cd /usr/local/awstats/tools/
shell> ./awstats_configure.pl
八、配置服务器监测报告
1)配置Logwath进行系统监控,不支持Sendmail的话可以配置MSMTP使用SMTP发送邮件
shell>vi /usr/share/logwatch/default.conf/logwatch.conf
Mailto = [email protected] #接受报告的邮箱
Range = yestoday  #报告的范围,默认昨天
Detail = 10 #报告内容的详细程度
Service = All #默认全部,可以单独指定
mailer="/usr/local/msmtp/bin/msmtp -t" #我机器上没有sendmail,使用的是msmtp
MSMTP我没有找到YUM安装包,开始手动编译安装 
wget http://downloads.sourceforge.net/msmtp/msmtp-1.4.16.tar.bz2
tar jxvf msmtp-1.4.16.tar.bz2
cd msmtp-1.4.16
./configure –prefix=/usr/local/msmtp
make && make install
 
 
配置MSMTP帐户
cd /usr/local/msmtp/etc
vi etc/msmtprc 
 #示例
# Set default values for all following accounts.
defaults
logfile /var/log/msmtp.log
account srvlogwatch


# SMTP邮件服务器地址
host mail.rexian.net.cn
# 发送的邮件Email
from [email protected]
auth login


# 邮件服务器登录账号
user [email protected]


# 邮件服务器登陆密码
password xxxxx
# Set a default account
account default : srvlogwatch


保存退出,然后
chmod 600 msmtprc
注:msmtprc设置属性为600后,如果web用户没有对这个文件的读取权限会导致无法在web或其他应用中使用

shell里执行:
/usr/local/msmtp/bin/msmtp [email protected]

输入任意字符,按Ctrl+D退出,看看是否能够收到邮件
还可以通过mutt发送(指定发件人/带附件/有抄送)
echo "邮件内容" | mutt -e "my_hdr from:kuka<[email protected]>" -a /root/file.txt.zip -s "邮件主题" "用户1<[email protected]>" -c [email protected]

2)配置服务器厂商的硬件检测软件,如戴尔的Dset等,如果有办法定时检测,通过邮件发送就好了,还没研究

九、系统流量监控
我用的是轻量级的Monitorix,感觉还行,其他的那些功能强悍的以后再说吧

十、优化内核,修改文件句柄数
1)修改sysctl.conf
shell>vi /etc/sysctl
net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog =  32768
net.core.somaxconn = 32768
net.ipv4.tcp_max_tw_buckets = 180000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096        87380   4194304
net.ipv4.tcp_wmem = 4096        16384   4194304
 
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
 
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
 
net.ipv4.tcp_tw_recycle = 1
#net.ipv4.tcp_tw_len = 1
net.ipv4.tcp_tw_reuse = 1
 
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800
 
#################################################
#net.ipv4.tcp_fin_timeout = 30
#net.ipv4.tcp_keepalive_probes = 5
#net.ipv4.tcp_keepalive_intvl = 15
#net.ipv4.tcp_keepalive_time = 1800
#net.ipv4.ip_local_port_range = 1024  65535
 
net.nf_conntrack_max = 655360
 
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
 
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
 
net.ipv6.conf.all.disable_ipv6 = 1
修改完成后sysctl -p立即生效

2)关于文件句柄
在Linux下,用ulimit -n 命令看到的是单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。
shell>vi /etc/security/limits.conf
#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4
*               -       nofile          65536
增加最后一行,修改句柄数量为65536 

*表示针对所有用户
 hard/soft分别是指硬性限制还是软性限制 
65536是指句柄数量



你可能感兴趣的:(服务器安装配置流水帐)