比较详细的基于CentOS的WWW服务器架设指南

乐清SEO_开发应用_Centos_ 乐清SEO2021-04-25 转载自:

本文参考了网上高手的教程和结合自己的实践经验而来。网上关于LAMP安装配置的教程虽然很多,但长篇大论的让你抓不到重点,短小精悍的对新手来说又难了点,所以初次配置时最容易在某个环节卡住,从而打击了学习的激情或者耽误了宝贵的时间。于是就整理出这个学习笔记。如果文中有错误的地方,恳请大家指正,不要误导了初学者。

一、系统约定

1、系统环境

Linux:-4.4.ServerCD

Apache:2.2.4

MySQL:4.0.26

PHP:4.3.11

ZendOptimizer:3.2.2

phpMyAdmin:2.10.0.2

2、源码包存放位置:/usr/local/src

#为什么一定要在/usr/local/src/下进行Tarball呢?这仅是约定俗成的,因为如此一来,大家都安装在这个地方,以后主机的维护与移交都很简单,并且对于将来在主机上面进行“升级”与”版本识别“都有很好的帮助。

二、系统环境部署及调优

1、基本安全设置

对于一个在Internet上提供服务的主机,安全性很重要,这方面的工作包含主机的包漏洞修补、关闭并不是必须的守护进程(端口)、防火墙配置以及每日的日志分析等。在装完系统后,建议按照以下步骤来进行安全设置:

1)关闭并不是必须的守护进程(端口)

CentOS4.4系统安装完成后,一些可能并不是必须的守护进程会启用。禁用非必要的进程会减少系统的内存开销,同时也可以减少系统的安全隐患,可以释放更多的内存空间、减少系统的启动时间、减少CPU处理的进程数量。

默认情况下,很多守护进程可以安全的在系统下停止和禁用。下表列出了CentOS4.4安装(安装时软件包只选择开发工具一项)的一些守护进程,如果不是必须的你可以考虑禁用这些进程。进程描述

acpid提供高级电源管理。建议保留

anacron一个自动化运行任务守护进程。RedHatLinux随带四个自动化任务的工具cron、anacron、at、和batc。当你的Linux服务器并不是全天运行,这个anacron就可以帮你执行在"crontab"设定的时间内没有执行的工作。

apmdapmd(AdvancedPowerManagement)是高级电源管理。传统的电源管理标准,对于笔记本电脑比较有用,可以了解系统的电池电量信息。并将相关信息通过syslogd写入日志。也可以用来在电源不足时关机。

atd计划任务(执行一次)守护进程。建议保留

autos自动mount文件系统进程(例如自动mount光驱),在服务器系统上文件系统很少使用自动mount功能。关闭

cpuspeed动态调整CPU频率的进程,在服务器系统中这个进程建议关闭。

crond计划任务(循环执行)守护进程。建议保留

cups通用UNIX打印系统,如果你计划在服务器上运行打印服务就不要关闭这个进程。

gmp文本终端的鼠标服务,如果你想在本地文本终端支持鼠标就不要禁用这个进程。

haldaemon和Windows的硬件管理类似,挂载U盘等必不可少。建议保留

iptables这个是防火墙守护进程,无论如何,先启动它。

irqbalance在多个处理器之间平衡中断,如果你使用一个单CPU系统或者你计划静态的平衡中断可以禁用这个进程。

isdnISDN调制解调器支持,如果你准备在服务器上支持ISDN调制解调器就不要禁用这个进程。

kudzu检测和配置新硬件,如果硬件配置改变了应该手动运行。

mdmonitorRAID相关设备的守护程序。

messagebus挂载U盘时,要确保haldaemon和messagebus服务启动,所以这个也建议保留。

microcode_ctl可编码以及发送新的微代码到内核以更新IntelIA32系列处理器守护进程。建议保留

netfs用于支持NFS共享,如果你准备在服务器上支持NFS共享就不要禁用这个进程。

network激活/关闭启动时的各个网络接口守护进程。

nfslock对nfs启用文件锁,如果你准备在服务器上支持NFS共享就不要禁用这个进程。

pcmciaPcmcia支持,在服务器上很少使用pcmcia适配器因此可以安全的禁用这个进程。

portmap为RPC服务动态分配端口(例如NIS和NFS),如果系统没有支持RPC服务可以禁用这个进程。

rawdevices提供对裸设备绑定的支持,如果你不准备在系统中使用裸设备可以禁用这个进程。

rpcgssd主要用于NFS和Samba的多个远程调用进程,如果系统没有基于rpc服务的支持,可以禁用这个进程。

rpcidmapd同上

sendmail邮件传输代理,如果服务器需要支持邮件服务就不要禁用这个进程。

smartd使用S.M.A.R.T兼容设备的进程,如果你不是使用IDE/SATA磁盘子系统,可以禁用这个进程。

sshdOpenSSH服务器守护进程,如果你不需要远程管理主机,可以关闭,不过应该没有几个人不需要这个服务吧。

syslog把各类事件写入日志,是相当重要的服务,务必启动。

xfsXWindow的字体服务,如果你的运行级别是5请不要禁用这个进程。

xinetd支持多种网络服务的核心守护进程。务必启动。

[root@localhost~]#ntsysv

#根据自己的需要,使用ntsysv工具来启用那些里程。

[root@localhost~]#reboot

#重新启动使设置生效

[root@localhost~]#netstat-an|more

#......信息略......

#检查一下当前开启的端口

#netstat是个很重要的命令,请大家务必掌握,这部份的知识自行在网上查阅。

2)基本防火墙配置

[root@localhost~]#/etc/rc.d/init.d/iptablesstop

#防火墙开启

[root@localhost~]#/etc/rc.d/init.d/iptablesstart

#防火墙开启

[root@localhost~]#vi/etc/sysconfig/iptables

#根据自己的情况增加防火墙规则。

[email=root@localhost]root@localhost[/email]~]#iptables-save>filename

#上面的命令用于将当前主机上的防火墙规则保存到filename文件。

root@localhost~]#iptables-restore

#上面的命令用于将filename防火墙规则文件(注意:不是sehllscripts格式)的规则读入当前Linux主机环境中。

3)locate命令用数据库更新及自动更新设定

[root@localhost~]#vi/etc/updatedb.conf

#将“DAILY_UPDATE=no”修改为“DAILY_UPDATE=yes”后保存、退出。

[root@localhost~]#updatedb

#运行locate数据库更新命令,稍等片刻…更新成功后出现提示符

4)修改yum仓库的镜象地址,以提高下载速度

[root@localhost~]#cd/etc/yum.repos.d/

[root@localhostyum.repos.d]#mvCentOS-Base.repoCentOS-Base.repo.bak

[root@localhostyum.repos.d]#wgethttp://mirror.be10.com/centos/4.4/CentOS-Base.repo

5)停止打印服务

[root@localhost~]#/etc/rc.d/init.d/cupsstop ←停止打印服务

Stoppingcups:          [OK]   ←停止服务成功,出现“OK”

[root@localhost~]#chkconfigcupsoff ←禁止打印服务自动启动

[root@localhost~]#chkconfig--listcups ←确认打印服务自启动设置状态

cups0:off1:off2:off3:off4:off5:off6:off ←0-6都为off的状态就OK(当前打印服务自启动被禁止中)

6)在线升级Linux

[root@localhost~]#yumupdate

#通过yum工具更新系统,更新后请重启系统

#yum的用法请见《如何使用yum管理RPM(CentOS)》

2、其它设置

1)语言环境缺省设置

[root@localhost~]#vi/etc/sysconfig/i18n

加上如下一行

QUOTE:

LANG="zh_CN.GB18030"

[root@localhost~]#reboot

#重新启动要设置生效

如果临时需要英文环境,执行以下命令即可。

[root@localhost~]#exportLANG='en_US'

2)对TCP/IP网络参数进行调整,加强抗syn_flood能力

[root@localhost~]#echo'net.ipv4.tcp_syncookies=1'>>/etc/sysctl.conf

[root@localhost~]#sysctl–p

3)网络校时

[root@localhost~]#date

#确认系统时间是否正确

[root@localhost~]#ntpdate210.72.145.44

#与中国国家授时中心进行时间校正

[root@localhost~]#yuminstallntp

#安装ntpdate程序。系统虽然默认没有安装这个套件,但我们可以很方便的通过yum工具来在线安装。

[root@localhost~]#crontab-e

[Copytoclipboard][-]

CODE:

023***root/usr/sbin/ntpdate210.72.145.44>/dev/null2>&1

#以上命令设置好后存盘。您的机器将在每天的23:00根据中国国家授时中心的NTP服务器时间自动校准时间。

#关于linux下定时执行工具crontab的介绍请见http://hi.baidu.com/monobao/blog/item/01e9ecdcbc6a14a1cc11665b.html

3、安装有依赖关系RPM包

[root@localhost~]#viinstall.sh

[Copytoclipboard][-]

CODE:

yum-yinstallgcc

yuminstallcpp

yuminstallgcc-c++

yuminstallncurses

yuminstallncurses-devel

yuminstallgd-develphp-gd

yuminstallzlib-devel

yuminstallfreetype-develfreetype-demosfreetype-utils

yuminstalllibpng-devellibpng10libpng10-devel

yuminstalllibjpeg-devel

yuminstallImageMagick

yuminstallflex

yuminstallImageMagick-devel

[root@localhost~]#shinstall.sh

#为了方便,直接这些软件包在线安装的指令行编写到到脚本(ShellScript)中,下次用到时,你只需执行这个脚本就能自动安装了。因为ShellScript是利用您平日在使用的一些指令,将之组合起来,成为一个"程式"。如果您平日某些序列的指令下得特别频繁,便可以将这些指令组合起来,成为另一个新的指令。这样,不但可以简化并加速操作速度,甚至还可以乾脆自动定期执行,大大简化系统管理工作。

下面正式步入LAMP的的安装步骤,开始安装之前,先了解一下源码编译方面的知识,参考文献《Linux系统管理员(二)---套件管理RPM与Tarball》。

三、安装Mysql

1、建立msyql用户组

[root@localhost~]#grepmysql/etc/group

#查询系统中是否有mysql这个用户组,没有则添加。

[root@localhost~]#groupaddmysql

#增加一个名为mysql的用户组

2、建立mysql用户

[root@localhost~]#grepmysql/etc/passwd

#查询系统中是否有mysql这个用户,没有则添加。

[root@localhost~]#useraddmysql-gmysql-M-s/sbin/nologin

#增加一个名为mysql的用户。

-g:指定新用户所属的用户组(group)

-M:不建立根目录

-s:定义其使用的shell,/sbin/nologin代表用户不能登录系统。

3、下载:mysql-4.0.26

[root@localhost~]#cd/usr/local/src/

[root@localhostsrc]#wgethttp://ftp.gamearena.cn/software/mysql-4.0.26.tar.gz

#......(信息略)......

[root@localhostsrc]#chmod+xmysql-4.0.26.tar.gz

#修改文件权限为755

[root@localhostsrc]#tar-zxvfmysql-4.0.26.tar.gz

#......(信息略)......

#解压缩

PS:当你在www.mysql.com下载MySQL的时候,会发现有binary/rpm/source三种包。binarydistribution是由mysql官方优化编译好的,不需要make。

3、设置编译器的编译参数

[root@localhostsrc]#cd/usr/local/src/mysql-4.0.26

[root@localhostmysql-4.0.26]#./configure--prefix=/usr/local/mysql--with-unix-socket-path=/tmp/mysql.sock--localstatedir=/usr/local/mysql/data--with-charset=gbk--without-debug--enable-assembler--without-isam--with-client-ldflags=-all-static--with-mysqld-ldflags=-all-static

#这些设置告诉编译器如何编译apache:

--prefix=/usr/local/mysql

指定msyql安装目录

--with-unix-socket-path=/tmp/mysql.sock

这个是指定mysql服务器启动后,联机套接字文件所处的位置和文件名。

--localstatedir=/usr/local/mysql/data

指定mysql的数据库目录

--with-charset=gbk

添加gbk中文字符支持

--without-debug

去除debug模式

--enable-assembler

使用一些字符函数的汇编版本

--without-isam

去掉isam表类型支持,现在很少用了,isam表是一种依赖平台的表

--with-client-ldflags=-all-static

--with-mysqld-ldflags=-all-static

4、编译和安装

[root@localhostmysql-4.0.26]#make

#“make”命令把源文件编译成可执行的二进制文件

[root@localhostmysql-4.0.26]#makeinstall

#“makeinstall”把二进制文件和配置文件安装在合适的目录下

6、初始化系统库

[root@localhostmysql-4.0.26]#./scripts/mysql_install_db

7、其它设置

[root@localhostmysql-4.0.26]#cpsupport-files/my-medium.cnf/etc/my.cnf-fv

#注解:

-f,删除目标中同名的文件或目录,并且不给任何提示。

#还有一些其它的my.cnf配置文件。适合不同的应用规模。型式如my-*.cnf。根据自己的需要cp。

[root@localhostmysql-4.0.26]#cpsupport-files/mysql.server/etc/init.d/mysqld

#添加到起动脚本

[root@localhostmysql-4.0.26]#chmod700/etc/init.d/mysqld

[root@localhostmysql-4.0.26]#cd/usr/local

[root@localhostlocal]#chmod750mysql-R

#注解:

-R递归改变目录及其内容的权限。

[root@localhostlocal]#chown-Rmysql.mysql/usr/local/mysql

#设置所有者,mysql起动时会以mysql用户的身份运行,这样可以提高系统的安全性。

[root@localhostlocal]#chown-Rmysql.mysql/usr/local/mysql/data

[root@localhostlocal]#cd/usr/local/mysql/libexec

[root@localhostlibexec]#cpmysqldmysqld.old

[root@localhostlibexec]#stripmysqld

[root@localhostlibexec]#chkconfig--addmysqld

#添加一个服务

[root@localhostlibexec]#chkconfig--level345mysqldon

#设置开机时起动

[root@localhostlibexec]#servicemysqldstart

#启动mysql服务

[root@localhostlibexec]#ln-s/usr/local/mysql/bin/mysql/sbin/mysql

[root@localhostlibexec]#ln-s/usr/local/mysql/bin/mysqladmin/sbin/mysqladmin

[root@localhostlibexec]#ln-s/usr/local/mysql/bin/mysqldump/sbin/mysqldump

[root@localhostlibexec]#mysqladmin-urootpassword"youpassword"

#设置root帐户的密码

[root@localhostlibexec]#mysql-uroot-p

#输入你设置的密码

mysql>usemysql;

mysql>deletefromuserwherepassword="";

#删除用于本机匿名连接的空密码帐号

mysql>flushprivileges;

#刷新一下权限,不执行,对user表的修改不会立即生效

mysql>showdatabases;

+----------+

|Database|

+----------+

|mysql|

|test|

+----------+

2rowsinset(0.08sec)

#显示一下数据库,测试mysql是否安装正常。

mysql>quit

Bye

四、安装Apache

1、下载:apache2.2.4

[root@localhost~]#cd/usr/local/src/

[root@localhostsrc]#wgethttp://archive.apache.org/dist/httpd/httpd-2.2.4.tar.gz

[root@localhostsrc]#chmod+xhttpd-2.2.4.tar.gz

[root@localhostsrc]#tar-zxvfhttpd-2.2.4.tar.gz

3)设置编译器的编译参数

[root@localhostsrc]#cdhttpd-2.2.4

[root@localhosthttpd-2.2.4]#./configure--prefix=/usr/local/apache2--enable-so--enable-rewrite=share--enable-proxy=share--enable-proxy-ajp=share--enable-dav=share--enable-dav-fs

#注解:

--prefix=/usr/local/apache2

设置Apache安装目录。这里设定安装在/usr/local/apache2下,今后如果要卸载或者升级Aapche时,直接删除这个目录即可。

--enable-so

指定允许DSO(动态共享对像)

--enable-rewrite=share

开启Rewrite支持,以实现url重定向到静态页面,建议开启。

--enable-dav-fs

开启WebDAV支持,svn服务器等需要。附:《什么是webDAV?及如何应用?》

#其它的额外设置请使用./configure--help来查看。

4)编译和安装:

[root@localhosthttpd-2.2.4]#make;makeinstall

#如果没有错误的话,那么Apache就已经安装在/usr/local/apache2目录中了

3、启动服务:

[root@localhosthttpd-2.2.4]#/usr/local/apache2/bin/apachectlstart

4、确定启动状:

[root@localhostapache2]#netstat-utl

tcp00*:http*:*LISTEN

#看到上面这行就表示你的Apache已经启动。

#用浏览器访问,看到Itworks!,说明apache已经安装成功了,恭喜您!

五、安装PHP

1、下载:php4.3.11

[root@localhost~]#cd/usr/local/src/

[root@localhostsrc]#wgethttp://ftp.gamearena.cn/software/php-4.3.11.tar.gz

[root@localhostsrc]#chmod+xphp-4.3.11.tar.gz

[root@localhostsrc]#tar-zxvfphp-4.3.11.tar.gz

2、设置编译器的编译参数

[root@localhostsrc]#cdphp-4.3.11

[root@localhostsrc]#./configure--prefix=/usr/local/php4--with-mysql=/usr/local/mysql--with-apxs2=/usr/local/apache2/bin/apxs--with-config-file-path=/usr/local/php4--with-gd--with-jpeg-dir--with-png--with-ttf--with-zlib--enable-mbstring--enable-ftp--with-freetype-dir--with-xml--disable-debug--enable-inline-optimization-q--enable-thread-safety

#参数注解:

--with-mysql=/usr/local/mysql

指定mysql的安装位置

--with-apxs2=/usr/local/apache2/bin/apxs

编译共享的Apache2.0模块。FILE是可选的Apache的apxs工具的路径,默认为apxs

--with-config-file-path=/usr/local/php4

设定php.ini所在的路径,默认为PREFIX/lib

--with-gd

指定gd

--with-jpeg-dir

--with-png

--with-ttf

--with-zlib

--enable-mbstring

--enable-ftp

打开ftp支持

--with-freetype-dir

--with-xml

--disable-debug

禁用调试符号

--enable-inline-optimization

-q

--enable-thread-safety

3、编译和安装

[root@localhostphp-4.3.11]#make;makeinstall

4、转存php基本配置文件

[root@localhostphp-4.3.11]#cpphp.ini-dist/usr/local/php4/php.ini

#这个路径必须和./configure中的--with-config-file-path设置一致

5、整合apache与php

[root@localhostphp-4.3.11]#vi/usr/local/apache2/conf/httpd.conf

加上:

QUOTE:

AddTypeapplication/x-httpd-php.php

查找,在下面一行的DirectoryIndex后面增加index.php,例:

QUOTE:

DirectoryIndexindex.phpindex.html

PS:其实这个DirectoryIndex和IIS中”启用默认内容文档“那项设置是一个含义,应该知道是干什么用的了吧。

6、重启apache

[root@localhostphp-4.3.11]#/usr/local/apache2/bin/apachectlstop

[root@localhostphp-4.3.11]#/usr/local/apache2/bin/apachectlstart

切记:不要直接用[root@localhostphp-4.3.11]#/usr/local/apache2/bin/apachectlrestart,我第一次配置时,就是这样操作导致apache的服务启动不了,害得我查了半天。

7、测试php是否正常工作

[root@localhostphp-4.3.11]#echo''>/usr/local/apache2/htdocs/phpinfo.php

#在浏览器中输入http://你的地址/phpinfo.php,如果出现如下画面,就说明PHP编译成功了。

六、安装ZendOptimizer

1、下载ZendOptimizer3.2.2

[root@localhost~]#cd/usr/local/src/

[root@localhostsrc]#wgethttp://downloads.zend.com/optimizer/3.2.2/ZendOptimizer-3.2.2-linux-glibc21-i386.tar.gz

[root@localhostsrc]#chmod+xZendOptimizer-3.2.2-linux-glibc21-i386.tar.gz

[root@localhostsrc]#tar-xzvfZendOptimizer-3.2.2-linux-glibc21-i386.tar.gz

2、安装ZendOptimizer

[root@localhostsrc]#cd/usr/local/src/ZendOptimizer-3.2.2-linux-glibc21-i386

[root@localhostZendOptimizer-3.2.2-linux-glibc21-i386]#./install.sh

#根据安装提示一路回车即可,唯独要注意的是选择php.ini目录的那里,你要修改为你php.ini实际所在的目录。由于之前我们编译安装php时,指定为--with-config-file-path=/usr/local/php4,所以我们修改将默认的/etc修改为/usr/local/php4。如图:

3、通过php探针文件核查ZendOptimizer是否安装成功

正常的话,应该能看到成功安装ZendOptimizer的信息,图中红框部份

7、安装phpMyAdmin

1、下载版本

[root@localhostsrc]#wgethttp://jaist.dl.sourceforge.net/...s-utf-8-only.tar.gz

#从phpMyAdmin官方站点下载phpMyAdmin-2.10.0.2-all-languages.tar.gz文件。

2、安装配置

[root@localhostsrc]#tar-xzvfphpMyAdmin-2.10.0.2-all-languages-utf-8-only.tar.gz

[root@localhostsrc]#mvphpMyAdmin-2.10.0.2-all-languages-utf-8-only/usr/local/apache2/htdocs/phpmyadmin

#把解开的phpMyAdmin拷贝到你的web发布目录

在浏览器访问http://你的地址/phpmyadmin/scripts/setup.php,点击Add按钮,如下图所示

将Authenticationtype设为cookie后,点击Add按钮提交

点击Download按钮下载配置文件到本地,重命名为config.inc.php(默认为config[1].inc.php),

然后拷贝此文件到phpMyAdmin的安装目录(我们上面示例的目录为/usr/local/apache2/htdocs/phpmyadmin),在浏览器访问http://你的地址/phpmyadmin,输入mysql的用户名和密码,便能正常登录了。

如果出现如下提示,清空一下IE缓存就正常了。

安装完成后,请务必删除scripts目录下的setup.php文件