<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>陈书艺—Creative,Calmness,Passion,Unremitting,Belief &#187; Apache</title>
	<atom:link href="http://www.cnedwin.com/tag/apache/feed" rel="self" type="application/rss+xml" />
	<link>http://www.cnedwin.com</link>
	<description>Edwin Chen's Blog</description>
	<lastBuildDate>Mon, 29 Jun 2009 11:05:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CentOS 5.1部署L.A.M.P环境配置手册</title>
		<link>http://www.cnedwin.com/18.html</link>
		<comments>http://www.cnedwin.com/18.html#comments</comments>
		<pubDate>Tue, 29 Apr 2008 19:00:43 +0000</pubDate>
		<dc:creator>Edwin</dc:creator>
				<category><![CDATA[技术探讨]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[手册]]></category>
		<category><![CDATA[环境]]></category>
		<category><![CDATA[部署]]></category>

		<guid isPermaLink="false">http://www.cnedwin.com/?p=18</guid>
		<description><![CDATA[刚刚为公司的系统部门编写的公司LAMP部署标准，基于CentOS5.1 32/64位系统。
一、系统约定
软件源代码包存放位置        /usr/local/src
源码包编译安装位置(prefix)        /usr/local/software_name
脚本以及维护程序存放位置        /usr/local/sbin
MySQL 数据库位置        /var/lib/mysql（可按情况设置）
Apache 网站根目录        /www/domain.com（可按情况设置）
Apache 虚拟主机日志根目录        /var/logs/www（可按情况设置）
Apache 运行账户        www:www

二、系统环境部署及调整
1. 检查系统是否正常
# more /var/log/messages        （检查有无系统级错误信息）
# dmesg （检查硬件设备是否有错误信息）
# ifconfig（检查网卡设置是否正确）
# ping www.moophp.org （检查网络是否正常）
2. 关闭不需要的服务
# export LANG=&#8217;en_US&#8217; //设置语言
# ntsysv
以下仅列出需要启动的服务，未列出的服务一律推荐关闭：
atd
crond
irqbalance
vsftpd   (FTP服务可选)
microcode_ctl
network
ntpd
sendmail
sshd
syslog
3. 重新启动系统
# init 6
4. 配置 vim
# vi /root/.bashrc
在 alias mv=&#8217;mv -i&#8217; 下面添加一行：alias vi=&#8217;vim&#8217; 保存退出。
# echo &#8217;syntax on&#8217; &#62; /root/.vimrc
5. [...]]]></description>
			<content:encoded><![CDATA[<p>刚刚为公司的系统部门编写的公司LAMP部署标准，基于CentOS5.1 32/64位系统。</p>
<p>一、系统约定<br />
软件源代码包存放位置        /usr/local/src<br />
源码包编译安装位置(prefix)        /usr/local/software_name<br />
脚本以及维护程序存放位置        /usr/local/sbin<br />
MySQL 数据库位置        /var/lib/mysql（可按情况设置）<br />
Apache 网站根目录        /www/domain.com（可按情况设置）<br />
Apache 虚拟主机日志根目录        /var/logs/www（可按情况设置）<br />
Apache 运行账户        www:www</p>
<p><span id="more-18"></span></p>
<p>二、系统环境部署及调整<br />
1. 检查系统是否正常<br />
# more /var/log/messages        （检查有无系统级错误信息）<br />
# dmesg （检查硬件设备是否有错误信息）<br />
# ifconfig（检查网卡设置是否正确）<br />
# ping <a href="http://www.moophp.org/" target="_blank">www.moophp.org</a> （检查网络是否正常）</p>
<p>2. 关闭不需要的服务<br />
# export LANG=&#8217;en_US&#8217; //设置语言<br />
# ntsysv<br />
以下仅列出需要启动的服务，未列出的服务一律推荐关闭：<br />
atd<br />
crond<br />
irqbalance<br />
vsftpd   (FTP服务可选)<br />
microcode_ctl<br />
network<br />
ntpd<br />
sendmail<br />
sshd<br />
syslog</p>
<p>3. 重新启动系统<br />
# init 6</p>
<p>4. 配置 vim<br />
# vi /root/.bashrc<br />
在 alias mv=&#8217;mv -i&#8217; 下面添加一行：alias vi=&#8217;vim&#8217; 保存退出。<br />
# echo &#8217;syntax on&#8217; &gt; /root/.vimrc</p>
<p>5. 使用 yum 程序安装所需开发包（以下为标准的 RPM 包名称）<br />
a.修改/etc/yum.repos.d/CentOS-Base.repo，将镜象站点地址改为在中国的镜象站点地址。<br />
修改如下：</p>
<p># CentOS-Base.repo<br />
#<br />
# This file uses a new mirrorlist system developed by Lance Davis for CentOS.<br />
# The mirror system uses the connecting IP address of the client and the<br />
# update status of each mirror to pick mirrors that are updated to and<br />
# geographically close to the client. You should use this for CentOS updates<br />
# unless you are manually picking other mirrors.<br />
#<br />
# If the mirrorlist= does not work for you, as a fall back you can try the<br />
# remarked out baseurl= line instead.<br />
#<br />
#</p>
<p>[base]<br />
name=CentOS-$releasever &#8211; Base<br />
baseurl=http://mirror.be10.com/centos/$releasever/os/$basearch/<br />
gpgcheck=1<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br />
protect=1</p>
<p>#released updates<br />
[updates]<br />
name=CentOS-$releasever &#8211; Updates<br />
baseurl=http://mirror.be10.com/centos/$releasever/updates/$basearch/<br />
gpgcheck=1<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br />
protect=1</p>
<p>#packages used/produced in the build but not released<br />
[addons]<br />
name=CentOS-$releasever &#8211; Addons<br />
baseurl=http://mirror.be10.com/centos/$releasever/addons/$basearch/<br />
gpgcheck=1<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br />
protect=0</p>
<p>#additional packages that may be useful<br />
[extras]<br />
name=CentOS-$releasever &#8211; Extras<br />
baseurl=http://mirror.be10.com/centos/$releasever/extras/$basearch/<br />
gpgcheck=1<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br />
protect=0</p>
<p>#additional packages that extend functionality of existing packages<br />
[centosplus]<br />
name=CentOS-$releasever &#8211; Plus<br />
baseurl=http://mirror.be10.com/centos/$releasever/centosplus/$basearch/<br />
gpgcheck=1<br />
enabled=0<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5<br />
protect=1</p>
<p>#contrib &#8211; packages by Centos Users<br />
[contrib]<br />
name=CentOS-$releasever &#8211; Contrib<br />
baseurl=http://mirror.be10.com/centos/$releasever/contrib/$basearch/<br />
gpgcheck=1<br />
enabled=0<br />
protect=0<br />
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5</p>
<p>#packages in testing<br />
[testing]<br />
name=CentOS-5 &#8211; Testing<br />
baseurl=http://mirror.be10.com/centos/5/testing/i386/</p>
<p>gpgcheck=1<br />
enabled=0<br />
protect=0</p>
<p>b.保存后更新系统,执行：<br />
# yum upgrade<br />
c.建议更新所有列出的程序<br />
d.最后安装需要的开发库：<br />
# yum install vim-enhanced gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel kernel</p>
<p>6. a.定时校正服务器时钟，启用ntpd服务<br />
# service ntpd start<br />
b.对TCP/IP网络参数进行调整，加强抗SYN Flood能力<br />
# echo &#8216;net.ipv4.tcp_syncookies = 1&#8242; &gt;&gt; /etc/sysctl.conf<br />
将net.ipv4.tcp_syncookies = 1写入sysctl.conf 文件<br />
# sysctl -p<br />
查看结果</p>
<p>7. 源码编译安装所需包(Source)<br />
(1) GD2<br />
# cd /usr/local/src<br />
# wget –c <a href="http://www.ismole.net/downloads/gd-2.0.35.tar.gz" target="_blank">http://www.ismole.net/downloads/gd-2.0.35.tar.gz</a><br />
# tar xzvf gd-2.0.35.tar.gz<br />
# cd gd-2.0.35<br />
# ./configure &#8211;prefix=/usr/local/gd2<br />
# make<br />
# make install</p>
<p>(2) LibXML2<br />
# cd /usr/local/src<br />
# wget –c <a href="http://www.ismole.net/downloads/libxml2-2.6.32.tar.gz" target="_blank">http://www.ismole.net/downloads/libxml2-2.6.32.tar.gz</a><br />
# tar xzvf libxml2-2.6.32.tar.gz<br />
# cd libxml2-2.6.32<br />
# ./configure &#8211;prefix=/usr/local/libxml2<br />
# make<br />
# make install</p>
<p>(3) LibMcrypt<br />
# cd /usr/local/src<br />
# wget –c <a href="http://www.ismole.net/downloads/libmcrypt-2.5.8.tar.bz2" target="_blank">http://www.ismole.net/downloads/libmcrypt-2.5.8.tar.bz2</a><br />
# tar xjvf libmcrypt-2.5.8.tar.bz2<br />
# cd libmcrypt-2.5.8<br />
# ./configure &#8211;prefix=/usr/local/libmcrypt<br />
# make<br />
# make install</p>
<p>(4) Apache日志截断程序<br />
# cd /usr/local/src<br />
# wget –c <a href="http://www.ismole.net/downloads/cronolog-1.7.0-beta.tar.gz" target="_blank">http://www.ismole.net/downloads/cronolog-1.7.0-beta.tar.gz</a><br />
# tar xzvf cronolog-1.7.0-beta.tar.gz<br />
# cd cronolog-1.7.0-beta<br />
# ./configure &#8211;prefix=/usr/local/cronolog<br />
# make<br />
# make install</p>
<p>8. 升级OpenSSL和OpenSSH<br />
# cd /usr/local/src<br />
# wget –c <a href="http://www.ismole.net/downloads/openssl-0.9.8g.tar.gz" target="_blank">http://www.ismole.net/downloads/openssl-0.9.8g.tar.gz</a><br />
# wget –c <a href="http://www.ismole.net/downloads/openssh-5.0p1.tar.gz" target="_blank">http://www.ismole.net/downloads/openssh-5.0p1.tar.gz</a><br />
# tar xzvf openssl-0.9.8g.tar.gz<br />
# cd openssl-0.9.8g<br />
# ./config &#8211;prefix=/usr/local/openssl<br />
# make<br />
# make test<br />
# make install<br />
# cd ..<br />
# tar xzvf openssh-5.0p1.tar.gz<br />
# cd openssh-5.0p1<br />
# ./configure  \<br />
&#8220;&#8211;prefix=/usr&#8221; \<br />
&#8220;&#8211;with-pam&#8221; \<br />
&#8220;&#8211;with-zlib&#8221; \<br />
&#8220;&#8211;sysconfdir=/etc/ssh&#8221; \<br />
&#8220;&#8211;with-ssl-dir=/usr/local/openssl&#8221; \<br />
&#8220;&#8211;with-md5-passwords&#8221;<br />
# make<br />
# make install</p>
<p>（1）禁用 SSH V1 协议<br />
找到：<br />
#Protocol 2,1<br />
改为：<br />
Protocol 2</p>
<p>（2）禁止root直接登录<br />
此处先建立一个普通系统用户：<br />
# useradd username<br />
# passwd username<br />
找到：<br />
#PermitRootLogin yes<br />
改为：<br />
PermitRootLogin no</p>
<p>（3）禁用服务器端GSSAPI<br />
找到以下两行，并将它们注释：<br />
GSSAPIAuthentication yes<br />
GSSAPICleanupCredentials yes</p>
<p>（4）禁用 DNS 名称解析<br />
找到：<br />
#UseDNS yes<br />
改为：<br />
UseDNS no</p>
<p>（5）禁用客户端 GSSAPI<br />
# vi /etc/ssh/ssh_config<br />
找到：<br />
GSSAPIAuthentication yes<br />
将这行注释掉。</p>
<p>最后，确认修改正确后重新启动 SSH 服务<br />
# service sshd restart<br />
# ssh -v<br />
确认 OpenSSH 以及 OpenSSL 版本正确。</p>
<p>8. FTP服务器的配置<br />
#vi /etc/vsftpd/vsftpd.conf<br />
把anonymous_enable=YES注释掉不允许匿名登录。<br />
把 chroot_list_enable=YES<br />
chroot_list_file=/etc/vsftpd.chroot_list<br />
前的注释去掉。<br />
把ftpd_banner=*前的注释去掉。后面改成你的欢迎信息(这样设置可以避免显示ftp服务器的版本信息)<br />
保存，并执行<br />
#service vsftpd start</p>
<p>这时可以用刚才添加的普通用户登陆FTP，root默认不能通过FTP方式登录。</p>
<p>三、编译安装L.A.M.P环境<br />
1. 下载软件<br />
# cd /usr/local/src<br />
# wget –c <a href="http://www.ismole.net/downloads/" target="_blank">http://www.ismole.net/downloads/</a>软件包名称<br />
httpd-2.2.6.tar.bz2<br />
mysql-5.1.24-rc-linux-i686-glibc23.tar.gz<br />
php-5.2.4.tar.bz2<br />
ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz</p>
<p>2. 安装MySQL<br />
# tar xzvf mysql-5.1.24-rc-linux-i686-glibc23.tar.gz<br />
# mv mysql-5.1.24-rc-linux-i686-glibc23  /usr/local/<br />
# ln -s /usr/local/ mysql-5.1.24-rc-linux-i686-glibc23  /usr/local/mysql<br />
# useradd mysql<br />
# chown -R mysql:root  /usr/local/mysql/<br />
# cd /usr/local/mysql<br />
# ./scripts/mysql_install_db  &#8211;user=mysql<br />
# cp ./support-files/mysql.server  /etc/rc.d/init.d/mysqld<br />
# chown root:root /etc/rc.d/init.d/mysqld<br />
# chmod 755 /etc/rc.d/init.d/mysqld<br />
# chkconfig &#8211;add mysqld<br />
# chkconfig &#8211;level 35 mysqld on<br />
# cp ./support-files/my-huge.cnf  /etc/my.cnf<br />
# mv /usr/local/mysql/data  /var/lib/mysql<br />
# chown -R mysql:mysql /var/lib/mysql/<br />
# vi /etc/my.cnf  修改以下内容：</p>
<p>（1）        在 [mysql] 段增加一行：<br />
default-character-set = utf8<br />
（2）        在 [mysqld] 段增加或修改：<br />
datadir = /var/lib/mysql<br />
&#8211;skip-innodb<br />
default-character-set = utf8<br />
&#8211;wait-timeout = 5<br />
max_connections = 512<br />
max_connect_errors = 10000000<br />
thread_concurrency = CPU个数×2<br />
将 log-bin 注释<br />
# bin/mysqladmin -u root password &#8216;password_for_root&#8217;</p>
<p>3. 编译安装Apache<br />
# cd /usr/local/src<br />
# tar xjvf httpd-2.2.6.tar.bz2<br />
# cd httpd-2.2.6<br />
# ./configure \<br />
&#8220;&#8211;prefix=/usr/local/apache2&#8243; \<br />
&#8220;&#8211;with-included-apr&#8221; \<br />
&#8220;&#8211;enable-so&#8221; \<br />
&#8220;&#8211;enable-deflate=shared&#8221; \<br />
&#8220;&#8211;enable-expires=shared&#8221; \<br />
&#8220;&#8211;enable-rewrite=shared&#8221; \<br />
&#8220;&#8211;enable-static-support&#8221; \<br />
&#8220;&#8211;disable-userdir&#8221;<br />
# make<br />
# make install<br />
# echo &#8216;/usr/local/apache2/bin/apachectl start &#8216; &gt;&gt; /etc/rc.local</p>
<p>4. 编译安装PHP<br />
# cd /usr/local/src<br />
# tar xjvf php-5.2.4.tar.bz2<br />
# cd php-5.2.4<br />
# ./configure &#8211;prefix=/usr/local/php &#8211;with-apxs2=/usr/local/apache2/bin/apxs &#8211;with-config-file-path=/usr/local/php/etc &#8211;with-mysql=/usr/local/mysql &#8211;with-libxml-dir=/usr/local/libxml2 &#8211;with-gd=/usr/local/gd2 &#8211;with-jpeg-dir &#8211;with-png-dir &#8211;with-bz2 &#8211;with-freetype-dir &#8211;with-iconv-dir &#8211;with-zlib-dir &#8211;with-mcrypt=/usr/local/libmcrypt &#8211;enable-soap &#8211;enable-gd-native-ttf &#8211;enable-ftp &#8211;enable-mbstring &#8211;enable-exif &#8211;disable-ipv6 &#8211;disable-cgi &#8211;disable-cli<br />
# make<br />
# make install<br />
# mkdir /usr/local/php/etc<br />
# cp php.ini-dist /usr/local/php/etc/php.ini</p>
<p>5. 安装Zend Optimizer<br />
# cd /usr/local/src<br />
# tar xzvf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz<br />
# ./ ZendOptimizer-3.3.3-linux-glibc23-i386/install.sh<br />
安装Zend Optimizer过程的最后不要选择重启Apache。</p>
<p>6. 整合Apache与PHP<br />
# vi /usr/local/apache2/conf/httpd.conf<br />
找到：<br />
AddType application/x-gzip .gz .tgz<br />
在该行下面添加<br />
AddType application/x-httpd-php .php</p>
<p>找到：<br />
&lt;IfModule dir_module&gt;<br />
DirectoryIndex index.html<br />
&lt;/IfModule&gt;<br />
将该行改为<br />
&lt;IfModule dir_module&gt;<br />
DirectoryIndex index.html index.htm index.php<br />
&lt;/IfModule&gt;</p>
<p>找到：<br />
#Include conf/extra/httpd-mpm.conf<br />
#Include conf/extra/httpd-info.conf<br />
#Include conf/extra/httpd-vhosts.conf<br />
#Include conf/extra/httpd-default.conf<br />
去掉前面的“#”号，取消注释。</p>
<p>注意：以上 4 个扩展配置文件中的设置请按照相关原则进行合理配置！</p>
<p>修改完成后保存退出。<br />
# /usr/local/apache2/bin/apachectl restart</p>
<p>7. 查看确认L.A.M.P环境信息、提升 PHP 安全性<br />
在网站根目录放置 phpinfo.php 脚本，检查phpinfo中的各项信息是否正确。</p>
<p>确认 PHP 能够正常工作后，在 php.ini 中进行设置提升 PHP 安全性。<br />
# vi /etc/php.ini<br />
找到：<br />
disable_functions =<br />
设置为：<br />
phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server</p>
<p>三、服务器安全性设置<br />
1. 设置系统防火墙<br />
# vi /usr/local/sbin/fw.sh<br />
将以下脚本命令粘贴到 fw.sh 文件中。<br />
#!/bin/bash</p>
<p># Stop iptables service first<br />
service iptables stop</p>
<p># Load FTP Kernel modules<br />
/sbin/modprobe ip_conntrack_ftp<br />
/sbin/modprobe ip_nat_ftp</p>
<p># Inital chains default policy<br />
/sbin/iptables -F -t filter<br />
/sbin/iptables -P INPUT DROP<br />
/sbin/iptables -P OUTPUT ACCEPT</p>
<p># Enable Native Network Transfer<br />
/sbin/iptables -A INPUT -i lo -j ACCEPT</p>
<p># Accept Established Connections<br />
/sbin/iptables -A INPUT -m state &#8211;state ESTABLISHED,RELATED -j ACCEPT</p>
<p># ICMP Control<br />
/sbin/iptables -A INPUT -p icmp -m limit &#8211;limit 1/s &#8211;limit-burst 10 -j ACCEPT</p>
<p># WWW Service<br />
/sbin/iptables -A INPUT -p tcp &#8211;dport 80 -j ACCEPT</p>
<p># FTP Service<br />
/sbin/iptables -A INPUT -p tcp &#8211;dport 21 -j ACCEPT</p>
<p># SSH Service<br />
/sbin/iptables -A INPUT -p tcp &#8211;dport 22 -j ACCEPT</p>
<p># chmod 755 /usr/local/sbin/fw.sh<br />
# echo &#8216;/usr/local/sbin/fw.sh&#8217; &gt;&gt; /etc/rc.local<br />
# /usr/local/sbin/fw.sh</p>
<p>原载地址：<a href="http://www.ismole.net/thread-505-1-1.html">http://www.ismole.net/thread-505-1-1.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cnedwin.com/18.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
