L.A.M.P 环境部署详细步骤

2007-01-06 00:45:21

本文所用的操作系统为 CentOS 3.8,如果使用 Red Hat AS3/4 则不能使用 yum RPM 包管理命令!
RHrM&F?Y8z0推荐使用 CentOS 3.8 系统。

Gk'Q9P.i s0
Y3qB{7y\2~0一、系统约定
软件源代码包存放位置
K7r L;z2QP0
/usr/local/src
aS&sQ v6t @0
源码包编译安装位置(prefix)
8e$gA%]"x-Qt0
/usr/local/software_name
L0eP1H9@5?;ztw0
脚本以及维护程序存放位置PHPChina 开源社区门户V xR0L+c&B ED#pE([
/usr/local/sbinPHPChina 开源社区门户4E} PIN`K IC
MySQL 数据库位置
C B@P$x0
/var/lib/mysql
Q6h[Y'f T6|,s wj0
Apache 网站根目录
1v/Os1s.T\y0f0
/data/wwwroot
!J` Ez)L}&EOi0
Apache 虚拟主机日志根目录PHPChina 开源社区门户u5U^O:o)r5yb nG+Q
/data/logs/wwwPHPChina 开源社区门户Q$g ZWP E{5|F$]
Apache 运行账户PHPChina 开源社区门户m}qA/]
www:wwwPHPChina 开源社区门户#JxPuE/{
yum RPM包信息文件PHPChina 开源社区门户,X/EJK.[E,[!f4R3n
/etc/yum.listPHPChina 开源社区门户!Di Bq&rvb#Z6I

$\h*GW'S0二、系统环境部署及调整
m"RrM&^!i+J/EQ~01. 检查系统是否正常PHPChina 开源社区门户y2g*Y#U!T+R!y b`?
   # more /var/log/messages   (检查有无系统内核级错误信息)
"Q(oN&\] D0   # dmesg (检查硬件设备是否有错误信息)PHPChina 开源社区门户"t.O6Q%]L^-s9t!FJ
   # ifconfig(检查网卡设置是否正确)PHPChina 开源社区门户(i T)_X ?}*x\wo0s
   # ping www.163.com  (检查网络是否正常)
'@;g}2} ?u0PHPChina 开源社区门户8o%hr PJ:L1s:@Z
2. 关闭不需要的服务
(z$Qv-F%v1DIB(}0   # ntsysvPHPChina 开源社区门户.S3l%M g4C#mr8I%g
   以下仅列出需要启动的服务,未列出的服务一律关闭:
:wY5iIF g$S0   crond
I ^;F z'Von}0   irqbalance (仅当服务器CPUS.M.P架构或支持双核心、HT技术时,才需开启,否则关闭。)
7k`!D5o_2V0   microcode_ctlPHPChina 开源社区门户5PIx.q;^$r D
   network
FG|ZZ0   randomPHPChina 开源社区门户]k Z/d.q
   sendmailPHPChina 开源社区门户m J"z*mVZy
   sshd
GZnhu0w3\|kE0   syslogPHPChina 开源社区门户T'Bp {-Mv&]%f
PHPChina 开源社区门户+aRaF8P1}V"X
3. TCP/IP网络参数进行调整,加强抗SYN Flood能力PHPChina 开源社区门户%WS2zt:O
   # echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf
NB#z+U(C d/X-i0   # sysctl -p
U JB{:U Id Z e6H*|0PHPChina 开源社区门户D^)g*[b+mO*CUTL
4. 配置yum
t Hi/VY5Em]mx%l0   # rpm --import /usr/share/doc/centos-release-3/RPM-GPG-KEY-CentOS-3
U#J5N0`},d)K&r V0   # yum list | tee /etc/yum.list
1h V,v*A1U0q0PHPChina 开源社区门户R1?!Agm3~5F4J
5. 修改命令history记录PHPChina 开源社区门户,sG\ik
   # vi /etc/profile
%oh%@T.G0     找到 HISTSIZE=1000 改为 HISTSIZE=50
ElfU/J:N Y0
2X!`\2O|wB0
tB^LA3j8uL0PHPChina 开源社区门户pKW7mQ
6. 定时校正服务器时间
X(J1SY9m4\%d0   # yum install ntpPHPChina 开源社区门户U/~O'Ssp'd]
   # crontab -e
`:fAu2O(J}0V~0加入一行:PHPChina 开源社区门户 Vs)cL&q#Pfc+uI
*/15 * * * * ntpdate 210.72.145.44
+|aEk\ },v8ex(_0## 210.72.145.44 为中国国家授时中心服务器地址。PHPChina 开源社区门户;[|FKf%K

s&dD9C _4wR07.
重新启动系统PHPChina 开源社区门户1A4B'rh9b
   # init 6PHPChina 开源社区门户#PT(c!r%V[UA%X
PHPChina 开源社区门户B.X1g`}8@g(x8I'@
8. 使用 yum 程序安装所需开发包(以下为标准的 RPM 包名称)PHPChina 开源社区门户+fe&|,R/Lvmb)K
   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
f)H.j?Z7~i;^8\0PHPChina 开源社区门户 d}"GXy(Y#~!~x8EG
9. 源码编译安装所需包(Source)
J)k1~|7ky r0   (1) GD2PHPChina 开源社区门户.uwR8R$RJ7q7rl
       # cd /usr/local/src
bmO#]"e0       # wget http://download.discuz.net/env/gd-2.0.33.tar.gz
6i Q2W%rLuEo&G-~0       # tar xzvf gd-2.0.33.tar.gzPHPChina 开源社区门户4G0fW:AG9jfZ
       # cd gd-2.0.33
PWsXk@P0       # ./configure --prefix=/usr/local/gd2PHPChina 开源社区门户:~y`!}JK
       # makePHPChina 开源社区门户2z }n8d'GI
       # make install
`:Vc.[9xf9R a_8@p0PHPChina 开源社区门户(G*~~ Y_n
   (2) LibXML2
W}eM o@0       # cd /usr/local/srcPHPChina 开源社区门户g"pi'~+C$qfI
       # wget http://download.discuz.net/env/libxml2-2.6.26.tar.bz2PHPChina 开源社区门户!wd2A2u |Ps
              # tar xjvf libxml2-2.6.26.tar.bz2
t_ ~C4X8o's N9C0              # cd libxml2-2.6.26
1ev$y9TzW7q I0              # ./configure --prefix=/usr/local/libxml2PHPChina 开源社区门户ej%cT8KX.x6PQh
              # makePHPChina 开源社区门户u[5yaSk_/W
              # make install
X2q^0e#I M(o y0PHPChina 开源社区门户.f^{&\0d
   (3) Apache日志截断程序PHPChina 开源社区门户DDR5Dw7_
# cd /usr/local/srcPHPChina 开源社区门户1|x:m2q0fv {yr X1n
# wget http://download.discuz.net/env/cronolog-1.6.2.tar.gzPHPChina 开源社区门户@{*T(JsF D:L
# tar xzvf cronolog-1.6.2.tar.gz
R.EC5{ ru0# cd cronolog-1.6.2PHPChina 开源社区门户 c*dS6L Y6Od
# ./configure –prefix=/usr/local/cronolog
(rl Kr)R)n8x`E0# make
?[0v/C,l-D0# make install
U}"O2Eoj!}0PHPChina 开源社区门户n%i:d;["Q0j b+V?T

~&C?1I[ba010. 升级OpenSSLOpenSSH
?l+QzS\)wt M*S0    # cd /usr/local/src
gR*x,ar/[&}o0    # wget http://download.discuz.net/env/openssl-0.9.7j.tar.gzPHPChina 开源社区门户 \2bW#QX2J
    # wget http://download.discuz.net/env/openssh-4.2p1.tar.gzPHPChina 开源社区门户)A#e%A9m?9XR-_2ar'_
    # tar xzvf openssl-0.9.7j.tar.gz
} h1~\7ZU8N0    # cd openssl-0.9.7jPHPChina 开源社区门户*u&_CV9h8u
    # ./config --prefix=/usr/local/openssl
W k;l0lS.}0    # makePHPChina 开源社区门户Y&x sWm
    # make testPHPChina 开源社区门户hqz h5o:P
    # make install
#q+M8hV)H;_6Z0    # cd ..PHPChina 开源社区门户Y[L _ f l's
    # tar xzvf openssh-4.2p1.tar.gzPHPChina 开源社区门户+E$S*um0Mv
    # cd openssh-4.2p1
b'W3L_s7y*fQH3\ S0# ./configure  \
8yQ/uyk4a il0"--prefix=/usr" \
a.u#D+|I#o-_)Dy0"--with-pam" \PHPChina 开源社区门户?Z2wyS
"--with-zlib" \
,dKt^e5}0"--with-ssl-dir=/usr/local/openssl" \
3H4R)l;O4{LB$T1c#J!_0"--with-md5-passwords"PHPChina 开源社区门户1tXsB1VO|
    # make
\c2f$y#SJ3q0    # make install
#D5Wc-iO1J:hE0    禁止root直接登录,此处先建立一个普通系统用户:PHPChina 开源社区门户 m;QT-w6\1j/x Bs
    # useradd username
({e6GX7m"z0    # passwd username
O3r3n\$]b0    # echo 'Protocol 2' >> /etc/ssh/sshd_config
#kY+Tl%D4S7A0    # echo 'Protocol 2' >> /usr/etc/sshd_configPHPChina 开源社区门户,B l C1rXO CJ
    # echo 'PermitRootLogin no' >> /etc/ssh/sshd_config
[Y/R8O9o OK0    # echo 'PermitRootLogin no' >> /usr/etc/sshd_configPHPChina 开源社区门户1q7a u3{4tN4Y
    # /etc/rc.d/init.d/sshd restartPHPChina 开源社区门户]};~x2K6N J1w%j!V6~G
PHPChina 开源社区门户+l-T"xX3q;?

Y#b z*w`(|2lC0
e8P1{MM C H0PHPChina 开源社区门户NX:f4h5e1k;h _
三、编译安装L.A.M.P环境PHPChina 开源社区门户2}S9ty y sz*n
1. 下载软件PHPChina 开源社区门户m/C0bz$uts
    # cd /usr/local/srcPHPChina 开源社区门户4\O(xj,J$t+{vq
    # wget http://download.discuz.net/env/httpd-2.2.3.tar.bz2
,c{[2}{/gf0    # wget http://download.discuz.net/env/mysql-5.0.27.tar.gz
ae&w h0Y+l)y4v f0    # wget http://download.discuz.net/env/php-5.2.0.tar.bz2
x!e+L/M(UE2|0# wget http://download.discuz.net/env/ZendOptimizer-3.2.0-linux-glibc21-i386.tar.gz
,j ^m5|/d$B0~02. 编译安装MySQL
/k8r6k6AgD&A0    # tar xzvf mysql-5.0.27.tar.gzPHPChina 开源社区门户.ZS+h,~:x^ K
    # cd mysql-5.0.27
U.g_5T!O2oJFM,T0# ./configure \
x.?;B HTBw H0        "--prefix=/usr/local/mysql" \
fv*JX6J S%~0        "--localstatedir=/var/lib/mysql" \PHPChina 开源社区门户p/f ]@;o`
        "--with-comment=Source" \
4x"~~+d)m6IA0        "--with-server-suffix=-Comsenz" \PHPChina 开源社区门户$zF FS P4_Y![
        "--with-mysqld-user=mysql" \
z8EQ R.`Q0        "--without-debug" \
l n5{!j*L\0        "--with-big-tables" \PHPChina 开源社区门户 EcaC.^ ^A
        "--with-charset=" \
J"\(GX'U0F x^0        "--with-collation= " \
l t!n4p:`:v|0f0        "--with-extra-charsets=all" \PHPChina 开源社区门户+cB4sw9PT-Qs7gVE
        "--with-pthread" \
fI2r?(Qu4w0        "--enable-static" \
\-dP$tfZ"H9\0        "--enable-thread-safe-client" \PHPChina 开源社区门户0B |B5] hwHi^
        "--with-client-ldflags=-all-static" \PHPChina 开源社区门户!Ce'l8X1XzW
        "--with-mysqld-ldflags=-all-static" \
-s(x,z:wq9HL0        "--enable-assembler" \
$I_^coD ^2S0        "--without-isam" \
S]'N3xd0        "--without-innodb" \
Pq9Q o$F8e0        "--without-ndb-debug"PHPChina 开源社区门户X fG4wT9C6y
    # make
AeO h!a%Ov X0    # make installPHPChina 开源社区门户l\(xRF4W.R
# useradd mysqlPHPChina 开源社区门户Q:B7gz,F
    # cd /usr/local/mysqlPHPChina 开源社区门户)[)rr!a C
    # bin/mysql_install_db --user=mysqlPHPChina 开源社区门户IBQ/|2[k e
    # chown -R root:mysql .PHPChina 开源社区门户m)D0~DYF/g:`Ux
    # chown -R mysql /var/lib/mysqlPHPChina 开源社区门户G vW-Y+|
# cp share/mysql/my-huge.cnf /etc/my.cnf
"z k7f!l0W-^U0    # cp share/mysql/mysql.server /etc/rc.d/init.d/mysqldPHPChina 开源社区门户B9I7Q.CJi
    # chmod 755 /etc/rc.d/init.d/mysqldPHPChina 开源社区门户Fg4L2Xo&K:n2Sb
    # chkconfig --add mysqldPHPChina 开源社区门户? SPx]!h
    # /etc/rc.d/init.d/mysqld start
Fp:sv&W v.hZ H0# bin/mysql -u root password "password_for_root"
u6srH6Q F"l0PHPChina 开源社区门户 l pQ%q2o0_2uIp
3. 编译安装ApachePHPChina 开源社区门户h K~^*^Vp
    # cd /usr/local/src
p:U|ZUDk)pM0# tar xjvf httpd-2.2.3.tar.bz2PHPChina 开源社区门户FA j$f/ySc
# cd httpd-2.2.3
y}h[ MA S D9f0    # ./configure \PHPChina 开源社区门户1` mSXmr
        "--prefix=/usr/local/apache2" \
hw cG-f0        "--enable-module=so" \
_ oQ%z-r1{1u0        "--enable-deflate=shared" \
J;g6Fl{qt H g6A G0        "--enable-expires=shared" \PHPChina 开源社区门户odN0J5h v
        "--enable-rewrite=shared" \PHPChina 开源社区门户;~jEA(\1N2\
        "--enable-static-support" \
7H8IT'f&cx/H UI0        "--enable-static-htpasswd" \
G ~D5J-~\V]0        "--enable-static-htdigest" \
.]?.l?S9pN u0        "--enable-static-rotatelogs" \PHPChina 开源社区门户 w7SgoT#VY!t
        "--enable-static-logresolve" \
G9F8D1n"^/N0        "--enable-static-htdbm" \PHPChina 开源社区门户7qQ j*A e4brr
        "--enable-static-ab" \
(ty`n&X.[jmfi0        "--enable-static-checkgid" \
Hm"v9K/{0i0V0        "--disable-userdir"PHPChina 开源社区门户k GWt4j3T jD
    # makePHPChina 开源社区门户MVI%zA3Y'P
# make installPHPChina 开源社区门户&N*M8^0d;Ma vy
# echo '/usr/local/apache2/bin/apachectl start ' >> /etc/rc.localPHPChina 开源社区门户$I-O%lNq+a

^GLnF!B3EO0D H0
i x&b~2G*cA04. 编译安装PHP
kys4vi0    # cd /usr/local/src
w9w h)W0H3C)B6K{0    # tar xjvf php-5.2.0.tar.bz2
s7sl'Tbl.oh%xI(P0    # cd php-5.2.0
cO ^@C!Z {,j;H4]CA#a']0    # ./configure \PHPChina 开源社区门户 i hF(j2DP4W,h1i9v
        "--prefix=/usr/local/php" \
*a|%t'FJLm0        "--with-apxs2=/usr/local/apache2/bin/apxs" \PHPChina 开源社区门户H/?)_ {&dN/_ E
        "--with-config-file-path=/etc" \PHPChina 开源社区门户[qnTC/Uh;RZs
        "--with-mysql=/usr/local/mysql" \
b o M [5Y^tO0U0        "--with-libxml-dir=/usr/local/libxml2" \
%T.d HW:p d.\ |J)u0        "--with-gd=/usr/local/gd2" \
0P|4zIZY#q\0        "--enable-gd-native-ttf" \
*y.M'm_nm3_0        "--with-jpeg-dir" \PHPChina 开源社区门户 B"nHFW,Mf'BPwy
        "--with-png-dir" \
j%|H"o| Z7Ol[0        "--with-bz2" \
} tQLP:c4`0        "--with-freetype-dir" \PHPChina 开源社区门户F*E ^ }#f4Q!sf
        "--with-iconv-dir" \PHPChina 开源社区门户&ux ^,U.\{I-I
        "--with-zlib-dir" \
\o5Uf(k w`w0        "--enable-mbstring" \PHPChina 开源社区门户6xb2p}'`R s`E
        "--disable-ipv6" \ # IPv6 离我们还好远,暂时不用它
GW$B.Mx y/NH0        "--disable-cgi" \   # 出于安全考虑,禁用 CGI 支持PHPChina 开源社区门户ZbB.w{U"sw
        "--disable-cli"     # 出于安全考虑,禁止编译出 php Command Line Shell 命令
&YAifX&^4n0    # make
:C:a(kb:t&^)BQD'`0    # make installPHPChina 开源社区门户&_n?-J0]J1v
# cp php.ini-dist /etc/php.iniPHPChina 开源社区门户 E;O&h8oGn%kv

~v{gsN05. 安装Zend OptimizerPHPChina 开源社区门户'vt1JM?8O SW2u{v
    # cd /usr/local/srcPHPChina 开源社区门户$`'vN~j/zwX
    # tar xzvf ZendOptimizer-3.2.0-linux-glibc21-i386.tar.gz
2W6X:gr#q6H)yXj0# ./ZendOptimizer-3.2.0-linux-glibc21-i386/install.shPHPChina 开源社区门户,H#`/e,RV
    安装Zend Optimizer过程的最后不要选择重启Apache
/`O!J"weOB~0
[,uu.R y6k4XJ'v06. 整合ApachePHPPHPChina 开源社区门户K9tG?$H)F
# vi /usr/local/apache2/conf/httpd.confPHPChina 开源社区门户W U;F5c FX,{!fZ4R
找到:PHPChina 开源社区门户-W/U2a]9b A1SfaY
AddType application/x-gzip .gz .tgzPHPChina 开源社区门户$D6f CB kk z q5I
在该行下面添加PHPChina 开源社区门户aL*mp&xBt?
AddType application/x-httpd-php .phpPHPChina 开源社区门户+G.Xq`uV7u
AddOutputFilterByType DEFLATE text/html text/plain text/xml
~#t1Lsz.@c0PHPChina 开源社区门户0I+H$\{ep$\y
找到:PHPChina 开源社区门户&T*GF$V d CN zj
<IfModule dir_module>
%U9N)SwY0I.DW"A#F0    DirectoryIndex index.html index.html.varPHPChina 开源社区门户3| Rd#A[,B)s/@#d
</IfModule>
sf(uzZGN;x+n0将该行改为
`w7PrJ"R2K#r0<IfModule dir_module>
e3~9I DV"w0    DirectoryIndex index.html index.htm index.php
3v'BX;t/s$q#cqR,L0</IfModule>
$x @ t8Sh1b7cW0
!OEcjwN pe0找到:PHPChina 开源社区门户'MO.Br ~2EV
#Include conf/extra/httpd-mpm.conf
eT'F,N5m:W|8{v0#Include conf/extra/httpd-info.conf
9]1zKsFj p0#Include conf/extra/httpd-vhosts.confPHPChina 开源社区门户 QPd'xM.N'}
#Include conf/extra/httpd-default.conf
Cq/xu#U6l;Yft0去掉前面的“#”号,取消注释,设置相关的模块配置文件。
6w5l+`3@2M0PHPChina 开源社区门户+H0iul)^k[
修改完成后保存退出。
D8W5UX4`Ym6]0# /usr/local/apache2/bin/apachectl restart
l%~W)s+G5V07. 查看确认L.A.M.P环境信息,提升 PHP 安全性
B~(v+h:Q e0   # echo '#!/usr/local/php/bin/php \
-\ mES%^0f$E+["MTX0<?php \PHPChina 开源社区门户Ma E` C\X
         phpinfo(); \
}BM_\0         ?>' > /usr/local/php/phpinfo.phpPHPChina 开源社区门户Z NfS/n2k2xg
   # chmod 755 /usr/local/php/phpinfo.php
%Iw [ T9@;\~$y2I_0   # /usr/local/php/phpinfo.php > /usr/local/php/phpinfo
U'M#O{MH7yw Y~0   # more /usr/local/php/phpinfo
[OU |m0   检查phpinfo中的各项信息是否正确。PHPChina 开源社区门户S$t4d7j8o6~L
PHPChina 开源社区门户n c8@F1G+o|
   确认 PHP 能够正常工作后,在 php.ini 中进行设置提升 PHP 安全性。PHPChina 开源社区门户%lL}%v.uB$FkD
   # vi /etc/php.iniPHPChina 开源社区门户/x$Fy&U)O3h4d9B.K,p
       找到:PHPChina 开源社区门户X-b-b@4h|x$rm
       disable_functions =
"ar7k:c;nD7R0       设置为:
I1@!nX0TOox'F0       disable_functions = phpinfo,passthru,exec,system,popen,chroot,escapeshellcmd,escapeshellarg,shell_exec,proc_open,proc_get_status,ini_restore
wf/UjrjH d0PHPChina 开源社区门户z$Ah}$PZv9]
最后,重新启动 Apache 服务即可。 PHPChina 开源社区门户`1pURqG

TAG:

Open Toolbar