文章详细内容
Jan
09
作者:modn

一、系统约定RPM包和源码包存放位置

RPM包和源码包存放位置 /usr/local/src
源码包编译安装位置(prefix) /usr/local/xxx
脚本以及维护程序存放位置 /usr/local/sbin
MySQL 数据库位置 /var/lib/mysql
Apache 网站根目录 /home/www
Apache 虚拟主机曰志根目录 /data/logs/www
yum RPM包信息文件 /etc/yum.list

二、系统环境部署及调整

1. 检查系统是否正常
# more /var/log/messages //检查有无系统内核级错误信息
# demesg //检查硬件设备是否有错误信息
# ifconfig //检查网卡设置是否正确
# ping www.ioicn.com.cn   // 检查网络是否正常

2. 关闭不需要的服务
# export LANG='en_US' //设置语言
# ntsysv //选择启动的服务
   以下仅列出需要启动的服务,未列出的服务一律关闭:
crond
irqbalance 仅当服务器CPU为S.M.P架构或支持双核心、HT技术时,才需开启,否则关闭。
microcode_ctl
network
random
sendmail
sshd
syslog

3. 对TCP/IP网络参数进行调整,加强抗SYN Flood能力
# echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf //将net.ipv4.tcp_syncookies = 1写入sysctl.conf 文件
# sysctl -p //查看

4. 配置yum
# rpm --import /usr/share/doc/centos-release-3/RPM-GPG-KEY-CentOS-3
# yum list | tee /etc/yum.list //读取yum list 数据,将其输出到 /etc/yum.list。

5. 修改命令history记录
# vi /etc/profile
   找到 HISTSIZE=1000 改为 HISTSIZE=50

6. 定时校正服务器时间
# yum install ntp
# crontab -e
    加入一行 */15 * * * * ntpdate 210.72.145.44

7. 重新启动系统
# init 6

8. 使用 yum 程序安装所需开发包(以下为标准的 RPM 包名称)
# yum install gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel zlib-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel

9. 源码编译安装所需包 (Source)
(1) GD2
# cd /usr/local/src
# wget http://www.ioicn.org/download/tools/gd-2.0.33.tar.gz
# tar xzvf gd-2.0.33.tar.gz
# cd gd-2.0.33
# ./configure --prefix=/usr/local/gd2 --mandir=/usr/share/man //./configure 配置。
# make //make 是用来编译的,它从 Makefile 中读取指令,然后编译。
# make install //make install 是用来安装的,它也从 Makefile 中读取指令,安装到指定的位置。
(2) Apache 曰志截断程序
# cd /usr/local/src
# wget http://www.ioicn.org/download/tools/cronolog-1.6.2.tar.gz
# tar xzvf cronolog-1.6.2.tar.gz
# cd cronolog-1.6.2
# ./configure --prefix=/usr/local/cronolog
# make
# make install
(3) libxml 库程序
# cd /usr/local/src
# wget http://www.ioicn.org/download/tools/libxml2-2.6.26.tar.bz2
# tar xjvf libxml2-2.6.26.tar.bz2
# cd libxml2-2.6.26
# ./configure --prefix=/usr/local/libxml2
# make
# make install

10. 升级 OpenSSL和OpenSSH
# cd /usr/local/src
# wget http://www.ioicn.org/download/tools/openssl-0.9.7j.tar.gz
# tar xzvf openssl-0.9.7j.tar.gz
# cd openssl-0.9.7j
# ./config --prefix=/usr/local/openssl
# make
# make test
# make install
# cd ..
# wget http://www.ioicn.org/download/tools/openssh-4.2p1.tar.gz
# tar xzvf openssh-4.2p1.tar.gz
# cd openssh-4.2p1
# ./configure --prefix=/usr   --with-pam   --with-zlib=/usr/local/zlib   --with-ssl-dir=/usr/local/openssl   --with-md5-passwords   --mandir=/usr/share/man
# make
# make install
   如要禁止 root 直接登录,此处先建立一个普通系统用户:
# useradd username
# passwd username
# echo 'Protocol 2' >> /etc/ssh/sshd_config
# echo 'Protocol 2' >> /usr/etc/sshd_config
# echo 'PermitRootLogin no' >> /etc/ssh/sshd_config
# echo 'PermitRootLogin no' >> /usr/etc/sshd_config
# /etc/rc.d/init.d/sshd restart

三、编译安装 L.A.M.P 环境1. 编译安装 MySQL
# cd /usr/local/src
# wget http://www.ioicn.org/download/tools/mysql-5.0.26.tar.gz
# tar xzvf mysql-5.0.26.tar.gz
# cd mysql-5.0.26
# CHOST="i686-pc-linux-gnu" CFLAGS="-O3 -msse2 -mmmx -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" CXXFLAGS="-O3 -msse2 -mmmx -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer"   ./configure --prefix=/usr/local/mysql   --localstatedir=/var/lib/mysql   --with-comment=Source   --with-server-suffix=-Comsenz   --with-mysqld-user=mysql   --without-debug   --with-big-tables   --with-charset=latin1   --with-collation=latin1_swedish_ci   --with-extra-charsets=all   --with-pthread   --enable-static   --enable-thread-safe-client   --with-client-ldflags=-all-static   --with-mysqld-ldflags=-all-static   --enable-assembler   --without-isam   --without-innodb   --without-ndb-debug
# make
# make install
# useradd mysql //添加 mysql 用户
# cd /usr/local/mysql
# bin/mysql_install_db --user=mysql
# chown -R root:mysql . //设置权限,注意后面有一个 "."
# chown -R mysql /var/lib/mysql //设置 mysql 目录权限
# chgrp -R mysql . //注意后面有一个 "."
# cp share/mysql/my-huge.cnf /etc/my.cnf
# cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld //开机自动启动 mysql。
# chmod 755 /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# /etc/rc.d/init.d/mysqld start //启动 MySQL
# bin/mysqladmin -u root password "password_for_root"
# service mysqld stop //关闭 MySQL

 

2. 编译安装 Apache
# cd /usr/local/src
# wget http://www.ioicn.org/download/tools/httpd-2.2.3.tar.bz2
# tar xjvf httpd-2.2.3.tar.bz2
# cd httpd-2.2.3
# CHOST="i686-pc-linux-gnu" CFLAGS="-O3 -msse2 -mmmx -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" ./configure --prefix=/usr/local/apache2 --enable-module=so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared --enable-cache --enable-file-cache --enable-mem-cache --enable-disk-cache --enable-static-support --enable-static-htpasswd --enable-static-htdigest --enable-static-rotatelogs --enable-static-logresolve --enable-static-htdbm --enable-static-ab --enable-static-checkgid --disable-cgid --disable-cgi --disable-userdir
# make
# make install
# echo '/usr/local/apache2/bin/apachectl start ' >> /etc/rc.local //将 apachectl 的调用加入到你的系统启动文件中。
注解:
./configure //配置源代码树
--prefix=/usr/local/apache2 //体系无关文件的顶级安装目录PREFIX ,也就Apache的安装目录。
--enable-module=so //打开 so 模块,so 模块是用来提 DSO 支持的 apache 核心模块
--enable-deflate=shared //支持网页压缩
--enable-expires=shared //支持 HTTP 控制
--enable-rewrite=shared //支持 URL 重写
--enable-cache   //支持缓存
--enable-file-cache   //支持文件缓存
--enable-mem-cache   //支持记忆缓存
--enable-disk-cache   //支持磁盘缓存
--enable-static-support //支持静态连接(默认为动态连接)
--enable-static-htpasswd //使用静态连接编译 htpasswd - 管理用于基本认证的用户文件
--enable-static-htdigest //使用静态连接编译 htdigest - 管理用于摘要认证的用户文件
--enable-static-rotatelogs //使用静态连接编译 rotatelogs - 滚动 Apache 曰志的管道曰志程序
--enable-static-logresolve //使用静态连接编译 logresolve - 解析 Apache 曰志中的IP地址为主机名
--enable-static-htdbm //使用静态连接编译 htdbm - 操作 DBM 密码数据库
--enable-static-ab //使用静态连接编译 ab - Apache HTTP 服务器性能测试工具
--enable-static-checkgid //使用静态连接编译 checkgid
--disable-cgid //禁止用一个外部 CGI 守护进程执行CGI脚本
--disable-cgi //禁止编译 CGI 版本的 PHP
--disable-userdir //禁止用户从自己的主目录中提供页面

3. 编译安装 PHP
# cd /usr/local/src
# wget http://www.ioicn.org/download/tools/php-5.1.6.tar.bz2
# tar xjvf php-5.1.6.tar.bz2
# cd php-5.1.6
# CHOST="i686-pc-linux-gnu" CFLAGS="-O3 -msse2 -mmmx -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" CXXFLAGS="-O3 -msse2 -mmmx -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer"   ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs   --with-zlib-dir --with-bz2 --with-tiff-dir   --with-gd=/usr/local/gd2 --with-freetype-dir   --with-jpeg-dir   --with-png-dir   --with-ttf   --enable-mbstring   --with-mysql=/usr/local/mysql   --with-config-file-path=/etc   --disable-ipv6   --enable-static
# make
# make install
# cp php.ini-dist /etc/php.ini

4. 安装 Zend Optimizer
# cd /usr/local/src
# wget http://www.ioicn.org/download/to ... glibc21-i386.tar.gz
# tar xzvf ZendOptimizer-3.0.2-linux-glibc21-i386.tar.gz
# ./ZendOptimizer-3.0.2-linux-glibc21-i386/install.sh
   安装 Zend Optimizer 过程的最后不要选择重启 Apache。

5. 整合 Apache 与 PHP
# vi /usr/local/apache2/conf/httpd.conf
   查找:(设置 WEB 目录)
DocumentRoot "/usr/local/apache2/htdocs"
   替换为:
DocumentRoot "/home/www"
   查找:
AddType application/x-gzip .gz .tgz
   在该行下面添加:
AddType application/x-httpd-php .php
   查找:(禁止浏览网页目录)
Options Indexes FollowSymLinks
   替换为:
Options FollowSymLinks
   查找:(设置静态网页)
LoadModule rewrite_module modules/mod_rewrite.so
   在该行下面添加:
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)/archiver/([a-z0-9\-]+\.html)$ $1/archiver/index.php?$2
    RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay.php?fid=$2&page=$3
    RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page\%3D$4&page=$3
    RewriteRule ^(.*)/profile-(username|uid)-(.+)\.html$ $1/viewpro.php?$2=$3
</IfModule>

   查找:(启动 CGI)
<Directory "/usr/local/apache2/cgi-bin">
AllowOverride None
   在该行下面添加:
Options +ExecCGI
查找:(设置 WEB 默认文件)
DirectoryIndex index.html
   替换为:
DirectoryIndex index.html index.htm index.php //在 WEB 目录不到默认文件,httpd 就会执行 /var/www/error/noindex.html
   查找:(如果安装后出现You don't have permission to access / on this server.)
Deny from all //拒绝主机访问
   全部替换为:
Allow from all   //允许主机访问
   修改完成后保存退出。
# mkdir /home/www
# /usr/local/apache2/bin/apachectl restart //重启 Apache。

6. 查看确认 L.A.M.P 环境信息
# echo '#!/usr/local/php/bin/php\
<?php phpinfo(); ?> ' > /usr/local/php/phpinfo.php //创建 phpinfo.php
# chmod 755 /usr/local/php/phpinfo.php
# /usr/local/php/phpinfo.php > /usr/local/php/phpinfo
# more /usr/local/php/phpinfo
   检查 phpinfo 中的各项信息是否正确。

7. 测试环境
# echo '<?php phpinfo(); ?> ' > /home/www/phpinfo.php
# chmod 755 /home/www/phpinfo.php
   用浏览器打开 http://127.0.0.1/phpinfo.php
# echo '<?php $link=mysql_connect('localhost','root','password_for_mysql'); if(!$link) echo "fail"; else echo "success"; mysql_close(); ?> ' > /home/www/testdb.php
# chmod 755 /home/www/testdb.php
# service mysqld start
   用浏览器打开 http://127.0.0.1/testdb.php

四、服务器安全性设置1. 设置系统防火墙
# touch /usr/local/sbin/fw.sh
   将以下脚本命令粘贴到 fw.sh 文件中。

 

#! /bin/bash
Set FTP Transfer Mode
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
Inital iptables Chains Policy
/sbin/iptables -F -t filter
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
Enable Native Network Transfer
/sbin/iptables -A INPUT -i lo -j ACCEPT
ICMP Control
/sbin/iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
WWW Service
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
FTP Service
/sbin/iptables -A INPUT -p tcp --dport 21 -j ACCEPT
SSH Service
/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Deny All Other Connections
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# chmod 755 /usr/local/sbin/fw.sh
# echo '/usr/local/sbin/fw.sh' >> /etc/rc.local
# /usr/local/sbin/fw.sh

推荐(0)
收藏

发表评论: