≡ 典典 - 单机游戏攻略 ≡'s Archiver

admin 发表于 2007-9-16 20:04

CentOS 4.4 编译安装

1、下载centos 4.4KHt m9jA0c
我是下载的DVD版本,大家也可以下载服务器CD安装版本,其实都差不多。大家可以到这儿下载,速度很快的。+? [gNYf2@6@j
http://ftp.iasi.roedu.net/mirrors/centos.org/4.4/isos/i386/
h7cUo)S+U8T6d t;V5TTwu*I6Kq
下载后当然就刻录成光盘。我建议你刻录DVD啦,如果是菜鸟,也可以在图形界面进行学习,不会这么抓不住头脑。
6bm&C)V1lC Eh3D:?vwqy
2、(1)安装CentOS4.4
RB j7\J+I8G 作为服务器,不安装不需要的组件,所以在选择组件的时候,除了选择FTP SERVER外取消所有组件的选择。也不要选web服务器。因为我们后面要手动编译安装。
EHQ8Q3qa
;Qh:[$oQk&I(q Q Z(d th [.q
系统约定RPM包和源码包存放位置0_1lD-F$yD9AAJ

&o5S7g}T3nCDa RPM包和源码包存放位置 /usr/local/src
Y:E9K!u7N\5?8?L"| 源码包编译安装位置(prefix) /usr/local/xxx
,c;Sg:`T 脚本以及维护程序存放位置 /usr/local/sbin
?v7nl0A b3lv;J MySQL 数据库位置 /var/lib/mysql
G#~F:}]J;^+^ Apache 网站根目录 /home/www
A"b)Vsm??Q!eg Apache 虚拟主机日志根目录 /data/logs/www
V4zc;aDN]x5Tc%e yum RPM包信息文件 /etc/yum.list2R(Y{#z,B].Qb

&UuXw;V"Y/l (2)更新系统,此处我们使用up2date,先修改up2date镜像。
p-vB0_ C vi /etc/sysconfig/rhn/sources1[8kcBY
g9{oiv3BSfD)R[T
我把源修改成这样了:5GO.rF [ q){
2_5z J/]5d^-l
yum centos4-Base [url]http://mirror.be10.com/centos/4/os/[/url]$ARCH/k,GjQ k
yum centos4-Updates [url]http://mirror.be10.com/centos/4/updates/[/url]$ARCH/
8i/M&r,S6h;Z yum centos4-extras [url]http://mirror.be10.com/centos/4/extras/[/url]$ARCH/
Q!PT^;|U yum centos4-contrib [url]http://mirror.be10.com/centos/4/contrib/[/url]$ARCH/
qC fd(sz&VF yum centos4-addons [url]http://mirror.be10.com/centos/4/addons/[/url]$ARCH/
.g*JD p8Opz d yum centos4-centosplus [url]http://mirror.be10.com/centos/4/centosplus/[/url]$ARCH/
6s R-g#{ J Y!y {l#z@
然后执行:
Z AT.d3z.B # up2date -l //列出更新
2_5by SD3x1{M # up2date -uf //更新包括版本的所有程序。如果不包括内核,则用up2date -uY%z,jW8C'K`*pi9O
FA `#}f o}}Ud
*P!x3T*v)` y9R+J
3、系统环境部署及调整([(F'{4B4vX
(E(W u#~0s&r
(1). 检查系统是否正常]WJ Q {
# more /var/log/messages //检查有无系统内核级错误信息[T:|'L j9L'ga0S
# demesg //检查硬件设备是否有错误信息O ORR4`Q I#F
# ifconfig //检查网卡设置是否正确
-MM-?,Ql$I # ping [url]www.163.com[/url] // 检查网络是否正常6jA$[^s[;B
$|!DPb&l7m0t BT
(2). 关闭不需要的服务Zw#Jx7B7Jb
# export LANG='en_US' //设置语言mV)Xx7BW+o)Z
# setup //选择启动的服务qW!]9VR4ONk)HY.O s
进入system service 选项。%zu d&Th\
以space 键选定所需服务。
?3Txc$_ p 以下仅列出需要启动的服务,未列出的服务一律关闭:
~X9[dW8n#x)u#yE crond
Q h&J i9t irqbalance 仅当服务器CPU为S.M.P架构或支持双核心、HT技术时,才需开启,否则关闭。/~2d5NY|V^
microcode_ctlT6EL1jdY
network\I7q3w\.E2ts
vsftpd ^C tN l8^n
sshd)C4uP;M \)N8Dh(t
syslog
/ySNF%m3l
9h$RL??Bg;~ (3)、修改/etc/yum.repos.d/CentOS-Base.repo,将镜象站点地址改为在中国的镜象站点地址。不然我们通过yum安装软件速度会极慢。修改如下:
7h/D*u#t+FQKfA6q~
$M Ne?,S # CentOS-Base.repo;Rs?9B;i _.H:QR
#"V.Poz9U e9Aak
# This file uses a new mirrorlist system developed by Lance Davis for CentOS.R)N;AWL e
# The mirror system uses the connecting IP address of the client and the{ l*m3?2N6f
# update status of each mirror to pick mirrors that are updated to andA`m(i `T
# geographically close to the client. You should use this for CentOS updatesb,Nx"p zQi D
# unless you are manually picking other mirrors.
@ d"W(B4U#L7kT #,R7};un-v S(ICI|.YA:i$]
# If the mirrorlist= does not work for you, as a fall back you can try the!@L/@&H8S Dsx3N;e @
# remarked out baseurl= line instead.2YF,V&`o
#
fdu4qU'V,g0Z:y #`,Bc)fLil[`N

5d$U"Eu;@)V [base]
G,Ttwe;B?_{ name=CentOS-$releasever - Base
7E!k}aF3} baseurl=http://mirror.vmmatrix.net/CentOS/$releasever/os/$basearch/
q#r|*jy,XybP http://mirror.be10.com/centos/$releasever/os/$basearch/
.jB }:F(D a\ http://centos.hostlink.com.hk/$releasever/os/$basearch/d9Y'T(Yi3RV9y
http://ftp.hostrino.com/pub/centos/
vijY;Ky9F gpgcheck=1
!QN K9kK5fg gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
e}xhn!P+|-a ]
4??)b3|:YJ #released updatesh A.ju"B-|K R(b z
[update]
OJ@AZ-r'Xg name=CentOS-$releasever - Updates
Ikmx(R&a8i baseurl=http://mirror.vmmatrix.net/CentOS/$releasever/os/$basearch/5V0x2FS~8L
http://mirror.be10.com/centos/$releasever/os/$basearch/5C5^ f r%d Hh
http://centos.hostlink.com.hk/$releasever/os/$basearch/
qV,hrd-[8? E http://ftp.hostrino.com/pub/centos/
!a?6P^8yw ?tH gpgcheck=1[+U r[UGAf
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
x8o&Ri5LyJ/G
"vIYMbY;S6R #packages used/produced in the build but not released'r/P]wu+u
[addons]ffjuG,Yf(BlQ
name=CentOS-$releasever - Addons
R!R&}^4i/DN baseurl=http://mirror.vmmatrix.net/CentOS/$releasever/os/$basearch/
3Zv9pH F0y$|3Ry http://mirror.be10.com/centos/$releasever/os/$basearch/
6RCp&T(RU http://centos.hostlink.com.hk/$releasever/os/$basearch/.\,r_6c/{ P
http://ftp.hostrino.com/pub/centos/ynYO'b [
gpgcheck=1#~ky!hZ%]
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
w)Y8b:ly&cY UK(O
k*vBkmZ #additional packages that may be useful
,gJLB!L3Biy2| [extras]
8ek8p$~8`q name=CentOS-$releasever - Extras
F"\J'bh2CUC baseurl=http://mirror.vmmatrix.net/CentOS/$releasever/os/$basearch/bXG {q0`rwE"w
http://mirror.be10.com/centos/$releasever/os/$basearch/
t{tX(d }}*Iv` http://centos.hostlink.com.hk/$releasever/os/$basearch/
S8UC(t jE%_p http://ftp.hostrino.com/pub/centos/
D fax Pm0D%}+f gpgcheck=1
rV.S4I`(] gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4#D1U@ \8^B/XD

uiv"[SD #additional packages that extend functionality of existing packages
bw4RmSa3P [centosplus]n$V g+[2t5h(Y7a
name=CentOS-$releasever - Plus^{sq+B
baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/w;o md[5Yx
gpgcheck=1E!JZ d]X
enabled=0 C j/F)i8m+{6Q.Q `5`
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4f Vg['mH2Ay!`y

Yp,V/r7I |n!Dk #contrib - packages by Centos Userss6{,iD7Ko3|@?
[contrib]4e!Yw k&} f']
name=CentOS-$releasever - Contrib
3`Pl#P1_&dZ[T baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
b FxLb| O gpgcheck=1
cy0P?;e enabled=0
]3`$T_T gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4s|gfn;q
.mj0Q1W3j*|3T A&@ Ku
保存。;JUj wqpP

SAR.`2| vN$wI 然后导入key升级相应yum数据 Vf0B xWm(W$bd
N0I"q2{^9qN
# rpm --import /usr/share/doc/centos-release-4/RPM-GPG-KEY-centos4cHU$m+g'wc
# yum list tee /etc/yum.list //读取yum list 数据,将其输出到 /etc/yum.list。9S$n\Iq4P&a r%V

PH%`5i$\#]
oVV9h!]5Bj (4)、定时校正服务器时间
oeQqPo w/D Z # yum install ntp
Yt)j v/z # crontab -ey'n%\/SY*| E+}
0 23 * * * root /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1
~)~*ht&C4uD;w%`
f.\ Wg(mLR 以上命令设置好后存盘。您的机器将在每天的23:00根据中国国家授时中心的NTP服务器时间自动校准时间。
x\(Q*n7Po3s
Z:t8D(A`]atV*]#C (5). 对TCP/IP网络参数进行调整,加强抗SYN Flood能力l e}tQ7vf{
# echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf //将net.ipv4.tcp_syncookies = 1写入sysctl.conf 文件
Z@.oO3^4p # sysctl -p //查看
6{D5M%s9InL ?5UMmB@$x
(6)、FTP服务器的配置
*ISN&FQ"|2Dm vi /etc/vsftpd/vsftpd.confVm3e.l}X['u+ORc
把anonymous_enable=YES注释掉不允许匿名登录。%D9Jmqx|1]
把chroot_list_enable=YESf0_]5b1T&{I^6M
chroot_list_file=/etc/vsftpd.chroot_listgX5c3z x/Y;c
前的注释去掉。
^DrJ"K*i 把ftpd_banner=*前的注释去掉。后面改成你的欢迎信息(这样设置可以避免显示ftp服务器的版本信息)B&S#y ~2x8]2M-{(q
然后保存,service vsftpd start就可以了。_3U.rX2Gs

Rb J6I}F F+T-Il 这时应当添加用户,因为root默认不能通过FTP方式登录。+EJ zEL zU
|.D"h3M0Q^J
# adduser usernameE&b \amr Yt*Cd
# passwd userpassword%r1E D_L#] }z(~&T

,}V9kU P"w4i 这样对于我们上传一些文件到系统中很方便。
6kW D*Z(K$f i8^C"T;T7aM
5g BaPndX/y4J
4. 重新启动系统 Mc,g o.iW1} tr!q7Ml
# init 6
W)MZ;x2i N~lR/O 6E.VNhGpb
(i:P g,Z W7O
5. 使用 yum 程序安装所需开发包(以下为标准的 RPM 包名称)
HWOo^t # 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-devel6qJ;F1U5E.a
R&q,_ R!]!]R p
#这里我们将编译GD所必须的一些小软件比如libpng,libtiff,freetype,libjpeg等先用RPM的方式一并安装好,避免手动编译浪费时间,同时也能避免很多错误,这几个小软件的编译很麻烦。这几个小软件编译错误了,GD当然安装不了,php5的编译当然也没戏了。所以我们抓大放小,对这些小牛鬼蛇神采取快速简洁的方式进行安装。并且对服务器的性能也不能产生什么影响。
g#k[o l'Y}
9Y2W8y} mT+JK~%} M 6. 源码编译安装所需包 (Source)(MqA3`s
(1) GD2
"i$MUw3^.O)[1C0d # cd /usr/local/src
{} eO4g k4u # wget [url]http://www.boutell.com/gd/http/gd-2.0.33.tar.gz[/url]
2QtyZ3X # tar xzvf gd-2.0.33.tar.gzS~u uO
# cd gd-2.0.33RGUn,Q
# ./configure --prefix=/usr/local/gd2 --mandir=/usr/share/man //./configure 配置。
pNL y5h b*F # make //make 是用来编译的,它从 Makefile 中读取指令,然后编译。_JC*l#F3qk&r
# make install //make install 是用来安装的,它也从 Makefile 中读取指令,安装到指定的位置。
igS+t-}I
}Y_{s3YS (2) Apache 日志截断程序
5M)p Q O)L$i;_n'\ # cd /usr/local/srcvj.ekl o.@
# wget [url]http://cronolog.org/download/cronolog-1.6.2.tar.gz[/url]
6P)^Sn"{ el"i/B # tar xzvf cronolog-1.6.2.tar.gz-gPt(V&Qv:`#?8w,h[ c
# cd cronolog-1.6.2
;}V d!Y f8iZ # ./configure --prefix=/usr/local/cronologU%BbO aR5~s%}y
# makegt:M0B.? tVQ
# make installEj EJ5M4d%Ub'na*{

Q.X$b/lLS (3) libxml 库程序1E*XO.^BwC
# cd /usr/local/src dD8y.pT'V'Z
# wget [url]http://ftp.gnome.org/pub/gnome/sources/libxml2/2.6/libxml2-2.6.26.tar.gz[/url]V+xK$T,pI}z/M
# tar zxvf libxml2-2.6.26.tar.gzE0o0fVI^
# cd libxml2-2.6.26
r]C9Z;k;r # ./configure --prefix=/usr/local/libxml2
?ZB ~f+hfgU # make
z0url5`L # make install
!~:|;I7`&\6D-RJ:S
/p0{i&v%y7t g m1v 7、编译mysql 5.0.33
1c5G-F;y ^B+FbO4y
L[7p f X}K"d!~} cd /usr/local/src1S/G ]pm'@P{`.{uT `e
# wget [url]http://mysql.oss.eznetsols.org/Downloads/MySQL-5.0/mysql-5.0.33.tar.gz[/url]h"W9_\v-L'` X#Z
# tar xzvf mysql-5.0.33.tar.gz
H ~` T N3W im # cd mysql-5.0.33
0f&b j_5nb9{r K u7{)Y,YTU
修改mysql 客户端最大连接数, 默认的只有100,远远达不到我们的要求。
Id!Q*_)M)Q 6k`H0UEoU
# vi sql/mysqld.ccO Uo9j+H(P.L8x

@R-^sL q4^AC 搜索找到下面一行:9P!gZGQ c"E;[
{"max_connections", OPT_MAX_CONNECTIONS,
7mWo+u)]^/M "The number of simultaneous clients allowed.", (gptr*) &max_connections,
5q?:I7W-Kof0@ (gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1,(q a"M%[]%k1G ^
0}, cl*k3F&|;x*KUG2[}2V
&]g]W3GB{*qlV
将其中的100改为1500, 当然小点也可以,根据你的需要来,不建议改的太大。
i w-c$D_ @ ?f;Q ha_5i*d8Y
{"max_connections", OPT_MAX_CONNECTIONS,
X"p(f$R5W$|#Y+EEk "The number of simultaneous clients allowed.", (gptr*) &max_connections,
:{a!f-j M6us;G'hM]0u (gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 1500, 1, 16384, 0, 1,
a3t Zupzy 0},
7hG5Ytew \ #d1G$M%by
保存。
DV rRN6H%o-H
? ?Fa,ha(?V c%N # 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=-Community-Server --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-innodb --without-ndb-debug --without-isam6a_*Q1Q8},we
.W4\ie']x$@

*D1pHm#P"F F0a5I 配置成功会提示:/n$uE)b qA2r

/\ ]&i'K\O w~ MySQL has a Web site at [url]http://www.mysql.com/[/url] which carries details on the
/w g[tOUGo latest release, upcoming features, and other information to make your
7~t B~B/bYW*b*lEG.PJ work or play with MySQL more productive. There you can also find
"L)?.xQ(YPe information about mailing lists for MySQL discussion.F WR f$@^N^

n%?\m/?+h"g)a g Remember to check the platform specific part of the reference manual forK.U~h%@ R(y N$dx
hints about installing MySQL on your platform. Also have a look at theP.i5Y D$a{8X0nn
files in the Docs directory.
/[5_`U9X.SL @Zo
kK W,L6Mw#HbvO(j Thank you for choosing MySQL![K7r:?/K yl~ CW+h&A

#xAa j7td0H ~2z)r [M+J // 注意 ,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" 这个环境参数只针对intel P4 芯片,如果你的CPU是AMD的,注意不能使用。请查看相应的编译优化参数。否则程序会无法编译,即使编译成功也无法运行,嘿嘿。
0{bP1XZ#L_ ym
9VA_2C$caaZ2W5e # makeM*_;d-\ Y,OQn
编译的时间可能会比较长,毕竟优化的比较厉害。5O4UEb9p5h0fq
7r-Q fC {[
# make install
;F[3e9IN3`7]]4TJ L];]
*crof1ZlX2{~)_ 编译安装完成后执行后续操作:
e#ic,s9ViO # useradd mysql //添加 mysql 用户._;W)c*bz j a
# cd /usr/local/mysql V-u+r2nx"HE Sf
# bin/mysql_install_db --user=mysql
e8^)g8Y A%}7T0L \db # chown -R root:mysql . //设置权限,注意后面有一个 "."
Z{}.Z?}Ew # chown -R mysql /var/lib/mysql //设置 mysql 目录权限
6n&^'^r/F # chgrp -R mysql . //注意后面有一个 "."
k6IsZy # cp share/mysql/my-medium.cnf /etc/my.cnf
lhX$l&RV\} # cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld //开机自动启动 mysql。
N3n/_"O#G # chmod 755 /etc/rc.d/init.d/mysqld^9T-UX*Z JG v:x
# chkconfig --add mysqld
8G t-J3{v7k&F"W # /etc/rc.d/init.d/mysqld start //启动 MySQL
&O6My6emu # bin/mysqladmin -u root password "password_for_root"
mF2Z9Jn/@Z'xA # service mysqld stop //关闭 MySQL
X+LP$j)K-g ^*?F(b%v
8. 编译安装 Apache
o)O/hd\ # cd /usr/local/src
U5t5| m)Ci8? # wget [url]http://www.ip97.com/apache.org/httpd/httpd-2.2.4.tar.gz[/url]
)Qi(zQ|W}6P # tar zxvf httpd-2.2.4.tar.gz
R)Z0zjQ.g # cd httpd-2.2.4
M_+g?8S`Q!X
H9B|'n N6| pM 依次安装apr和apr-util
#vI/B2A"C%| |C0]!?vjM9r
# cd srclib/aprTpYx^:W*S
# ./configure --prefix=/usr/local/apr --enable-threads --enable-other-child USE=ipv68nM D*L5}A B
# make && make install
ia0`8{ J$x t"@
T+~(wOk-dP # cd ../apr-util)@o#LZ2?T+oE
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ --with-mysql=/usr/local/mysql
L3b'v5bi.OOk"R$J # make && make installBOEt'oc
Fd9@._ QW jm/r
cd /usr/local/src/httpd-2.2.4
.lk+]$Y\9p)JeL~ # 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-mods-shared=all --enable-deflate=shared --with-mysql=/usr/local/mysql --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 --with-mpm=worker --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --enable-ssl --with-ssl=/usr/include/openssl \5ExoV|8E`
'~-r'Ep5RU
# make(en3f%R^ rxQ#f"jw
# make install
!D Q;k5B;JHi # echo '/usr/local/apache2/bin/apachectl start ' >> /etc/rc.local //将 apachectl 的调用加入到你的系统启动文件中。!QG)Uq:phE.yq

8iZ/@] fu.F'{ 注解:*X6cZ'zq%E
./configure //配置源代码树
AR w,uE#JU --prefix=/usr/local/apache2 //体系无关文件的顶级安装目录PREFIX ,也就Apache的安装目录。
.?YAXi --enable-module=so //打开 so 模块,so 模块是用来提 DSO 支持的 apache 核心模块 L8d(^ j*f l$d
--enable-mods-shared=all //编译全部的模板,对于不需要我们可以在httpd.conf去掉。*n3`ekA8q;xJt
--enable-cache //支持缓存
W#A6c5P)Y J --enable-file-cache //支持文件缓存s,o c Vw ^4N[
--enable-mem-cache //支持记忆缓存
F,?,c+Q drPJ&f --enable-disk-cache //支持磁盘缓存afP4u0@+s(@2P)H
--enable-static-support //支持静态连接(默认为动态连接)
;[4X^+?;CG.F3f9L,ym --enable-static-htpasswd //使用静态连接编译 htpasswd - 管理用于基本认证的用户文件g ml({@-I+]
--enable-static-htdigest //使用静态连接编译 htdigest - 管理用于摘要认证的用户文件
0E9D'F'kls --enable-static-rotatelogs //使用静态连接编译 rotatelogs - 滚动 Apache 日志的管道日志程序
*C`lO@ --enable-static-logresolve //使用静态连接编译 logresolve - 解析 Apache 日志中的IP地址为主机名
4A8G~ZVz --enable-static-htdbm //使用静态连接编译 htdbm - 操作 DBM 密码数据库
|`}z6wf3N --enable-static-ab //使用静态连接编译 ab - Apache HTTP 服务器性能测试工具 K+~ fH/b @%]4Y;E
--enable-static-checkgid //使用静态连接编译 checkgid"ye{sx
--disable-cgid //禁止用一个外部 CGI 守护进程执行CGI脚本
|;i | ~g2w(W --disable-cgi //禁止编译 CGI 版本的 PHP
hO"ZJD G|LSZ --with-mpm=worker // 让apache以worker方式运行4D"tY*F4q5Zm2k n
--enable-ssl // 编译 ssl模块。.b9}AhPifn;C
&Dd4w,}0@%Mw
将apache设置成开机自启动:X K'e5i-a6[c)rC&v

jsOCB(VIk3t 在/etc/rc.d/rc.local文件中加入一行8~HCH c.S
/usr/local/apache2/bin/apachectl start
)H#AW^d[$d 这样每次重新启动系统以后,apache也会随系统一起启动.
w_.VH{WzM"Nd9m 0?h"P Tr9d)v
或者
,j(g:?t9C-s # cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd:V-}f3};~$g
然后 vi /etc/rc.d/init.d/httpd 添加(#!/bin/sh下面)2~ hW"AXO"Qn:zy b
# chkconfig: 2345 10 90q+]Z!M^8tb-@`!\
# description: Activates/Deactivates Apache Web Server DcSFY
最后,运行chkconfig把Apache添加到系统的启动服务组里面:
&\!|nu {3FA ~5`[-E # chkconfig --add httpd
;jl P M+Mq"X _i # chkconfig httpd on?p-e(b*bq]Iy
RZ(l5V$G*p
K*pq&h6vIb k
9、编译php 5.2.1并打上Suhosin Patch。3G }1Pv#z_
Suhosin是php增强型安全补丁,可以编译到静态内核中,也可以编译成php动态扩展。我个人强烈你建议安装成静态内核。Suhosin已经进入freebsd和gentoo的ports。下面的以下先说静态安装步骤。当然你也可以在安装php后将它编译成php的动态扩展。vHXz@~V.D

ri4{*eR8@6NwU # cd /usr/local/src3S-CiS,|%F3] E*M
# wget [url]http://cn.php.net/get/php-5.2.1.tar.gz/from/this/mirror[/url]}@;{5S;gL7kD
wget [url]http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.2.1-0.9.6.2.patch.gz[/url] IyGh5H&h-i\m
# tar zxvf php-5.2.1.tar.gz3^-c:G5k[X
# gunzip suhosin-patch-5.2.1-0.9.6.2.patch.gzj2p/n m8~A#t
# cd php-5.2.1'W,]k?iC3k^;^
patch -p 1 -i ../suhosin-patch-5.2.1-0.9.6.2.patch["aM NE.I'v fJ
u/fT X9zx3h$^ ^jc9[
#./buildconf --force
2j:x*y9p5n3By^ 4l {#{jP[:|S
# 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-libxml-dir=/usr/local/libxml2 --with-gd=/usr/local/gd2 --with-freetype-dir --with-jpeg-dir --with-png-dir --with-ttf --enable-mbstring --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/etc --with-iconv --disable-ipv6 --enable-static --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte --enable-inline-optimization --enable-zend-multibyte --enable-sockets --enable-soap --enable-suhosin --with-openssl
k;~#C+c j PM %KHPP:};{
# make
3E'A1m"?)cQ/D
+]1`)L An*P # make install
kCrEl y6Cr
#u1{QR e"E#VV # cp php.ini-recommended /etc/php.ini
(mg }d z
)P-e;|4TI { i?+RW$qs2n;RCx zE
在这里也顺便说一下将suhosin安装成为php的动态扩展的方法。毕竟网上根本不见它的中文安装教程。'_-t8Kx;FDy

1\:Ey7nX)X"jwkj;e 虽然我个人不推荐这种方式。
SZk\$r/q)sKm }r0AvAD}B
wget [url]http://www.hardened-php.net/suhosin/_media/suhosin-0.9.16.tgz[/url]
-~f/Q1M/h+f-PG5h tar zxvf suhosin-0.9.16.tgz_BtpH0P
cd suhosin-0.9.16;\w,Ab7@8TFJ
./configure --with-php-config=/usr/local/php/bin/php-config
*kM7M:n|:id make
Ajk0@ X,{RT make install
/_4[eGX-fM.i*f;T x(A&A!s Veby6Cwj
会提示编译的模块存在的目录,记住它。
^H$`.r&Hj{#J Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
Q0HOK+Yg#j|.g bKyU,vG+l:\
然后在php.ini中增加一行下列语句。
0RIk-~ x extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/suhosin.so L:NM}@

4JD4q E(Xd*B 10 、整合apache 与php
_Q9b$PH'u[!y # vi /usr/local/apache2/conf/httpd.conf
(a j4HiQ7B#[0^"S w 在最后一行加上:
2k*\y"CAR/c AddType application/x-httpd-php .php
7ENG2R(U Z"u5D7z 1|qA(Q Bb(S:dL
查找:(设置 WEB 默认文件)
.nEX Gi,[s DirectoryIndex index.html4Q]3};t9aw`
替换为:
C2h6H_ZT'ti DirectoryIndex index.php index.html index.htm //在 WEB 目录不到默认文件,httpd 就会执行 /var/www/error/noindex.html
F!l$O.t? A,Cb ?O7f6Y5PO g%y\
找到这一段:
$m"q.n^kS*PQ # AllowOverride controls what directives may be placed in .htaccess files.&AG^(P LD}H
# It can be "All", "None", or any combination of the keywords:
|!~P'iN3[p\ # Options FileInfo AuthConfig Limit
't!g.y5m4]W:{ #V9D,HO)V&W$Z0z)pNk
AllowOverride none
~4n'VV2w"gXNn M&fH9Uwd A7s
更改为AllowOverride all&HYF&`1xZr
允许apache rewrite]D,Y.r ~
pGw8m9d g
# 监听443端口,支持https连接i-GN9T-L
取消注释 httpd.conf 中的 Include conf/extra/httpd-ssl.conf
"K#V'SJC#\kF [_9a
1n P%JE l\oAB 保存httpd.conf,退出。
j2L'A l o!l
w#i-o5P\? # /usr/local/apache2/bin/apachectl restart //重启 Apache
+_E!Q[id)r
G2Zq3{_'n&? 11. 查看确认 L.A.M.P 环境信息
'BvJmX+F9O^&B"_ X vi /usr/local/apache2/htdocs/phpinfo.php]p)s qlXV
增加下面一行,并保存。
d(I1o9r{ @ f7}XuPrCR2M
# chmod 755 /usr/local/apache2/htdocs/phpinfo.php
Jc?t8u3R `|F9CAv;T3T*` M
用浏览器打开 [url]http://127.0.0.1/phpinfo.php[/url];RCW*G9W1h6h#N&p|,iv
T6@b2G bX-|+Vd%H
5Z^*v8IXq&fM*b
# echo ' ' > /usr/local/apache2/htdocs/testdb.php
:\ryVl*b3B-vD^5J # chmod 755 /usr/local/apache2/htdocs/testdb.php
3S7uG_%[!Uf-w # service mysqld start
M0P1Z8pr8u 用浏览器打开 [url]http://127.0.0.1/testdb.php[/url] H5Vf([GT*fJL0Y
检查 phpinfo 中的各项信息是否正确。
?wdp,}C ]-a%D Y5y(`(r -[B_Gk#N-P
12、设置SSL并创建自己的CA
T2f.DWKMW[0s,N
:c};ip(e7H[ # cd /usr/share/ssl/misc
j;xuH^ L t*hy&Fy
5^:B.Y%p:\:Cf # ./CA -newca_,ktMq1MhQ3@uAh

]Sm|2L[ YD&?3G 屏幕上出现如下的提示:CA certificate filename (or enter to create)
(g^?%POc
-II SJ7b%Eg+L\ 这是要求输入要创建的CA的证书文件名, 可以直接回车或输入证书文件名。
%^v k}_dtat t;Zp`#p,t#\
Making CA certificate ...
rx$C?ty?,o'|*x*Q Generating a 1024 bit RSA private key9c0w&y|+J4Y%D
.........++++++
t*p\|.a b&{6_ ................................++++++
[GIY vq:u writing new private key to './demoCA/private/./cakey.pem'9@0~*\])}zk
Enter PEM pass phrase:&b'[&K:gk1c&c0}_6i O9FR

r.]3Qt7[U Verifying password - Enter PEM pass phrase:-9Qj ^&D1\2R

jW} x'M 此时要求输入和验证CA的私钥口令、国家代码(中国是CN)、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。B,vH B5^"L5X,Jvg#[
4})B&^otA4p
至此,在当前目录下生成了demoCA的目录,CA的证书就在该目录下,文件名为cacert.pem
RM3n"|"abL @[l ea[xw0r _T
生成服务器的证书请求z0hy8r6k6T} pt

VU|E W3\nu # ./CA -newreq#iJ*o#s)T0b-y

3}fjqu?OL/D 屏幕上出现如下的提示:
!`RJ9`Q5_*dk+j
"D&])km6W M Generating a 1024 bit RSA private key
.j4c)nmA+ly .....................................................++++++
]$`4ji[$c+u6rz'a .....++++++
+~2C;J2p;D writing new private key to 'newreq.pem'd?)W7`!gp
Enter PEM pass phrase:
Uxr+P!acj(X#k Verifying password - Enter PEM pass phrase:"i-J(N*Q7lQn%Sy

.zf{5Q5IwE:B5I2a i 此时要求输入和验证服务器的私钥口令、国家代码(中国是CN)、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。
Qe.GP3O Vj^ zoM+PfT
Please enter the following 'extra' attributes`E[AI(q+r%Xy(ZJ

TQ.O_ K"Z to be sent with your certificaterequest
6Y&kXS*K/wwg "vxkRV4n1ul5id
A challenge password []:
v!_H OAU1a2m!as CC'^O$}7Y-B
An optional company name []:&yu:TdV({8{8p;C t$l
g A~1dM8h%]`
.Request (and private key) is in newreq.pem
$lfpv:be3E u
#ug2H+G)hz/M)q 这是要求输入服务器的相关信息。
4j"lCioG `iI9U W2Imh;h
此时,在当前目录下生成了一个名为newreq.pem的文件,包含了要生成服务器数字证书的请求。I5Kz^lHT"t

}8[M4@.@6m6f7s/B 签署证书#zDbzk z7j0r?
+xP!M!@%^,AcZ
# ./CA -sign
6E)c't)?vP wH Y Vo*c U\]Ak'Z
屏幕上出现如下的提示:
U,fS2R#B)M3N *r(R;A4aV Y5f-nt
Using configuration from /usr/share/ssl/openssl.cnf,Pv;AW:kUZ#Li@

h4Nx/ar*w!uU t Enter PEM pass phrase:
j}AA2a X@{m 6H8}7lF)e3Ns
此时一样需要输入CA的私钥口令、国家代码(中国是CN)、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。 \ IOU;m

a;Mznl%?J Certificate is to be certified until Nov 19 13:46:19 2002 GMT (365 days)
!kCuZ AH%R
*a+P'y!Q9h#R$UP Sign the certificate? [y/n]:y
v{'Eq N.TyvK#h
:s F,HJ H5B ? 这时显示证书请求文件中的各项信息,并询问是否要签署证书,回答y,进行签署。I;Cyrx(nZmS

8B4cy*gu9j1] M 1 out of 1 certificate requests certified, commit? [y/n]y
;n[$|)P@-~K \+uJ
%U2aX"f)Z}7`"} 回答y,会显示已经签署的证书的信息,并在当前目录下生成服务器的证书文件newcert.pem。
g#l S$n;n |G
Wz.h?+E@(I-j_!y1_ # mkdir /usr/local/apache2/conf/ssl.crt/"C:UhW8f;{(F \Z
# mkdir /usr/local/apache2/conf/ssl.key/j!@juf`:]t
# cp newcert.pem /usr/local/apache2/conf/ssl.crt/server.pem
Z2v[L,G N # cp newreq.pem /usr/local/apache2/conf/ssl.key/server.pemH@P;b:z

f4X\{)H
v3D%L~5\:]|:WV 更改服务器的证书文件的相关配置q!n5W8}-L
# vi /usr/local/apache2/conf/extra/httpd-ssl.conf)C'YF(\I'UG
CL8J)R7C2Lj Z5?@o(u
查找并修改
f)Oit(N'`*w8}rl3Uq
gmw$\ g_O*v # Server Certificate:k(g5J)I0`/Cv ?H$c
# Point SSLCertificateFile at a PEM encoded certificate. If
LL'e'^8s,x6F h # the certificate is encrypted, then you will be prompted for a$qW8k`)N
# pass phrase. Note that a kill -HUP will prompt again. Keep5D rX |T_.D:v
# in mind that if you have both an RSA and a DSA certificate you"n7_P3MYO X:L#F
# can configure both in parallel (to also allow the use of DSA'T3U Y:AE
# ciphers, etc.)j"Y7N _N
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.pem
lH+ED.qK^n0C b\!DTR,E #SSLCertificateFile /usr/local/apache2/conf/server-dsa.crt
'i^_ZIE)e
~3Q4iLSF5\$tv # Server Private Key:o`#E\9F
# If the key is not combined with the certificate, use this
,OQ;Q:l1eu # directive to point at the key file. Keep in mind that if
l6T [4Q*a2N # you've both a RSA and a DSA private key you can configure
P8mk G%Ix:G |I # both in parallel (to also allow the use of DSA ciphers, etc.)
~"ww)|uR q SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.pem
y:nPY)Hc6w?&] #SSLCertificateKeyFile /usr/local/apache2/conf/server-dsa.key.~"s2_be4^

9l`u];^*G
Grx8s1[l#[ U 示例文件
!p{1h(~-bq
FD-Ov LZ` 在SSL的根目录中生成一个index.html,它是如下所示:
_iZ%Xd5|
(?#?2mz+^5Ak <html>l:RRHpDZb/f
0|:\-TW0P
这是SSL示例!
"R{AHw!GG [Z?M'D3YJ5Ke|
</html>
o{%Au eH%} a
+_F&S:wC%w 测试
KCjM` ?&Y)M}5G XG z|Kn
假如Web服务器的DNS名称是[url]www.cnprint.org.[/url])~T6xN5OaA C)c:J
-_c;xB{lI
在浏览器的URL地址栏里输入 [url]http://www.cnprint.org/[/url],浏览器便会显示APACHE安装时确省的Test Page.(g1x'C7bcq`

(ZrKm b f#J1z_ 在浏览器的URL地址栏里输入 [url]https://www.cnprint.org/[/url],注意:是 https 而不是http !1W3A`_j/f
8]o{ w%Vh
浏览器会提示站点已经采用了SSL进行数据的加密传输.由于我们的CA证书不是浏览器缺省的信任的根证书,所以,浏览器会说无法确认服务器的证书可信。暂时不管,一直NEXT,最后,浏览器会显示:这是SSL示例!9L z s&J0z/Ntg1~%C0f

&T~M2Ja%}l u 可以把CA的证书放在非SSL的站点上,让浏览器下载并安装CA证书,并将其设置成可信任的根证书,便可解决上面的问题.8 解除HTTPD起动时的口令输入。
4g$_.W:PD C*]/|S
(}va`KR%r/?0} Hj 由于安全的原因,Web服务器的私钥是口令加密了的,每次重新起动HTTPD或Linux时,都会要求输入Web服务器的私钥的口令。
Sg&`sD7u _v 1E A kOc,\,fE
如果要解除HTTPD起动时的口令输入,可以这样:
@.}2I U|
&d#^ F+O \ # cd /usr/local/apache2/conf/ssl.key/
7y]/`]A # cp server.pem server.pem.org
%i-MO!VMH4K # openssl rsa -in server.pem.org -out server.pem
|%C R A'G#a { # chmod 400 server.pem
#]E:a)f\1icl ;@U o1ht#yd
另外在网上看到一个方法,我没有试。有兴趣的可以试下。!Q#? H;?mz.s
Lb]k]hb#u
创建SSL密码自动应答文件,否则每次Apache启动的时候,都会要求你输入SSL的密码.
ca I/kX(Rw2`'C 创建 /usr/local/apache2/conf/ssl.key/sendsslpwd ,内容如下.
%\j:N g/V:v #!/bin/bash Q6ST$cM e
SSLpasswd="YOUR PASSPHRASE"
M ^n:UQw"J!] echo $SSLpasswd [}.s#jsI
chmod 755 /usr/local/apache2/conf/ssl.key/sendsslpwdC-_2I(kkKr1S a0y

{W*u.O$^EH
$O2YyF+ZD2W 此时,Web服务器的私钥已经没有口令加密,一定要确保server.pem文件除root外,任何用户均无权读取它。
#S \7@i&I s,@N y w h,h|'f8E{lP

l~7p_N 13、安装 Zend Optimizer
UP.|1Y$L@:U]+w # cd /usr/local/src P!P Ps%b ~,F
# wget [url]http://downloads.zend.com/optimizer/3.2.2/ZendOptimizer-3.2.2-linux-glibc21-i386.tar.gz[/url]E2a m L*G8C
# tar xzvf ZendOptimizer-3.2.2-linux-glibc21-i386.tar.gz nn:a1].iQ
# ./ZendOptimizer-3.2.2-linux-glibc21-i386/install.sh{ _6j?q }
按照它的提示一步步进行就行了。
?g b+WW e bC||v`/y"f
14、安装eaccelerator // eaccelerator是php的加速软件,使用后php的执行效率会有较大幅度的提升。目前eaccelerator 0.9.5已经和ZendOptimizer-3.2.2能够很好兼容啦。不过我个人觉得,ZendOptimizer-3.2.2没有加速的功能,只是起到了运行zend加密文件的作用而已。闲话不多说了,大家有兴趣的,可以去google下。
.@*e~!na+_N(?
#m$}+OvP)JY # cd /usr/local/src
KAE`2d`%k # wget [url]http://bart.eaccelerator.net/source/0.9.5/eaccelerator-0.9.5.tar.bz2[/url]KzVt4GL
# tar -jxvf eaccelerator-0.9.5.tar.bz2
l+d;fiI&U7H # cd eaccelerator-0.9.5
"E7e{O0OkRx
_@iG&E,q export PHP_PREFIX="/usr/local/php" Fn*j}d:b
$PHP_PREFIX/bin/phpize //指定一下php的目录
g6Pua0F3c6E
7k;pjFGb;lr # ./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config // 设置
A2X.z z8WH?HT xTP6Gw
# make & make install
(a}G B}sk3] W:f}(]6hG
编译安装后我们会看到屏幕提示的eaccelerator.so所在的目录,比如我得到的是/usr/local/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so,记住这个路径,待会要用到。9O"m$v&] t:i^"[c

8f@7w6q6H0er 修改php.ini(安装完zend之后,php.ini存放于/usr/local/Zend/etc)&CtR2mS m
在文件最后,zend之前,注意,这部分内容务必放在zend之前,不然可能会出现不可预期的服务器问题。添加下列信息:N'Bx X Z$O
v%E7qI C7R
[eaccelerator]
FX U!`.C{ extension="/usr/local/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so"8|Uf,MuC
eaccelerator.shm_size="32"-zwI,s&VSF$x+\wd'Z
eaccelerator.cache_dir="/tmp/eaccelerator"#t nER:h~}
eaccelerator.enable="1"#B?e2ZT|8w
eaccelerator.optimizer="1";J[d6d+]1X^ ^
eaccelerator.check_mtime="1"
V?CfO%pzzpl eaccelerator.debug="0"
+Q aK8[p eaccelerator.filter=""1],zW.]Yf H&rF8H2S;e
eaccelerator.shm_max="0"wS],wU
eaccelerator.shm_ttl="0"
gF-ID+W eaccelerator.shm_prune_period="0"
{+q7W/F1x7}^_ eaccelerator.shm_only="0"
8g`5Ikw*V eaccelerator.compress="1"
o"R U1DtFsQ eaccelerator.compress_level="9"
+]v+Q,H9W$P *x.c+Bk h
解释:
[!Y&eJk+I#OR5[` [ a zend_extension 是安装完程序自动指示给我们的T%p~3ZP:lng0zA N4d'w
eaccelerator.shm_size="32" 缓存大小单位MB
7f&w { D+xO7n eaccelerator.cache_dir="/tmp/eaccelerator" 缓存路径@b'BXz9@%yC
)\3F RP!~u?BS
# mkdir /tmp/eaccelerator // 建立目录
1a-~f S7wZ S)pm # chmod 0777 /tmp/eaccelerator // 修改目录属性
$b1ZTY"i3O#^ )hgY!b;L
最后重新启动apachectl
"`kvy)t8T:w z:Pf/L,Vy
重启apache,phpinfo显示:
X:W!Q]g0I} a*j This program makes use of the Zend Scripting Language Engine:Z.ZrT;oY)}oz
Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend TechnologiesN!Rl4Cyc
with eAccelerator v0.9.5, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
Wn A"@ _+w$NS&g with Zend Extension Manager v1.0.11, Copyright (c) 2003-2006, by Zend Technologies
a!KqnJZ.?/_5H(E with Zend Optimizer v3.2.2, Copyright (c) 1998-2006, by Zend TechnologiesYm-[`1csDJ/YI;s

U|$F/E)X`+x UL 也会有eAccelerator的具体信息。XS)g4av@Ys

f@1S"M0I 15、安装phpmyadmin,管理mysql数据库
l8LsE/f @Y -EH[,w4K
# cd /usr/local/apache2/htdocs/
]@-AK,J(QcF # wget [url]http://jaist.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.10.0-beta1-all-languages.tar.bz2[/url]1y P_z8f"O]e s
wX(u&SLF!D7lj2QA"S?
# tar jxvf phpMyAdmin-2.10.0-beta1-all-languages.tar.bz2a@H3x ]r&~g.C
# mv phpMyAdmin-2.10.0-beta1-all-languages phpmyadmin
]:C1T;|jJ S;Qc3I j6[o
# cd phpmyadmin/libraries
FE.K+L Q@
,q@pk4c}y4y 修改配置文件N#`Z`Q
# vi config.default.php
*g X ot J Q hj0gfJ\D,_|
找到这几行进行修改:
2]S}p_/? $cfg['Servers'][$i]['auth_type'] = 'http'; // Authentication method (valid choices: config, http, HTTP, signon or cookie)i {~qPH] h W^k
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user0W"UV"calT
$cfg['Servers'][$i]['password'] = 'PASSWORD'; // MySQL password (only needed
wyn1k4`g8]U
(@CfPN Pnt 经过这几个步骤,我们一个比较安全的LAMP服务器就环境基本建立成功啦。感觉上也不是很难,是吧?;q.Z%Day P7\_
当然对于打造基于动态IP的网站,以上的信息还不够,还有建立ADSL拨号,NAT,动态域名更新,防火墙,安装论坛程序等一系列的工作,我会慢慢地写出自己的心得与大家分享。毕竟这对我来说,也是个学习的过程。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.