作者:eddiechen 原文地址:http://bbs.linuxsky.org/thread-7226-1-1.html
最近发现我以前写centos5.2的配置过程,里面有不少错误的地方。很多编译安装的软件,事实上,好像没有最后用到。这也是我重新写一次。
这次学会了几个sed的用法,所以很多的改动我尽量用sed来完成,这样就简单很多。还有就是系统的初始设置。我已经重新整理过来。基本可以做到一个脚本完成全过程。
下面的配置,很多关于安全的设置,都没有做,现在还没有搞的太明白,如果web是给内网使用或者测试,那么应该问题不大,如果是拿到外面使用,估计还是需要做不少的优化。如cache,防盗链这些。
参考文档
参考了网上不少文档,下面的3篇是重点,不少代码都是从下面复制过来的。
RHEL4上安装基于postfix的全功能邮件服务器(全部使用目前最新源码包构建) (http://bbs.chinaunix.net/thread-987344-1-1.html)
Nginx 0.7.x + PHP 5.2.6(FastCGI)搭建胜过Apache十倍的Web服务器(第4版)(http://blog.s135.com/read.php/366.htm)
基于CentOS构建高性能的LAMP平台.(http://bbs.linuxtone.org/thread-122-1-1.html)
文章内容分为7部分
一:系统约定
二:系统基本设置
三:下载软件
四:安装必须的软件
五:编译安装软件
六:配置apache PHP
七:测试 (通过phpinfo,phpmyadmin,sugarcrm的安装来测试)
一:系统约定
采用Centos5.2光盘,
软件源代码包存放位置 /usr/local/src
源码包编译安装位置(prefix) /usr/local/software_name
MySQL 数据库位置 /data/mysql/data
Apache 网站根目录 /data/www/wwwroot(虚拟主机在这个目录下)
Apache 虚拟主机日志根目录 /data/www/logs
Apache 运行账户 www:www
创建两个虚拟主机 test.com linux.com
所有的配置的文件修改,都做备份,备份的名字为 文件名.save
下面的实验是用vmware station 6 创建一个 redhat AS5的vm,安装centos5.2,安装的时候,选择安装语言是英文,采用文本方式来安装,选择最小化的安装。
yum的更新,采用本地光盘的方式,这样比较快捷。
我的机器基本设置
IP:192.168.1.200/255.255.255.0
网关:192.16.1.1
DNS:192.168.1.1
hostname:ns1
二:系统基本设置
我已经把所有需要配置的内容,做一个一个脚本,只需要运行一次就可以。- cd /usr/local/src
- vi /usr/local/src/init.sh
复制代码- #####################
- #Diabe IPV6
- cp /etc/modprobe.conf /etc/modprobe.conf.save
- echo "alias net-pf-10 off" >> /etc/modprobe.conf
- echo "alias ipv6 off" >> /etc/modprobe.conf
- #SSH
- cp /etc/ssh/sshd_config /etc/ssh/sshd_config.save
- sed -i '/#PermitRootLogin/s/#PermitRootLogin/PermitRootLogin/' /etc/ssh/sshd_config
- sed -i -e '74 s/^/#/' -i -e '76 s/^/#/' /etc/ssh/sshd_config
- sed -i "s/#UseDNS yes/UseDNS no/" /etc/ssh/sshd_config
- sed -i -e '44 s/^/#/' -i -e '48 s/^/#/' /etc/ssh/sshd_config
- /etc/init.d/sshd restart
- #停止 the “beep"
- cp /etc/inputrc /etc/inputrc.save
- sed -i '/#set bell-style none/s/#set bell-style none/set bell-style none/' /etc/inputrc
- #关闭SElinux
- cp /etc/sysconfig/selinux /etc/sysconfig/selinux.save
- sed -i '/SELINUX=enforcing/s/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
- #加载光驱
- mkdir /mnt/cdrom
- mount /dev/cdrom /mnt/cdrom
- echo "mount /dev/cdrom /mnt/cdrom" >> /etc/rc.local
- #设置yum使用本地光盘
- mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.save
- mv /etc/yum.repos.d/CentOS-Media.repo /etc/yum.repos.d/CentOS-Media.repo.save
- echo "[DVDISO]" >> /etc/yum.repos.d/dvdiso.repo
- echo "name=DVD ISO" >> /etc/yum.repos.d/dvdiso.repo
- echo "baseurl=file:///mnt/cdrom/" >> /etc/yum.repos.d/dvdiso.repo
- echo "enabled=1" >> /etc/yum.repos.d/dvdiso.repo
- echo "gpgcheck=0" >> /etc/yum.repos.d/dvdiso.repo
- #vim设置
- yum -y install vim-enhanced
- mv /bin/vi /bin/vi.save
- ln -s /usr/bin/vim /bin/vi
- cp /etc/vimrc /etc/vimrc.save
- sed -i "39 s/^/ set number \n filetype on\n set history=1000\n syntax on\n set tabstop=4\n set showmatch\n set vb t_vb=\n set mouse=a\n set ignorecase\n set autowrite\n /" /etc/vimrc
- #时间的设置
- yum -y install ntp
- ntpdate 210.72.145.44 && clock -w
- #安装常用软件
- yum -y install wget unzip
- #停止没有必要的服务
- chkconfig --list |grep 3:on |awk '{print $1}' |egrep -v 'sshd|network|syslog' |xargs -i{} chkconfig --level 3 {} off
- chkconfig --list | grep 3:on | cut -f1
- #重新启动
- init 6
- ####################
复制代码 三:下载软件- cd /usr/local/src
- vi list
复制代码- http://download.filehat.com/apache/httpd/httpd-2.2.8.tar.gz
- http://opensource.nchc.org.tw/COSA/CNS4/cronolog-1.6.2.tar.gz
- http://www.libgd.org/releases/gd-2.0.35.tar.bz2
- http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz
- http://mirror.optus.net/sourceforge/m/mc/mcrypt/libmcrypt-2.5.8.tar.gz
- http://jaist.dl.sourceforge.net/sourceforge/mcrypt/mcrypt-2.6.7.tar.gz
- http://www.openssl.org/source/openssl-0.9.8h.tar.gz
- http://openbsd.md5.com.ar/pub/OpenBSD/OpenSSH/portable/openssh-5.0p1.tar.gz
- http://mysql.byungsoo.net/Downloads/MySQL-5.0/mysql-5.0.51b.tar.gz
- http://cn2.php.net/get/php-5.2.6.tar.bz2/from/this/mirror
- http://downloads.phpchina.com/zend/optimizer/3.3.3/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
- ftp://ftp.cac.washington.edu/mail/imap.tar.Z
- http://puzzle.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.11.8.1-all-languages-utf-8-only.tar.gz
- http://dl.sugarforge.org/sugarcrm/Latest-SugarCE5.1/SugarCE5.1.0/SugarCE-5.1.0.zip
- http://mirror.optus.net/sourceforge/m/mh/mhash/mhash-0.9.9.tar.gz
复制代码 四:安装必须的软件
采用yum的方式安装- yum -y install gcc make patch gcc-c++ gcc-g77 flex bison autoconf automake \
- libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel libtiff-devel fontconfig-devel libXpm-devel gettext-devel pam-devel pcre-devel libtool libtool-ltdl
复制代码 五:编译安装软件
下面的内容,其实你可以复制到一个文本,比如 install.sh 运行这个脚本,我已经测试过了,整整运行了快1个小时,估计是我在vm上跑道原因。前提是你下载的软件和我是一样的,也就是软件都是通过上面的下载的。脚本到这里为止,因为zend的设置,我没法自动完成,只能你手动设置,如果谁知道怎么做,麻烦指导指导,注意php.ini 的位置 /usr/local/php/etc/
#设置session的存放位置和修改php上次文件的大小,最大文件25m- cp /usr/local/Zend/etc/php.ini /usr/local/Zend/etc/php.ini.save
- sed -i -e '991 s/;//' /usr/local/Zend/etc/php.ini
- sed -i 's/post_max_size = 8M/ post_max_size = 30M/g' /usr/local/Zend/etc/php.ini
- sed -i 's/upload_max_filesize = 2M/ upload_max_filesize = 25M/g' /usr/local/Zend/etc/php.ini
- cd /usr/local/src
复制代码 六:配置apache PHP
创建apache的启动脚本,apache编译包里带的那个启动脚本,有一个缺点,启动和停止没有任何提示,所以就用下面这个,比较方便。quot;Starting $prog: "
daemon $httpd $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/httpd
return $RETVAL
}
stop() {
echo -n [ DISCUZ_CODE_10 ]quot;Stopping $prog: "
killproc $httpd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/httpd $pid
}
reload() {
echo -n [ DISCUZ_CODE_10 ]quot;Reloading $prog: "
killproc $httpd -HUP
RETVAL=$?
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $httpd
RETVAL=$?
;;
restart)
stop
start
;;
condrestart)
if [ -f $pid ] ; then
stop
start
fi
;;
reload)
reload
;;
graceful|help|configtest|fullstatus)
$apachectl $@
RETVAL=$?
;;
*)
echo [ DISCUZ_CODE_10 ]quot;Usage: $prog {start|stop|restart|condrestart|reload|status"
echo [ DISCUZ_CODE_10 ]quot;|fullstatus|graceful|help|configtest}"
exit 1
esac
exit $RETVAL
###########################[/code]设置可运行和开机启动- chmod +x /etc/rc.d/init.d/httpd
- chkconfig --add httpd
- chkconfig --level 3 httpd on
复制代码 配置apache- groupadd www -g 48
- useradd -u 48 -g www www
- mkdir -p /data/www/wwwroot/linux.com
- mkdir -p /data/www/wwwroot/test.com
- mkdir -p /data/logs
- chmod +w /data/www/wwwroot
- chown -R www:www /data/www/wwwroot
- cp /usr/local/apache2/conf/httpd.conf /usr/local/apache2/conf/httpd.conf.save
复制代码 编辑httpd.conf- sed -i -e '121 s/^/#/' -i -e '122 s/^/#/' /usr/local/apache2/conf/httpd.conf
- sed -i -e "s/User daemon/User www/" -i -e "s/Group daemon/Group www/" /usr/local/apache2/conf/httpd.conf
- sed -i 's/DirectoryIndex index.html/ DirectoryIndex index.php index.html index.htm/g' /usr/local/apache2/conf/httpd.conf
- sed -i -e '101 s/^#//g' -i -e '374 s/^#//g' -i -e '389 s/^#//g' -i -e '392 s/^#//g' -i -e '401 s/^#//g' /usr/local/apache2/conf/httpd.conf
- sed -i "58 s/^/AddType application\/x-httpd-php .php/" /usr/local/apache2/conf/httpd.conf
复制代码 编辑php.ini- cp /usr/local/php/etc/php.ini /usr/local/php/etc/php.ini.save
- sed -i '205 s#;open_basedir =#open_basedir = /data/www/wwwroot:/tmp#g' /usr/local/php/etc/php.ini
- sed -i '/expose_php/s/On/Off/' /usr/local/php/etc/php.ini
- sed -i '/display_errors/s/On/Off/' /usr/local/php/etc/php.ini
复制代码 配置虚拟主机
备份相关配置文件- mv /usr/local/apache2/conf/extra/httpd-vhosts.conf /usr/local/apache2/conf/extra/httpd-vhosts.conf.save
- mv /usr/local/apache2/conf/extra/httpd-default.conf /usr/local/apache2/conf/extra/httpd-default.conf.save
- mv /usr/local/apache2/conf/extra/httpd-mpm.conf /usr/local/apache2/conf/extra/httpd-mpm.conf.save
复制代码 创建3个apache相关的文件- vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
复制代码- NameVirtualHost *:80
- <VirtualHost *:80>
- ServerAdmin shake.chen@gmail.com
- DocumentRoot "/data/www/wwwroot/test.com"
- ServerName test.com
- ServerAlias bbs.test.com
- ErrorLog "logs/test.com-error_log"
- CustomLog "|/usr/local/cronolog/sbin/cronolog /data/logs/access_www.test.com.%Y%m%d" combined
- </VirtualHost>
- <VirtualHost *:80>
- ServerAdmin shake.chen@gmail.com
- DocumentRoot "/data/www/wwwroot/linux.com"
- ServerName linux.com
- ServerAlias bbs.linux.com
- ErrorLog "logs/linux.com-error_log"
- CustomLog "|/usr/local/cronolog/sbin/cronolog /data/logs/access_www.linux.com.%Y%m%d" combined
- </VirtualHost>
复制代码- vi /usr/local/apache2/conf/extra/httpd-default.conf
复制代码- Timeout 15
- KeepAlive Off
- MaxKeepAliveRequests 50
- KeepAliveTimeout 5
- UseCanonicalName Off
- AccessFileName .htaccess
- ServerTokens Prod
- ServerSignature Off
- HostnameLookups Off
复制代码- vi /usr/local/apache2/conf/extra/httpd-mpm.conf
复制代码- <IfModule mpm_prefork_module>
- ServerLimit 2000
- StartServers 10
- MinSpareServers 10
- MaxSpareServers 15
- MaxClients 2000
- MaxRequestsPerChild 10000
- </IfModule>
复制代码 七:测试
修改本地hosts文件
192.168.1.200 www.test.com
启动Apache测试php- cd /data/www/wwwroot/test.com
- vi info.php
复制代码 这个时候 http://192.168.1.200/info.php 或者 http://www.test.com/info.php 就可以看到php的信息。
安装phpadmin- cd /usr/local/src
- tar zxvf phpMyAdmin-2.11.8.1-all-languages-utf-8-only.tar.gz
- cp -rf phpMyAdmin-2.11.8.1-all-languages-utf-8-only /data/www/wwwroot/test.com/phpmyadmin
- cd /data/www/wwwroot/test.com/phpmyadmin
- cp config.sample.inc.php config.inc.php
- sed -i -e "/^\$cfg\['blowfish_secret'\]/{ s@'';@'88888888888888888';@; }" config.inc.php
复制代码 这个时候,你就可以通过 http://192.168.1.200/phpmyadmin 或者http://www.test.com/phpmyadmin 来进行数据库管理, 我上面已经给mysql设置的密码。
user:root
password:chenshake
安装sugarcrm
sugarcrm的邮件模块需要用到imap,ssl,所以我编译的时候,需要吧imap,curl模块编译进去.- cd /usr/local/src
- unzip SugarCE-5.1.0.zip
- mv SugarCE-Full-5.1.0/ /data/www/wwwroot/test.com/sugarcrm
- chmod -R 777 /data/www/wwwroot/test.com/sugarcrm/
复制代码 这个时候,你通过连接访问一步一步安装就基本没有问题了。 |