1、下载centos 4.4
# \- A0 h1 d; ~) p) Y* l我是下载的DVD版本,大家也可以下载服务器CD安装版本,其实都差不多。大家可以到这儿下载,速度很快的。
2 S2 E( ]8 ~9 V# o& Nhttp://ftp.iasi.roedu.net/mirrors/centos.org/4.4/isos/i386/
9 M4 w T( A& ^$ s; P
9 F. U1 \( ^! t6 b/ f0 a! U下载后当然就刻录成光盘。我建议你刻录DVD啦,如果是菜鸟,也可以在图形界面进行学习,不会这么抓不住头脑。
1 `0 X9 b/ Z- ~) E+ @& {3 ^/ p; [
4 i& q0 [9 q5 N& e* H n
2、(1)安装CentOS4.4
1 L' u7 b7 X% c8 D
作为服务器,不安装不需要的组件,所以在选择组件的时候,除了选择FTP SERVER外取消所有组件的选择。也不要选web服务器。因为我们后面要手动编译安装。
Q* ]4 m( d, _* _
0 Y4 p% A$ X k# W5 M
& u, d& E- \8 o! f: F& U3 J系统约定RPM包和源码包存放位置
" W$ J/ G. M+ v% w; M( _7 P+ o1 X" C
RPM包和源码包存放位置 /usr/local/src
* ^* ~6 Z# k2 v7 B
源码包编译安装位置(prefix) /usr/local/xxx
: k8 Z: ?: ^" M }: ~+ ?* J脚本以及维护程序存放位置 /usr/local/sbin
* x# @7 @) g& @( z
MySQL 数据库位置 /var/lib/mysql
& m& |; ?, k9 H7 q% WApache 网站根目录 /home/www
9 r0 |% E: i8 W3 aApache 虚拟主机日志根目录 /data/logs/www
& m- ]$ V/ v5 T3 c% ^& fyum RPM包信息文件 /etc/yum.list
% h& k! D8 H$ `- _1 @' @
1 i L+ i% Y, N3 T& f
(2)更新系统,此处我们使用up2date,先修改up2date镜像。
; Z* w+ X$ X/ T, a& J, m
vi /etc/sysconfig/rhn/sources
+ L4 a5 y" Z8 ~! K8 Q
( O, H4 c& u l
我把源修改成这样了:
) Y! z9 q+ z1 l3 K0 I* Q& o; P: R% J3 M# T+ B7 c! ^) f' C
yum centos4-Base
http://mirror.be10.com/centos/4/os/$ARCH/
! X: O4 p% n. Q' g) R8 n
yum centos4-Updates
http://mirror.be10.com/centos/4/updates/$ARCH/
4 k- ]9 s' W# e8 t$ L3 f6 {yum centos4-extras
http://mirror.be10.com/centos/4/extras/$ARCH/
, [6 z- k0 Y7 J' M* r3 X
yum centos4-contrib
http://mirror.be10.com/centos/4/contrib/$ARCH/
], q3 F1 Q" j
yum centos4-addons
http://mirror.be10.com/centos/4/addons/$ARCH/
4 R! @4 ^ M- e0 C4 G# eyum centos4-centosplus
http://mirror.be10.com/centos/4/centosplus/$ARCH/
$ [2 E' m8 j( q. [' @2 o+ W7 T5 q7 X4 U3 t W
然后执行:
" c% n5 S2 L( |3 Q% g9 i# K7 N9 F4 l# up2date -l //列出更新
5 @4 L! b" O' f% H# up2date -uf //更新包括版本的所有程序。如果不包括内核,则用up2date -u
( y7 K+ C0 H S6 W& f; c
6 F- J6 ^' a9 }% R, b5 y) M3 y" i3 y0 ], l1 \& |8 \
3、系统环境部署及调整
$ |9 P# _# g" H; H# g9 e' @3 R. U# ^- b8 _3 g0 _) B
(1). 检查系统是否正常
! s8 L: C# s& W, x: ]7 U: l5 Q# more /var/log/messages //检查有无系统内核级错误信息
5 v$ g7 ]8 m. `# demesg //检查硬件设备是否有错误信息
1 G2 j% C6 S8 Z) M& a* ] {" O
# ifconfig //检查网卡设置是否正确
5 [1 n7 e( N% x3 Q) f4 \- [6 {( i1 q# ping
www.163.com // 检查网络是否正常
8 s! E& G( ?0 m/ M+ M. v7 a' z1 @
+ E' N7 k: {: g0 F \(2). 关闭不需要的服务
, ]$ D7 u$ j$ C7 _) W3 @5 Y) k# export LANG='en_US' //设置语言
% o: k% _0 ]( _3 r+ G) Z: @
# setup //选择启动的服务
# j; c8 M7 f1 h( ? t$ M进入system service 选项。
3 z) O, J: ? b! z5 _* ~& M% A以space 键选定所需服务。
8 L9 y- p7 V7 A0 C* n2 m, u }以下仅列出需要启动的服务,未列出的服务一律关闭:
9 E6 [% D# ?! v4 j5 J W& ]
crond
3 L+ C0 F& _4 j! _3 ?! }irqbalance 仅当服务器CPU为S.M.P架构或支持双核心、HT技术时,才需开启,否则关闭。
( Z, V# P( n0 L C6 A: @( W
microcode_ctl
8 \ P9 M3 f/ \! [
network
% k& {: F4 j: N6 S, Q
vsftpd
, x+ @& P @& T% y
sshd
, @# k% ]( L D" ^" s C0 W
syslog
5 l; Q/ u$ T* a" p% T0 Q' S
1 q' x$ y! E3 ^' N0 m( J6 S
(3)、修改/etc/yum.repos.d/CentOS-Base.repo,将镜象站点地址改为在中国的镜象站点地址。不然我们通过yum安装软件速度会极慢。修改如下:
) b5 n' [ ?6 i, y% J& ]7 f
# Z9 W( O0 u. K/ G) \) G9 M# CentOS-Base.repo
% ~; P+ X( ~8 J#
( `2 m+ z+ d3 q! `3 q4 E' e$ D$ a( W
# This file uses a new mirrorlist system developed by Lance Davis for CentOS.
* K9 {5 |: F7 S2 O! i3 r7 d: @) U0 f# The mirror system uses the connecting IP address of the client and the
! g% q9 R% v4 }, [7 t# update status of each mirror to pick mirrors that are updated to and
7 V, V9 K. L' I# geographically close to the client. You should use this for CentOS updates
6 \1 n' J& `) ]2 u& M# unless you are manually picking other mirrors.
$ r7 {9 r; D# M& X/ c#
/ V+ E8 W Z4 d# If the mirrorlist= does not work for you, as a fall back you can try the
' _# Z7 F3 j3 t3 S- B$ ?6 {
# remarked out baseurl= line instead.
$ o& w3 s# i3 w
#
( R. r6 X `6 Z5 U7 ?2 R( ]" E#
' a! x# F+ Z& y0 n1 m( g( V
2 Q- e8 j/ s' B
[base]
1 o4 S& r8 S9 S# n8 S2 l
name=CentOS-$releasever - Base
& h& m$ a+ i3 R7 U8 u7 mbaseurl=http://mirror.vmmatrix.net/CentOS/$releasever/os/$basearch/
: o: P: j/ e* e4 @
http://mirror.be10.com/centos/$releasever/os/$basearch/
5 `% r) D: v- ^1 V9 G( s
http://centos.hostlink.com.hk/$releasever/os/$basearch/
# y/ h8 y8 x% h- `! F" Z5 L. h. chttp://ftp.hostrino.com/pub/centos/
" [: ]3 U5 s7 V! l' k4 v7 Y
gpgcheck=1
7 B- Q' P) |% \+ V7 |4 R$ a
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
, |; m( Z3 h; k+ Z) |$ e
1 K! x3 i, }8 y- z" C+ c+ [#released updates
; R* G/ N; x5 [# o. a7 `[update]
2 M) C$ D& y2 R2 a' V# k7 |name=CentOS-$releasever - Updates
) L# U2 I5 r6 G; k+ xbaseurl=http://mirror.vmmatrix.net/CentOS/$releasever/os/$basearch/
2 f1 f) q4 C8 Y* ~7 _ H) d, ]http://mirror.be10.com/centos/$releasever/os/$basearch/
. d4 l4 J. d9 b; c* g5 c
http://centos.hostlink.com.hk/$releasever/os/$basearch/
5 }+ G- {( Z* zhttp://ftp.hostrino.com/pub/centos/
' B& C9 \9 L# Q5 N, p
gpgcheck=1
% z+ s+ ~) H4 |/ Q! }5 r6 ogpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
: h$ H$ |: N- C" Z6 a8 S) T
, b; R$ `# B+ y2 F' u( e: u' f#packages used/produced in the build but not released
) M; I* [. l8 x- U[addons]
+ N8 s5 \9 M6 ^6 }1 p+ G7 z$ H# kname=CentOS-$releasever - Addons
: [" m& q0 e1 l4 k1 j) f) ^baseurl=http://mirror.vmmatrix.net/CentOS/$releasever/os/$basearch/
) z2 n5 X0 {4 W, ~! c1 _http://mirror.be10.com/centos/$releasever/os/$basearch/
( r' ?1 j0 x8 o# C& Fhttp://centos.hostlink.com.hk/$releasever/os/$basearch/
( g! g" I6 o: |) o) Rhttp://ftp.hostrino.com/pub/centos/
~1 U2 Q! ^5 ^/ K' u3 j' W+ l5 P
gpgcheck=1
l6 L8 j0 W! X6 ~ }. t& z7 I
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
4 }. t9 n6 @0 e7 y" G" W! X- U- x( W- ?, d5 _( M3 E; i
#additional packages that may be useful
2 t# @3 o( W0 n: a& G1 V
[extras]
6 _' q# [0 d+ @! Xname=CentOS-$releasever - Extras
4 I( u% }/ s$ K5 Y
baseurl=http://mirror.vmmatrix.net/CentOS/$releasever/os/$basearch/
% j, C1 M! H1 Q! Whttp://mirror.be10.com/centos/$releasever/os/$basearch/
! d, w0 v/ `0 l, \/ Phttp://centos.hostlink.com.hk/$releasever/os/$basearch/
9 U4 ~0 |* S9 U8 q% Z! r6 ~http://ftp.hostrino.com/pub/centos/
! ?" h' N$ `' x9 O1 W( {) Y% zgpgcheck=1
1 h7 e1 n) T. q" Igpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
; K) L8 T7 U$ B% }
3 S4 \; _! h3 R* D#additional packages that extend functionality of existing packages
" e+ Y# a' m7 Q/ _[centosplus]
! O1 G7 ?' F H9 o1 F4 ?name=CentOS-$releasever - Plus
& V$ {- g$ A! o) w6 T" ?baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
# Y2 X5 D: e5 m; Y6 E9 B
gpgcheck=1
" w2 [2 R" A3 T! p$ f$ v
enabled=0
0 D+ s( v& \: ]- V. z' kgpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
+ G4 ]+ l x+ f8 k. x5 i5 n1 R" l$ D1 B& q" ^4 e6 G: o- M
#contrib - packages by Centos Users
; b6 B( [5 a/ `3 I1 O8 B
[contrib]
) g% s/ ]- _+ R* m: T5 W6 ]
name=CentOS-$releasever - Contrib
: |9 q0 ]( H+ N2 B! ibaseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
8 {1 g C6 p" D: l4 h8 j0 Dgpgcheck=1
" g8 ?% t9 {0 C; {" X2 Z
enabled=0
5 h1 b0 l- E. W; T p6 l, h
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
$ m% M$ {% S/ b1 Q: m# g5 K
5 w% g1 b% v1 E3 t保存。
6 P3 w" M) Q5 t2 W, _ W
0 F* U& G8 l! U% |& ]! b然后导入key升级相应yum数据
- N# y' s4 }. Z" V, @3 f
5 ]& a6 @, s' O* Q# D# rpm --import /usr/share/doc/centos-release-4/RPM-GPG-KEY-centos4
7 ~& p' L- ^4 E
# yum list tee /etc/yum.list //读取yum list 数据,将其输出到 /etc/yum.list。
- C" |5 R$ x( _, ^( l% J3 [6 {4 Q6 H& b5 C6 K# a
3 X* I3 F# \8 B/ q(4)、定时校正服务器时间
8 y9 I: c7 {+ w
# yum install ntp
1 a" p- s: O5 l! |) i6 M* G1 G
# crontab -e
! s' B7 P+ C, K7 e) O u8 Q! F
0 23 * * * root /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1
% g2 h7 w. p, j5 @; a
# L* j3 R; _; Q8 S7 c# y
以上命令设置好后存盘。您的机器将在每天的23:00根据中国国家授时中心的NTP服务器时间自动校准时间。
: }$ o; } B- R7 U' r3 U
( k+ ?; v3 N6 \8 I: Y1 U1 X5 J
(5). 对TCP/IP网络参数进行调整,加强抗SYN Flood能力
9 f1 |" T, [5 O; L* z: @/ d/ g6 J# echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf //将net.ipv4.tcp_syncookies = 1写入sysctl.conf 文件
/ ^( }$ `: A: u3 q
# sysctl -p //查看
/ x; I* s1 O0 P9 }1 P" ]# D# t: H) {" \+ G& d' d: w& R0 L
(6)、FTP服务器的配置
& {( O* c0 ]) }6 k. m, ?% N2 Ovi /etc/vsftpd/vsftpd.conf
* b# p+ Y3 n0 F6 H) W( u1 k8 R把anonymous_enable=YES注释掉不允许匿名登录。
0 l4 R3 C* J2 D7 ]4 C; I9 `' W& N8 G把chroot_list_enable=YES
( H2 z1 p/ D) M8 o
chroot_list_file=/etc/vsftpd.chroot_list
+ V& j( Y' f7 Y0 g: a7 _ u
前的注释去掉。
: e# [+ j) l# C3 @+ U1 D
把ftpd_banner=*前的注释去掉。后面改成你的欢迎信息(这样设置可以避免显示ftp服务器的版本信息)
! n$ {4 g! i2 A @& F5 H
然后保存,service vsftpd start就可以了。
. {9 P! X0 j9 m3 o3 T
0 L" V5 q) e- g$ i+ h7 H; L* x这时应当添加用户,因为root默认不能通过FTP方式登录。
$ i: D) t9 I4 M3 @$ P: k% l
# Q9 j' R& ?+ ]9 S6 F' {
# adduser username
8 a Z5 W: L- H( G
# passwd userpassword
3 @3 s& o" O( N/ f5 ]) Y7 G8 @! X' ?9 F6 ]7 k4 T) h
这样对于我们上传一些文件到系统中很方便。
4 W/ d. c' G1 w$ K- Z) P; g5 c
" h* [/ D q7 v! |. X
, k/ z. c: M, N' G6 e5 a4. 重新启动系统
, } k5 ]# ]: K/ b$ d4 w+ x# init 6
8 y& I4 j) \0 |: q m, [2 x: a
' _: D/ P) h+ B4 s9 R ^$ [
0 Q/ d1 L3 _, ^8 ]/ F$ E5. 使用 yum 程序安装所需开发包(以下为标准的 RPM 包名称)
- F7 ~" {" Z0 h+ O; A: S
# 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
+ g, ?: O, \% A9 b& L0 z* Z$ ]: N0 j+ m( ] F* y6 j
#这里我们将编译GD所必须的一些小软件比如libpng,libtiff,freetype,libjpeg等先用RPM的方式一并安装好,避免手动编译浪费时间,同时也能避免很多错误,这几个小软件的编译很麻烦。这几个小软件编译错误了,GD当然安装不了,php5的编译当然也没戏了。所以我们抓大放小,对这些小牛鬼蛇神采取快速简洁的方式进行安装。并且对服务器的性能也不能产生什么影响。
0 ]7 H4 M2 c% K$ e+ J+ f
, ?+ I; |! W' x3 S6. 源码编译安装所需包 (Source)
% Y$ p& X; u' ~8 ^+ ?+ A% R(1) GD2
2 E: `* V: D+ S8 t$ ^2 E
# cd /usr/local/src
! w1 N( [3 X3 d2 w; v& `# wget
http://www.boutell.com/gd/http/gd-2.0.33.tar.gz4 B% I# w$ ]2 }5 E0 k0 Y% b$ N
# tar xzvf gd-2.0.33.tar.gz
% O/ g0 E& F0 g2 O: h# cd gd-2.0.33
$ d% O9 ~0 s4 [
# ./configure --prefix=/usr/local/gd2 --mandir=/usr/share/man //./configure 配置。
: _, ?6 M$ Y9 ]* T' `
# make //make 是用来编译的,它从 Makefile 中读取指令,然后编译。
/ F1 e' w! i' t5 B' r) i3 c w
# make install //make install 是用来安装的,它也从 Makefile 中读取指令,安装到指定的位置。
9 j0 a* k, J* s% b# W) H
5 v& W( A" A F' R6 R(2) Apache 日志截断程序
5 j0 f$ m3 R" x* J# [# cd /usr/local/src
5 k+ g6 n- J( w! x" W- ^# wget
http://cronolog.org/download/cronolog-1.6.2.tar.gz9 l1 g/ L; C. p8 Y5 ^0 o: t
# tar xzvf cronolog-1.6.2.tar.gz
1 ], P6 u% G/ M2 o Y/ v5 N/ J# cd cronolog-1.6.2
: p1 [4 ^+ o. n$ v3 P9 w
# ./configure --prefix=/usr/local/cronolog
/ Z5 t1 C# L, N! w) z7 m* F
# make
3 n+ \0 C( R$ a9 d2 _
# make install
8 O& T; a ~! j9 A- J8 n8 N& k. [& S
' Y* ]8 ^. y2 |* g5 U7 s: [(3) libxml 库程序
# `! Y, c/ B. M( D- ]1 @, r+ e) q# cd /usr/local/src
" j3 `% h2 D4 L0 `. L# wget
http://ftp.gnome.org/pub/gnome/s ... bxml2-2.6.26.tar.gz$ v. f$ ^; k: b8 `# l# P
# tar zxvf libxml2-2.6.26.tar.gz
5 p, U. C$ M$ o- ?. }
# cd libxml2-2.6.26
% j) A$ G% K1 g2 N
# ./configure --prefix=/usr/local/libxml2
3 r) n- c* H5 A) F& L3 h
# make
7 q' k5 ^& ?, D; C) }( [! M
# make install
& q( I3 j& r! V: P6 N" h( \5 E2 k U
7、编译mysql 5.0.33
5 T% t ?% l- P- Y/ p1 {: S0 v
; o7 \. N2 @9 M' A, I: b8 t0 Bcd /usr/local/src
' l/ h/ R8 u2 |) A) P5 m* o- n1 Y7 T# wget
http://mysql.oss.eznetsols.org/D ... mysql-5.0.33.tar.gz
' W! D0 ^- a7 E9 h. y# tar xzvf mysql-5.0.33.tar.gz
0 c' s( p2 P' B6 b# cd mysql-5.0.33
0 h' g8 b4 _! c6 ~4 N
5 g* |/ @; K2 l# E+ L+ R$ B) u6 Z& Y
修改mysql 客户端最大连接数, 默认的只有100,远远达不到我们的要求。
$ j j% l+ ^7 }0 @* m; @5 F$ n
7 k, z" ^5 N; Q9 ?: q% v# vi sql/mysqld.cc
W0 L' F* y' n# O6 z, b4 I
; g8 d, _1 c- |9 E- a
搜索找到下面一行:
( h+ e- y! d. v; s- X8 S5 H{"max_connections", OPT_MAX_CONNECTIONS,
$ s& a* X2 e1 u G' x3 x"The number of simultaneous clients allowed.", (gptr*) &max_connections,
# e3 F( B! P! I, X) E9 n
(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1,
& Z) a, o" i1 P9 Q0},
& q" ?; R; C$ X3 K: Z' |
( M: Q; r* k6 C1 I4 v) ?将其中的100改为1500, 当然小点也可以,根据你的需要来,不建议改的太大。
$ }/ \. D# ?8 y
0 [+ ]1 D' a( d1 b{"max_connections", OPT_MAX_CONNECTIONS,
# ]8 n2 E3 E4 o* Y, J
"The number of simultaneous clients allowed.", (gptr*) &max_connections,
2 R7 x: d! P# X/ `! Q(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 1500, 1, 16384, 0, 1,
8 M9 ]' e( w( y4 I) z; j
0},
3 F7 _8 ~4 n& g% q a+ B/ h6 e& B, i( f8 S
保存。
1 j$ q, ^( n C4 N, q! R' Y# F% P1 F# S5 F: O; q
# 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-isam
& J, w; K5 H- Z# d% m6 ?7 O2 V
, G& _( |1 H% i: o5 U
5 P* f h" w+ L$ e- O9 H2 M' ^配置成功会提示:
- C: s# k2 b/ z9 J( r4 o1 Z
4 H' @ j* _# ]: X: c- G3 W( aMySQL has a Web site at
http://www.mysql.com/ which carries details on the
( k K4 Z- l7 Q' ^' V
latest release, upcoming features, and other information to make your
3 q% q% m. f$ T
work or play with MySQL more productive. There you can also find
. L4 S3 I( A {6 S X+ hinformation about mailing lists for MySQL discussion.
1 D* [4 z; y$ K# i* X X; W' M2 y: Y& |& {% p9 I6 e
Remember to check the platform specific part of the reference manual for
# s" W" ^; X* J; Z1 {: O
hints about installing MySQL on your platform. Also have a look at the
0 T8 f$ d( E, vfiles in the Docs directory.
) f. r; Z% h1 G- p/ K9 ~: R- A
9 g L2 N6 s0 U, j* XThank you for choosing MySQL!
" v; l! L, Y4 I
! o8 [, }0 d* O- Q2 c" z// 注意 ,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的,注意不能使用。请查看相应的编译优化参数。否则程序会无法编译,即使编译成功也无法运行,嘿嘿。
5 T* ?- z. `: S8 P
, r. x4 j9 X% a- k& Z1 `# make
& Q) j( _) |! B1 ]& ?& h5 c& ?
编译的时间可能会比较长,毕竟优化的比较厉害。
1 [8 U5 y4 K# J6 y* p9 s1 {) [1 R7 u4 @
# make install
( \. }; Q4 |1 n) L
: J$ x" r0 n5 s/ D
编译安装完成后执行后续操作:
' X$ s. s; w3 i% {, }. U6 Y
# useradd mysql //添加 mysql 用户
: Z9 ]) B$ z0 p, }" b, ^0 h% B6 I# cd /usr/local/mysql
U7 \$ l( E9 c: Q# bin/mysql_install_db --user=mysql
4 h1 ^2 d. }* N# B0 G& Y# chown -R root:mysql . //设置权限,注意后面有一个 "."
' d* C% `/ u! ]* g& B
# chown -R mysql /var/lib/mysql //设置 mysql 目录权限
% q3 p N3 m7 M/ x1 f3 u( y# chgrp -R mysql . //注意后面有一个 "."
5 R7 A2 n* d; _& y. I
# cp share/mysql/my-medium.cnf /etc/my.cnf
" Q7 g* Q/ l4 ]# cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld //开机自动启动 mysql。
* {4 k) R9 w+ t6 n4 ~# chmod 755 /etc/rc.d/init.d/mysqld
' G/ X, E' u# r3 y# v
# chkconfig --add mysqld
8 {5 r" j; o I, n' d) _
# /etc/rc.d/init.d/mysqld start //启动 MySQL
1 W" _; e; O4 l2 l1 p
# bin/mysqladmin -u root password "password_for_root"
) N/ o' T; k0 u& x/ Z# _# service mysqld stop //关闭 MySQL
& ~1 u, n; ]. m" [8 U
: l, {* g$ e5 `4 y: ~# l p
8. 编译安装 Apache
/ Z, C# G* k. w0 ^
# cd /usr/local/src
5 u" F" a! {% c, Z7 Y0 O/ G4 U
# wget
http://www.ip97.com/apache.org/httpd/httpd-2.2.4.tar.gz
; r$ {) D( e* C% ?2 \0 I+ u! Q# tar zxvf httpd-2.2.4.tar.gz
+ |6 h, ]# l. W4 b% Q" e# _
# cd httpd-2.2.4
8 ?) y) Q' _- \$ S4 A! `9 N1 P+ d
0 [# W* U' p0 r8 H v& e
依次安装apr和apr-util
+ P8 z1 M$ n4 M) n# I7 g
" P- i# T* K, K# cd srclib/apr
9 c |# ^* p6 h3 F5 O5 V+ T4 z# ./configure --prefix=/usr/local/apr --enable-threads --enable-other-child USE=ipv6
4 M( V5 y' b5 X- z: Q ~# make && make install
1 [+ P! n: p6 s$ ~ w u; v) z% y4 G
! v, s" g' H1 y9 j/ ?+ E! G# cd ../apr-util
6 @6 [9 T: U0 k9 p' u7 K# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ --with-mysql=/usr/local/mysql
3 l( D ]6 M4 q; W! R; U# make && make install
' k+ q0 J$ l# `5 T6 d( B% ?: o$ w0 }, B$ w9 ~: V" }: z
cd /usr/local/src/httpd-2.2.4
* [) f6 S5 Z/ m
# 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
& p) Q. s z, s
& m; q( I$ p, K$ D5 [# make
$ K* Z( I0 I! @# Q+ A4 \
# make install
" O" |& \. P9 q# echo '/usr/local/apache2/bin/apachectl start ' >> /etc/rc.local //将 apachectl 的调用加入到你的系统启动文件中。
. t$ z& R3 o% }( z v% R9 j$ p
* `3 ]" V/ G1 q5 z$ u) ^
注解:
. w4 u: X- b9 s. w w$ u
./configure //配置源代码树
# d# W+ G3 s" e8 W( m/ L
--prefix=/usr/local/apache2 //体系无关文件的顶级安装目录PREFIX ,也就Apache的安装目录。
. w" l: u' D% B, U4 o/ `' s--enable-module=so //打开 so 模块,so 模块是用来提 DSO 支持的 apache 核心模块
) y( C7 G% S# @3 S6 ?--enable-mods-shared=all //编译全部的模板,对于不需要我们可以在httpd.conf去掉。
3 u9 E3 L* B& p o5 P4 V
--enable-cache //支持缓存
5 r7 C" j ?" \0 Y ]6 H3 H) n. l--enable-file-cache //支持文件缓存
6 g j, N. ~% f# \. x% C
--enable-mem-cache //支持记忆缓存
+ q6 K. _+ ] L6 n, G
--enable-disk-cache //支持磁盘缓存
7 w, o9 S: m' r- D8 j) P$ u: H, o
--enable-static-support //支持静态连接(默认为动态连接)
4 S0 s2 Q; u- V) ?! Y% h--enable-static-htpasswd //使用静态连接编译 htpasswd - 管理用于基本认证的用户文件
, U9 U9 |9 @8 V2 j+ y$ } S3 k3 |--enable-static-htdigest //使用静态连接编译 htdigest - 管理用于摘要认证的用户文件
6 }* e: B( G9 W- n. j+ |" d
--enable-static-rotatelogs //使用静态连接编译 rotatelogs - 滚动 Apache 日志的管道日志程序
; F( R3 I4 x0 w3 I6 H+ Z0 O, a C
--enable-static-logresolve //使用静态连接编译 logresolve - 解析 Apache 日志中的IP地址为主机名
: D$ Y' a9 ~7 [# n; \4 L--enable-static-htdbm //使用静态连接编译 htdbm - 操作 DBM 密码数据库
8 }0 c: y! D$ u* U--enable-static-ab //使用静态连接编译 ab - Apache HTTP 服务器性能测试工具
* n* G7 j8 y! S% T% p
--enable-static-checkgid //使用静态连接编译 checkgid
, D l# {" h+ C% `% f a3 }( j--disable-cgid //禁止用一个外部 CGI 守护进程执行CGI脚本
* w3 Z8 E2 X* H7 [$ Y# i. I--disable-cgi //禁止编译 CGI 版本的 PHP
9 j3 N0 z# n# |9 c* z5 D1 o--with-mpm=worker // 让apache以worker方式运行
; i, {0 @5 {2 ?1 u! b8 u' [1 w
--enable-ssl // 编译 ssl模块。
* p$ B+ l m8 L X& a) X( N8 a
: H+ _& b- g& }. F/ X. a. V
将apache设置成开机自启动:
( d: @3 B" C9 s) C, a- H
' G& _2 P: R" Z# a( X5 S在/etc/rc.d/rc.local文件中加入一行
) {/ V- [( O p
/usr/local/apache2/bin/apachectl start
( l1 [% Q+ C2 ^1 v
这样每次重新启动系统以后,apache也会随系统一起启动.
5 ^* q' x4 L, V; L7 V, j; n# F" s2 K
O6 [% L) g- X或者
$ b( @4 c( P& C+ Y# cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd
$ _3 Z3 z7 ^0 |6 f然后 vi /etc/rc.d/init.d/httpd 添加(#!/bin/sh下面)
" m# X# S% M+ I" S. k
# chkconfig: 2345 10 90
5 ?9 T9 l- ?0 P0 q( t; o
# description: Activates/Deactivates Apache Web Server
' R. T% `1 w& G2 ]8 W/ c最后,运行chkconfig把Apache添加到系统的启动服务组里面:
3 Z; n& }. {* m# chkconfig --add httpd
* E }1 J9 |" p3 M. H; w# chkconfig httpd on
2 l O# t8 a4 H5 k% O" S
3 j5 [) R9 A5 d% P+ x5 l, |# [! A. C5 l( p- W# A% ~& q
9、编译php 5.2.1并打上Suhosin Patch。
' ` K; b, Q2 a5 X
Suhosin是php增强型安全补丁,可以编译到静态内核中,也可以编译成php动态扩展。我个人强烈你建议安装成静态内核。Suhosin已经进入freebsd和gentoo的ports。下面的以下先说静态安装步骤。当然你也可以在安装php后将它编译成php的动态扩展。
' _; b9 F% O: @' b; V: Z. k
1 b6 k1 j7 A. F2 w& Q# cd /usr/local/src
, _' a+ y* F- d7 s3 f7 g# wget
http://cn.php.net/get/php-5.2.1.tar.gz/from/this/mirror
2 l( c) J9 P3 Q2 e" D4 ^wget
http://www.hardened-php.net/suho ... .1-0.9.6.2.patch.gz
/ E. d+ S$ i9 S) A( h. |# tar zxvf php-5.2.1.tar.gz
" q1 o7 [, U$ f5 \# J% v# gunzip suhosin-patch-5.2.1-0.9.6.2.patch.gz
! W0 H# l) \+ \& f3 H# r# cd php-5.2.1
0 J9 y3 e& R( S
patch -p 1 -i ../suhosin-patch-5.2.1-0.9.6.2.patch
6 m* J0 R# i7 X8 N
6 v" r8 [# q' j7 \6 W1 F' ~! T#./buildconf --force
0 u" L* Y5 k, X" p1 Y" t
! ~( C- p$ _; ?# 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
7 u4 f% C: K9 D" F
3 P' b8 ~! h3 m# M8 L
# make
* Y. b0 {' _5 C* i ]$ G3 }4 H
, D* G1 g" Z% L8 w& |0 t4 F& ~% L# make install
9 @3 w( c0 [4 ?
7 O, d; Q K' Z+ s4 ]8 R# cp php.ini-recommended /etc/php.ini
3 B! ^ m8 x' Q6 p) `$ X% n( A* {/ T1 E
9 l5 Z$ ?4 n) O: Q& _在这里也顺便说一下将suhosin安装成为php的动态扩展的方法。毕竟网上根本不见它的中文安装教程。
5 y6 z/ o; I* E- h7 ~) I! J. T
2 d7 m2 k% \1 @% `/ t6 a5 F! r虽然我个人不推荐这种方式。
+ P* p- G# u2 M; X7 S9 d, _
# I; A! B0 W# s$ w0 N. A- F7 M
wget
http://www.hardened-php.net/suhosin/_media/suhosin-0.9.16.tgz
9 y) D j' i- T) O! D4 Rtar zxvf suhosin-0.9.16.tgz
- ]+ S5 ]$ T8 s% m& i# }5 ucd suhosin-0.9.16
1 E0 s. h3 }; T$ e7 [" s$ v
./configure --with-php-config=/usr/local/php/bin/php-config
3 Y; Q. ~. l/ X- b1 Y8 _
make
$ z% g1 u3 w0 K) m# U/ h0 f: X# gmake install
4 ^, o- w9 ?& y5 d/ c5 j/ [8 c5 q0 f- E( d& ^% q4 c: ^& z
会提示编译的模块存在的目录,记住它。
6 R. B% N D- _. J8 J$ ]Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
" U# \3 w: q2 c
: C: h) f0 E' R- ^4 v0 Q
然后在php.ini中增加一行下列语句。
- Y1 ?" P1 N# R2 uextension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/suhosin.so
8 k5 t3 @1 V9 y3 F
% L, {; X) g0 T10 、整合apache 与php
. p- {+ k0 f4 P5 e" N# R/ u# vi /usr/local/apache2/conf/httpd.conf
; L) W' [; f& M4 w/ s( d0 U
在最后一行加上:
8 i: L( |" s1 C, D, U- K0 ]% R* LAddType application/x-httpd-php .php
8 V# i( d- B1 \; H/ U B* o& O3 w7 m3 M9 |6 z
查找:(设置 WEB 默认文件)
: p# v% W3 i4 [( e+ C1 f/ Z9 l
DirectoryIndex index.html
- ^. l- s5 s/ J, O% C6 w3 G9 Q
替换为:
1 g% J4 l$ g1 p' f. ~2 S2 x
DirectoryIndex index.php index.html index.htm //在 WEB 目录不到默认文件,httpd 就会执行 /var/www/error/noindex.html
* y: c' H$ o- v0 \+ }0 ^
( Q% t' x* |+ D: {找到这一段:
- L2 j) {; b. k F# AllowOverride controls what directives may be placed in .htaccess files.
6 b4 C1 z' B2 p7 S& i# B4 F7 ` F# It can be "All", "None", or any combination of the keywords:
0 x E, V7 x& Q b2 y& c# Options FileInfo AuthConfig Limit
' @2 r6 X/ t3 H( n# m) q
#
- @' D/ B! d& L% O5 E& D8 Z
AllowOverride none
- C, u/ j. M9 l3 R" B3 w
' U/ u3 n6 p9 F ^8 X( g( ?/ a
更改为AllowOverride all
/ Z( i3 f5 f& W! h允许apache rewrite
! \) M* S4 Y8 T( a0 c1 x
- N( J% b2 |2 ^$ f- L
# 监听443端口,支持https连接
4 |7 G5 L- J3 p: l
取消注释 httpd.conf 中的 Include conf/extra/httpd-ssl.conf
" D* n8 N8 }5 G1 t- Q
; S, q' e; Y( Q' C' G: {
保存httpd.conf,退出。
/ y7 u0 ~1 u: ~) W w
/ X% k" z4 s* }1 z. N
# /usr/local/apache2/bin/apachectl restart //重启 Apache
& r/ \; N7 P: s6 |
3 @; {0 U. N$ _9 Q; ?! I- t
11. 查看确认 L.A.M.P 环境信息
4 r. |3 n& O# d2 @
vi /usr/local/apache2/htdocs/phpinfo.php
# r3 d E/ G. G2 h5 y% a增加下面一行,并保存。
2 b1 A1 a" X% h7 Z# m# _
0 [% j7 \) D1 E2 c, P: r" ?# chmod 755 /usr/local/apache2/htdocs/phpinfo.php
: W# X% c U5 T1 K* n1 x6 Z% X
& @. b; U' p6 \用浏览器打开
http://127.0.0.1/phpinfo.php
3 }+ z$ D) t4 b/ f3 u/ o
0 H" z+ L% ?& [0 |7 V y; d- I& A5 \0 ?5 h; X3 h* C
# echo ' ' > /usr/local/apache2/htdocs/testdb.php
1 A% [) ?( y* [) c
# chmod 755 /usr/local/apache2/htdocs/testdb.php
1 R8 d! |. i8 {+ \, k! B5 z# service mysqld start
5 U. c. ]5 i4 [7 k3 C x- p5 _
用浏览器打开
http://127.0.0.1/testdb.php7 n0 Q, P" L- A4 K. R
检查 phpinfo 中的各项信息是否正确。
. V& P) Z$ | R E
5 j6 J/ d: M3 K4 G8 ^$ A
12、设置SSL并创建自己的CA
/ i5 y E( ~) A7 U! z, [! Y3 V/ O, v P1 I8 \6 c/ K7 u
# cd /usr/share/ssl/misc
, l& J9 @# [6 ^
7 Q- c& G$ Q- {" w
# ./CA -newca
7 [3 D3 H% _) q/ L6 L
/ G3 c( y1 j1 V. v8 d n6 Y
屏幕上出现如下的提示:CA certificate filename (or enter to create)
6 G4 z; n( o% H! t2 s- }* @
) Z3 t3 @ z a3 `+ p4 G, ~
这是要求输入要创建的CA的证书文件名, 可以直接回车或输入证书文件名。
) Y6 F: ?5 t9 y9 ^5 m2 W3 a0 Y
9 H% N: U0 D9 u, z. E1 A' ZMaking CA certificate ...
& C6 x; y7 y! L
Generating a 1024 bit RSA private key
) R: O. e( t2 \7 l o1 b2 G# i: m
.........++++++
4 L2 [! P" y6 D- [# F/ R
................................++++++
) ?: g, N) ]: N' H, s6 r
writing new private key to './demoCA/private/./cakey.pem'
: Z5 r4 {. C, G' m, w6 h1 uEnter PEM pass phrase:
& Y: I4 \8 v$ t z; t
. A6 T/ j" R; X" q0 p1 ~0 @Verifying password - Enter PEM pass phrase:-
; E* K7 u' U! E6 ?$ @
$ M1 D& ^2 R5 \5 Z6 }( P此时要求输入和验证CA的私钥口令、国家代码(中国是CN)、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。
, q, @# b$ v% {0 q, H7 d
* T- d4 t' h) Q2 r: o9 N8 k+ P- n6 w至此,在当前目录下生成了demoCA的目录,CA的证书就在该目录下,文件名为cacert.pem
( N/ d; u9 c5 d% a
- f. M; C/ S1 s+ I H
生成服务器的证书请求
# b8 R C$ i5 A5 \! N' G
& y) b3 C$ N! T/ K6 c' r
# ./CA -newreq
% R4 z$ t5 ~1 @- i; U4 b* @7 N4 Y
# K; p6 x5 B: ~2 v: i# D屏幕上出现如下的提示:
; I, ]7 t* K% o. \0 m2 g
/ l t* U: w. ]$ fGenerating a 1024 bit RSA private key
: `. r# _- B( R" N% Q' X( y.....................................................++++++
, H/ r& m d+ z4 G8 O.....++++++
8 P% V* [( L! k$ b! I7 e9 B
writing new private key to 'newreq.pem'
! ]; o; B: \, N, C) t9 \$ ?
Enter PEM pass phrase:
, L8 y6 n( @: T' D
Verifying password - Enter PEM pass phrase:
4 l6 m( R+ L& R A+ i. h
4 d5 Y) R: G, C0 j此时要求输入和验证服务器的私钥口令、国家代码(中国是CN)、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。
3 A+ J( K9 X5 Q1 o" ?- I2 i7 {# o2 U; E
Please enter the following 'extra' attributes
& |) d2 ]! T3 x- _, ^$ ?5 q/ `
9 [% i/ @7 V, v [
to be sent with your certificaterequest
) S5 O" n- X1 D( K
4 V# {3 e, A! `/ I& jA challenge password []:
7 b; D" h' A2 h$ e' `1 N
$ X2 L6 y! }3 h' `* w2 P2 `An optional company name []:
F4 |5 z4 _. |/ T+ E9 H* m
' y: D- q/ D. y.Request (and private key) is in newreq.pem
' F- U$ p2 q+ I, ]& r X2 w7 q
u4 t2 H7 V! {( N _1 a; z' Q. K这是要求输入服务器的相关信息。
. X/ U! w: M# N! Z8 U
' S+ P- A8 q( b4 s, h# D此时,在当前目录下生成了一个名为newreq.pem的文件,包含了要生成服务器数字证书的请求。
$ Z. m0 J" H, Q5 {7 Y( ]
]% U Z+ b1 m" ^- i- U! N n7 y签署证书
" k( y+ \+ {2 ]6 E( j
* H7 e& Y; a" o' U6 O) x# s
# ./CA -sign
$ m1 w0 g7 g& m) I, ?$ j) D
2 }* B) i9 K- h: O6 u, {! X. @
屏幕上出现如下的提示:
. G v1 Y/ L6 Y9 p* A% C) E8 b; {- ~- w1 F2 t7 Q9 u% L( S
Using configuration from /usr/share/ssl/openssl.cnf
+ Y$ f- x) i! W4 E& f( x9 w
" ]) D. e+ v, z2 ?1 @7 g; v
Enter PEM pass phrase:
" f- @( c [ e9 g( h( G4 u5 o e. |
此时一样需要输入CA的私钥口令、国家代码(中国是CN)、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。
) G$ ~2 m, l! t
: l9 W0 H6 U4 a- X Q I" \Certificate is to be certified until Nov 19 13:46:19 2002 GMT (365 days)
: K, I/ b2 |: \& I/ C+ [
' c5 c( `4 b! B! T# U& |/ t- DSign the certificate? [y/n]:y
0 o" X' e; J9 z3 m
& r/ a% X3 z# M# h% M- j \# \
这时显示证书请求文件中的各项信息,并询问是否要签署证书,回答y,进行签署。
* W) }6 d0 W" J% l- W' i8 D. p# H! J3 a" L6 J8 t+ e3 r! l
1 out of 1 certificate requests certified, commit? [y/n]y
6 |# H7 i7 ^9 N6 M& {( X% ]
# c0 a2 l3 z% `) \- @+ I回答y,会显示已经签署的证书的信息,并在当前目录下生成服务器的证书文件newcert.pem。
5 [; B% G( E2 m% Q9 s8 _- f; c7 ~) y! [& s4 _5 P- A& P
# mkdir /usr/local/apache2/conf/ssl.crt/
; r; y7 o- y; E( C% j: @# mkdir /usr/local/apache2/conf/ssl.key/
4 x9 l5 H) L4 y- n# cp newcert.pem /usr/local/apache2/conf/ssl.crt/server.pem
( P' s7 S1 ?3 g% A
# cp newreq.pem /usr/local/apache2/conf/ssl.key/server.pem
7 C! M$ S. r" P
( m6 V6 I7 k7 M+ B F4 f4 Q
; N5 M/ ?; b' E! O; G* W更改服务器的证书文件的相关配置
! \3 @; e1 U, x
# vi /usr/local/apache2/conf/extra/httpd-ssl.conf
2 R: \$ G" Z+ V/ a4 S7 F* m$ ?) N2 a: b* B* J r' G
查找并修改
, n8 i: P" J0 p+ ]% M
: h8 n/ [" C, ]" Q8 E- _( X
# Server Certificate:
M* c( g# I$ K
# Point SSLCertificateFile at a PEM encoded certificate. If
: N/ z/ F5 P _" U" k# the certificate is encrypted, then you will be prompted for a
& Z% U8 ?4 e! r+ h! t7 x( i! j. [3 ~
# pass phrase. Note that a kill -HUP will prompt again. Keep
2 e7 @6 d$ v; H: b m
# in mind that if you have both an RSA and a DSA certificate you
. Z" X, p4 K H. O% l# can configure both in parallel (to also allow the use of DSA
0 c9 ?$ U! o0 N0 l8 D# ciphers, etc.)
" D3 t9 f1 Q" U! y: H* F8 q( x/ q; _
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.pem
% S8 n, [! D6 y. C3 d1 D. r! o z. g
#SSLCertificateFile /usr/local/apache2/conf/server-dsa.crt
2 j% ~6 r! Z- p+ d$ V$ s: |( b8 c# e* y. z. t( H* w% T! p: t+ c
# Server Private Key:
# ^3 x: G; S3 O4 }; a T
# If the key is not combined with the certificate, use this
1 e7 k0 W3 l6 v8 i) A# directive to point at the key file. Keep in mind that if
8 Y4 }8 x* ~/ C1 z' x' s
# you've both a RSA and a DSA private key you can configure
- i% u" }. W: ^
# both in parallel (to also allow the use of DSA ciphers, etc.)
( @, e w( y: \7 mSSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.pem
3 T$ L2 V& m/ I& g: n5 t6 ]
#SSLCertificateKeyFile /usr/local/apache2/conf/server-dsa.key
0 _+ i# F" `6 J4 [- K2 T$ |# n$ F. o, z! V# i7 z$ J
' ^, b! S6 c, O5 G, m- ~
示例文件
6 x5 f; D$ a8 C. Z& w) e, |3 |& ?! ^$ z2 k6 M; C
在SSL的根目录中生成一个index.html,它是如下所示:
! w# P2 X; @0 `; f# V S
. R4 R& i9 O3 r% H i. H<html>
~# G1 M8 w* w0 \0 ]. X/ _: l9 r+ M k1 z9 v
这是SSL示例!
2 F0 n1 ]+ R M7 [ R$ G* M. b( l* ]" `1 a; U
</html>
) G4 g/ z0 F1 m
: x' X- l Z1 g- y+ F测试
" W0 G7 y6 e+ D$ I2 v, ?6 }
9 ?" g6 R/ J. n& J( H假如Web服务器的DNS名称是
www.cnprint.org.0 U; K2 u2 A+ e, h( C! x% ?4 g- K
* Q6 s6 B4 \3 F
在浏览器的URL地址栏里输入
http://www.cnprint.org/,浏览器便会显示APACHE安装时确省的Test Page.
7 E3 \6 A2 }; I" c$ C4 [( h2 ?
2 I6 L9 G- {8 _# m在浏览器的URL地址栏里输入
https://www.cnprint.org/,注意:是 https 而不是http !
# T( m" @8 ^0 X. i$ G) m9 S: y7 W6 J6 p: ]5 J
浏览器会提示站点已经采用了SSL进行数据的加密传输.由于我们的CA证书不是浏览器缺省的信任的根证书,所以,浏览器会说无法确认服务器的证书可信。暂时不管,一直NEXT,最后,浏览器会显示:这是SSL示例!
5 x- D }/ t& @3 N2 s* O2 v8 ^+ z1 g1 P$ R
可以把CA的证书放在非SSL的站点上,让浏览器下载并安装CA证书,并将其设置成可信任的根证书,便可解决上面的问题.8 解除HTTPD起动时的口令输入。
8 Q; N% a b3 `, L! A. c. P) ]8 t
. ~9 j) M5 V8 A6 ]0 ]( q' }9 S& f X由于安全的原因,Web服务器的私钥是口令加密了的,每次重新起动HTTPD或Linux时,都会要求输入Web服务器的私钥的口令。
' m. N# D- u6 V
]& z3 T& g' I8 k& }, i如果要解除HTTPD起动时的口令输入,可以这样:
- I |2 B o; m4 G& I
3 X4 e7 h. }" ^# cd /usr/local/apache2/conf/ssl.key/
/ f8 `/ o2 Y; L# cp server.pem server.pem.org
5 R: v+ Y9 o' k! [4 V i' Z' O, R# openssl rsa -in server.pem.org -out server.pem
9 @, E7 @8 e; S+ f/ |7 g1 B# chmod 400 server.pem
* x' s) X" e y0 `: S6 [& P" X% S
另外在网上看到一个方法,我没有试。有兴趣的可以试下。
/ h$ x B9 }2 ]3 k# ]( y9 l! L# v
: f. y5 y4 }0 ?创建SSL密码自动应答文件,否则每次Apache启动的时候,都会要求你输入SSL的密码.
8 |7 x } q ?+ I+ L5 @创建 /usr/local/apache2/conf/ssl.key/sendsslpwd ,内容如下.
! V3 o2 `5 ]7 [* _" _
#!/bin/bash
& h+ n8 {. w& N0 A) j& P, f6 s
SSLpasswd="YOUR PASSPHRASE"
# v# y) E# N0 C3 o4 t& jecho $SSLpasswd
: n: s t( \4 \4 `
chmod 755 /usr/local/apache2/conf/ssl.key/sendsslpwd
. z3 P+ K" A4 s; I+ t7 h) P
) A: Z% K6 H% N& W4 j0 H+ |6 P" u6 P+ U' V/ {* ^0 g
此时,Web服务器的私钥已经没有口令加密,一定要确保server.pem文件除root外,任何用户均无权读取它。
" M: ]" e! e9 M% C" o0 m7 A! y% M# m. O; f
, N6 `6 h3 v2 i; I, Z, w
13、安装 Zend Optimizer
/ z& x& k# K: f2 D; `# cd /usr/local/src
# M- ?: r; q5 B# wget
http://downloads.zend.com/optimi ... glibc21-i386.tar.gz6 u4 l: m$ M" Q5 {9 K
# tar xzvf ZendOptimizer-3.2.2-linux-glibc21-i386.tar.gz
8 C* z( o2 b: W0 x( @" g+ q5 @# ./ZendOptimizer-3.2.2-linux-glibc21-i386/install.sh
! i Z) D/ `+ ^5 ~8 B5 `
按照它的提示一步步进行就行了。
! P8 a- k& \/ Z% p- F2 k9 t9 q: |, m' W: l' F- r- U" g# e
14、安装eaccelerator // eaccelerator是php的加速软件,使用后php的执行效率会有较大幅度的提升。目前eaccelerator 0.9.5已经和ZendOptimizer-3.2.2能够很好兼容啦。不过我个人觉得,ZendOptimizer-3.2.2没有加速的功能,只是起到了运行zend加密文件的作用而已。闲话不多说了,大家有兴趣的,可以去google下。
" h; }3 \" ^( B w" r4 X6 J* ~" ?4 `* W$ n6 e, H; I
# cd /usr/local/src
- F6 [: [) m7 ^, k! F6 p2 Q: z. p# wget
http://bart.eaccelerator.net/sou ... rator-0.9.5.tar.bz2/ ^' Y8 V# ~3 Y0 r5 k3 L0 y6 o
# tar -jxvf eaccelerator-0.9.5.tar.bz2
; ?& Z3 @( M- X5 {" D# cd eaccelerator-0.9.5
7 T p: u2 N0 A6 S W" o- B4 C
4 w- p1 p5 T& e5 K
export PHP_PREFIX="/usr/local/php"
6 u) o. v% I" P9 [- r; K% u& w
$PHP_PREFIX/bin/phpize //指定一下php的目录
8 L: Y6 _+ F* M6 t
& W: i5 @! s) k" u( n, e5 n& K# ./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config // 设置
/ ~3 H# m5 L$ Z# v
2 S5 ` D" R8 N# make & make install
: R8 w3 h0 `# n6 \- B" R
! u& i' U9 }- Q! b编译安装后我们会看到屏幕提示的eaccelerator.so所在的目录,比如我得到的是/usr/local/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so,记住这个路径,待会要用到。
) z0 y* q6 ?6 v# h7 V0 Y; |9 d
% T; ~. W& L2 [# o修改php.ini(安装完zend之后,php.ini存放于/usr/local/Zend/etc)
0 F+ N# f- w6 R6 p
在文件最后,zend之前,注意,这部分内容务必放在zend之前,不然可能会出现不可预期的服务器问题。添加下列信息:
# U$ ]/ {0 z+ x
) w0 E/ E/ _ X
[eaccelerator]
5 d8 m3 E* U5 q% g' s' M, Dextension="/usr/local/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so"
& g3 D! E6 s. beaccelerator.shm_size="32"
! v1 t( K9 I7 [2 [. Z+ v5 A
eaccelerator.cache_dir="/tmp/eaccelerator"
+ }0 U E' ~$ l
eaccelerator.enable="1"
& Q3 g) f( J2 M9 j) ^7 w& c% Yeaccelerator.optimizer="1"
( i; ^* b% u5 X! A
eaccelerator.check_mtime="1"
( j" F; R( x9 |6 D1 K9 P* Oeaccelerator.debug="0"
, F; P; _) n+ l W
eaccelerator.filter=""
6 N* e8 c- M8 N6 o, [
eaccelerator.shm_max="0"
, a k$ F4 {$ g9 h/ k' Oeaccelerator.shm_ttl="0"
6 c: C' G# ~9 O8 R8 h: k$ _$ [
eaccelerator.shm_prune_period="0"
% W4 ?$ G' S, g0 M* E# ]eaccelerator.shm_only="0"
2 x! i: D2 S0 w) C( @eaccelerator.compress="1"
2 D7 }- `3 V+ u, V8 A& Q# I* ~eaccelerator.compress_level="9"
9 X! w9 h' b+ \9 }: \% b: r+ A+ G
( s1 C; x. F! D' y( N" S) J. Q
解释:
- y' Z4 s: |6 ^% c$ azend_extension 是安装完程序自动指示给我们的
5 z4 T5 c) r! J5 Y" O/ Ueaccelerator.shm_size="32" 缓存大小单位MB
1 @7 n- g) h# Y; eeaccelerator.cache_dir="/tmp/eaccelerator" 缓存路径
- }( K3 ^& W! D8 f
2 T( m4 n/ k a( i% X6 G
# mkdir /tmp/eaccelerator // 建立目录
! i9 f2 @6 B( P8 Q2 [
# chmod 0777 /tmp/eaccelerator // 修改目录属性
# i% B: p2 q4 y' Q; k, n. h
0 l+ Y7 w( L; w4 N0 n5 [ j最后重新启动apachectl
9 c0 ]% Z% _$ k7 [' i
8 v8 G' @% @4 O$ ~重启apache,phpinfo显示:
e. V Q+ Z2 N7 h( k
This program makes use of the Zend Scripting Language Engine:
0 }+ |' Z8 D! z. k0 |Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies
! V& B# O3 r; e7 [* Ewith eAccelerator v0.9.5, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
+ j9 M. Z& Y [/ D: @with Zend Extension Manager v1.0.11, Copyright (c) 2003-2006, by Zend Technologies
- X/ `) q7 ]) J8 `8 V2 p7 V
with Zend Optimizer v3.2.2, Copyright (c) 1998-2006, by Zend Technologies
0 C4 S C) T/ K; @( a
& f" g, C S1 d0 K+ Z# `0 x也会有eAccelerator的具体信息。
8 S& q0 j: C+ E9 J& q9 i" C6 D8 k) `/ r$ t1 K$ l& E! c5 ^: _
15、安装phpmyadmin,管理mysql数据库
7 r5 Q. r, c! Z# ^, F
, B; H/ q* U, C* b, {% a# cd /usr/local/apache2/htdocs/
* {' c+ \6 K5 k& |
# wget
http://jaist.dl.sourceforge.net/ ... l-languages.tar.bz2* e: D0 ?/ J7 k2 s/ m5 r8 R
k; {. w1 f8 g3 ^5 f
# tar jxvf phpMyAdmin-2.10.0-beta1-all-languages.tar.bz2
* E1 b5 E6 u$ G' c0 u3 Q
# mv phpMyAdmin-2.10.0-beta1-all-languages phpmyadmin
- ^- R" R5 [$ d/ y+ k' w, Y$ m8 J) A
: x2 D$ Q! {# _. t) S
# cd phpmyadmin/libraries
( C$ M M# F# [* { b- I7 K# y, M! H
; }( k+ u0 |+ u8 x0 [ r# F0 Q+ ^9 k修改配置文件
% O' E7 A0 \3 z" Y( b# vi config.default.php
2 G2 v9 C. B T
9 G7 T) d; R- q# D* B0 T找到这几行进行修改:
; I4 ]: G l2 r( x- l& Q$cfg['Servers'][$i]['auth_type'] = 'http'; // Authentication method (valid choices: config, http, HTTP, signon or cookie)
9 ]( d$ l4 N3 o$ q$ X# S! m
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user
( l+ ~/ F( X4 V9 v( |( Z
$cfg['Servers'][$i]['password'] = 'PASSWORD'; // MySQL password (only needed
3 ~3 k: Q' L, d) K
3 k' K3 N% ?9 S7 B经过这几个步骤,我们一个比较安全的LAMP服务器就环境基本建立成功啦。感觉上也不是很难,是吧?
( O Z+ |( z0 ^5 O! o0 @当然对于打造基于动态IP的网站,以上的信息还不够,还有建立ADSL拨号,NAT,动态域名更新,防火墙,安装论坛程序等一系列的工作,我会慢慢地写出自己的心得与大家分享。毕竟这对我来说,也是个学习的过程。