当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > 比较详细的基于CentOS的WWW服务器架设指南

Linux服务器
linux下用cron定时执行任务的方法
.htaccess绑定域名到子目录的方法
linux apache下虚拟主机配置方法
apache 局域网访问配置方案
linux Apache服务器系统安全设置与优化
linux中mac地址绑定方法
linux托盘不断闪烁之解决方法
Apache配置 虚拟转向实例
Apache No space left on device的解决办法
Apache rewrite的重写相关的参数说明
LINUX入门级常用命令20条整理
Ubuntu设置开机自动挂载所有格式硬盘分区
5个可能被你忽略的Linux安全设置方法
学习Apache的mod rewrite、access写法
改版时保留原链接,创建新的URL的方法
rsync中文手册之使用rsync实现网站镜像和备份linux
rsync 数据同步使用详解
linux URL的301重定向代码分析
eclipse3.2.2 + MyEclipse5.5 + Tomcat5.5.27 配置数据库连接池
Apache服务器二级域名的完美实现

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-04   浏览: 186 ::
收藏到网摘: n/a

本文参考了网上高手的教程和结合自己的实践经验而来。网上关于LAMP安装配置的教程虽然很多,但长篇大论的让你抓不到重点,短小精悍的对新手来说又难了点,所以初次配置时最容易在某个环节卡住,从而打击了学习的激情或者耽误了宝贵的时间。于是就整理出这个学习笔记。如果文中有错误的地方,恳请大家指正,不要误导了初学者。 一、系统约定
1、系统环境
Linux:CentOS-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 一个自动化运行任务守护进程。Red Hat Linux 随带四个自动化任务的工具cron、 anacron、at、和 batc。当你的Linux服务器并不是全天运行,这个anacron就可以帮你执行在"crontab"设定的时间内没有执行的工作。
apmd apmd(Advanced Power Management)是高级电源管理。传统的电源管理标准,对于笔记本电脑比较有用,可以了解系统的电池电量信息。并将相关信息通过syslogd 写入日志。也可以用来在电源不足时关机。
atd 计划任务(执行一次)守护进程。建议保留
autos 自动mount文件系统进程(例如自动mount光驱),在服务器系统上文件系统很少使用自动mount功能。关闭
cpuspeed 动态调整CPU频率的进程,在服务器系统中这个进程建议关闭。
crond 计划任务(循环执行)守护进程。建议保留
cups 通用UNIX打印系统,如果你计划在服务器上运行打印服务就不要关闭这个进程。
gmp 文本终端的鼠标服务,如果你想在本地文本终端支持鼠标就不要禁用这个进程。
haldaemon 和Windows的硬件管理类似,挂载U盘等必不可少。建议保留
iptables 这个是防火墙守护进程,无论如何,先启动它。
irqbalance 在多个处理器之间平衡中断,如果你使用一个单CPU系统或者你计划静态的平衡中断可以禁用这个进程。
isdn ISDN调制解调器支持,如果你准备在服务器上支持ISDN调制解调器就不要禁用这个进程。
kudzu 检测和配置新硬件,如果硬件配置改变了应该手动运行。
mdmonitor RAID相关设备的守护程序。
messagebus 挂载U盘时,要确保haldaemon和messagebus服务启动,所以这个也建议保留。
microcode_ctl 可编码以及发送新的微代码到内核以更新Intel IA32系列处理器守护进程。建议保留
netfs 用于支持NFS共享,如果你准备在服务器上支持NFS共享就不要禁用这个进程。
network 激活/关闭启动时的各个网络接口守护进程。
nfslock 对nfs启用文件锁,如果你准备在服务器上支持NFS共享就不要禁用这个进程。
pcmcia Pcmcia支持,在服务器上很少使用pcmcia适配器因此可以安全的禁用这个进程。
portmap 为RPC服务动态分配端口(例如NIS和NFS),如果系统没有支持RPC服务可以禁用这个进程。
rawdevices 提供对裸设备绑定的支持,如果你不准备在系统中使用裸设备可以禁用这个进程。
rpcgssd 主要用于NFS和Samba的多个远程调用进程,如果系统没有基于rpc服务的支持,可以禁用这个进程。
rpcidmapd 同上
sendmail 邮件传输代理,如果服务器需要支持邮件服务就不要禁用这个进程。
smartd 使用S.M.A.R.T兼容设备的进程,如果你不是使用IDE/SATA磁盘子系统,可以禁用这个进程。
sshd OpenSSH服务器守护进程,如果你不需要远程管理主机,可以关闭,不过应该没有几个人不需要这个服务吧。
syslog 把各类事件写入日志,是相当重要的服务,务必启动。
xfs X Window的字体服务,如果你的运行级别是5请不要禁用这个进程。
xinetd 支持多种网络服务的核心守护进程。务必启动。
[root@localhost ~]# ntsysv
#根据自己的需要,使用ntsysv工具来启用那些里程。
  
[root@localhost ~]# reboot
#重新启动使设置生效
[root@localhost ~]# netstat -an |more
#......信息略......
#检查一下当前开启的端口
#netstat是个很重要的命令,请大家务必掌握,这部份的知识自行在网上查阅。
  2)基本防火墙配置
[root@localhost ~]# /etc/rc.d/init.d/iptables stop
#防火墙开启
[root@localhost ~]# /etc/rc.d/init.d/iptables start
#防火墙开启
[root@localhost ~]# vi /etc/sysconfig/iptables
#根据自己的情况增加防火墙规则。
[email=root@localhost]root@localhost[/email] ~]# iptables-save > filename
#上面的命令用于将当前主机上的防火墙规则保存到filename文件。
root@localhost ~]# iptables-restore < filename
#上面的命令用于将filename防火墙规则文件(注意:不是sehll scripts格式)的规则读入当前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@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@localhost yum.repos.d]# wget http://mirror.be10.com/centos/4.4/CentOS-Base.repo
  5)停止打印服务
[root@localhost ~]# /etc/rc.d/init.d/cups stop  ← 停止打印服务
Stopping cups:            [ OK ]    ← 停止服务成功,出现“OK”
[root@localhost ~]# chkconfig cups off  ← 禁止打印服务自动启动
[root@localhost ~]# chkconfig --list cups  ← 确认打印服务自启动设置状态
cups 0:off 1:off 2:off 3:off 4:off 5:off 6:off  ← 0-6都为off的状态就OK(当前打印服务自启动被禁止中)
  6)在线升级Linux
[root@localhost ~]# yum update
#通过yum工具更新系统,更新后请重启系统
#yum的用法请见《如何使用yum管理RPM(CentOS)》
2、其它设置
  1)语言环境缺省设置
[root@localhost ~]# vi /etc/sysconfig/i18n
加上如下一行

QUOTE:
LANG="zh_CN.GB18030"
[root@localhost ~]# reboot
#重新启动要设置生效
如果临时需要英文环境,执行以下命令即可。
[root@localhost ~]# export LANG='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 ~]# ntpdate 210.72.145.44
#与中国国家授时中心进行时间校正
[root@localhost ~]# yum install ntp
#安装ntpdate程序。系统虽然默认没有安装这个套件,但我们可以很方便的通过yum工具来在线安装。
[root@localhost ~]# crontab -e

[Copy to clipboard] [ - ]
CODE:
0 23 * * * root /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1
#以上命令设置好后存盘。您的机器将在每天的23:00根据中国国家授时中心的NTP服务器时间自动校准时间。
#关于linux下定时执行工具crontab的介绍请见http://hi.baidu.com/monobao/blog/item/01e9ecdcbc6a14a1cc11665b.html
3、安装有依赖关系RPM包
[root@localhost ~]# vi install.sh

[Copy to clipboard] [ - ]
CODE:
yum -y install gcc
yum install cpp
yum install gcc-c++
yum install ncurses
yum install ncurses-devel
yum install gd-devel php-gd
yum install zlib-devel
yum install freetype-devel freetype-demos freetype-utils
yum install libpng-devel libpng10 libpng10-devel
yum install libjpeg-devel
yum install ImageMagick
yum install flex
yum install ImageMagick-devel
[root@localhost ~]# sh install.sh
#为了方便,直接这些软件包在线安装的指令行编写到到脚本(Shell Script)中,下次用到时,你只需执行这个脚本就能自动安装了。因为Shell Script是利用您平日在使用的一些指令,将之组合起来,成为一个"程式"。如果您平日某些序列的指令下得特别频繁,便可以将这些指令组合起来,成为另一个新的指令。这样,不但可以简化并加速操作速度,甚至还可以乾脆自动定期执行,大大简化系统管理工作。
下面正式步入LAMP的的安装步骤,开始安装之前,先了解一下源码编译方面的知识,参考文献《Linux系统管理员(二)---套件管理RPM与Tarball》。
三、安装Mysql
1、建立msyql用户组
[root@localhost ~]# grep mysql /etc/group
#查询系统中是否有mysql这个用户组,没有则添加。
[root@localhost ~]# groupadd mysql
#增加一个名为mysql的用户组
2、建立mysql用户
[root@localhost ~]# grep mysql /etc/passwd
#查询系统中是否有mysql这个用户,没有则添加。
[root@localhost ~]# useradd mysql -g mysql -M -s /sbin/nologin
#增加一个名为mysql的用户。
-g:指定新用户所属的用户组(group)
-M:不建立根目录
-s:定义其使用的shell,/sbin/nologin代表用户不能登录系统。
3、下载:mysql-4.0.26
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget http://ftp.gamearena.cn/software/mysql-4.0.26.tar.gz
#......(信息略)......
[root@localhost src]# chmod +x mysql-4.0.26.tar.gz
#修改文件权限为755
[root@localhost src]# tar -zxvf mysql-4.0.26.tar.gz
#......(信息略)......
#解压缩
PS:当你在www.mysql.com下载MySQL的时候,会发现有binary/rpm/source三种包。binary distribution是由mysql官方优化编译好的,不需要make。
3、设置编译器的编译参数
[root@localhost src]# cd /usr/local/src/mysql-4.0.26
[root@localhost mysql-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@localhost mysql-4.0.26]# make
#“make”命令把源文件编译成可执行的二进制文件
[root@localhost mysql-4.0.26]# make install
#“make install”把二进制文件和配置文件安装在合适的目录下
6、初始化系统库
[root@localhost mysql-4.0.26]# ./scripts/mysql_install_db
本文参考了网上高手的教程和结合自己的实践经验而来。网上关于LAMP安装配置的教程虽然很多,但长篇大论的让你抓不到重点,短小精悍的对新手来说又难了点,所以初次配置时最容易在某个环节卡住,从而打击了学习的激情或者耽误了宝贵的时间。于是就整理出这个学习笔记。如果文中有错误的地方,恳请大家指正,不要误导了初学者。
7、其它设置
[root@localhost mysql-4.0.26]# cp support-files/my-medium.cnf /etc/my.cnf -fv
#注解:
-f,删除目标中同名的文件或目录,并且不给任何提示。
#还有一些其它的my.cnf配置文件。适合不同的应用规模。型式如my-*.cnf。根据自己的需要cp。 
[root@localhost mysql-4.0.26]# cp support-files/mysql.server /etc/init.d/mysqld
#添加到起动脚本
[root@localhost mysql-4.0.26]# chmod 700 /etc/init.d/mysqld
[root@localhost mysql-4.0.26]# cd /usr/local
[root@localhost local]# chmod 750 mysql -R
#注解:
-R 递归改变目录及其内容的权限。
[root@localhost local]# chown -R mysql.mysql /usr/local/mysql
#设置所有者,mysql起动时会以mysql用户的身份运行,这样可以提高系统的安全性。
[root@localhost local]# chown -R mysql.mysql /usr/local/mysql/data
[root@localhost local]# cd /usr/local/mysql/libexec
[root@localhost libexec]# cp mysqld mysqld.old
[root@localhost libexec]# strip mysqld
[root@localhost libexec]# chkconfig --add mysqld
#添加一个服务
[root@localhost libexec]# chkconfig --level 345 mysqld on
#设置开机时起动
[root@localhost libexec]# service mysqld start
#启动mysql服务
[root@localhost libexec]# ln -s /usr/local/mysql/bin/mysql /sbin/mysql
[root@localhost libexec]# ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin
[root@localhost libexec]# ln -s /usr/local/mysql/bin/mysqldump /sbin/mysqldump
[root@localhost libexec]# mysqladmin -uroot password "youpassword"
#设置root帐户的密码
[root@localhost libexec]# mysql -uroot -p
# 输入你设置的密码
mysql>use mysql;
mysql>delete from user where password="";
#删除用于本机匿名连接的空密码帐号
mysql>flush privileges;
#刷新一下权限,不执行,对user表的修改不会立即生效
mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.08 sec)
#显示一下数据库,测试mysql是否安装正常。
mysql> quit
Bye
四、安装Apache
1、下载:apache2.2.4
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget http://archive.apache.org/dist/httpd/httpd-2.2.4.tar.gz
[root@localhost src]# chmod +x httpd-2.2.4.tar.gz
[root@localhost src]# tar -zxvf httpd-2.2.4.tar.gz
3)设置编译器的编译参数
[root@localhost src]# cd httpd-2.2.4
[root@localhost httpd-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@localhost httpd-2.2.4]# make; make install
#如果没有错误的话,那么Apache就已经安装在/usr/local/apache2目录中了
3、启动服务:
[root@localhost httpd-2.2.4]# /usr/local/apache2/bin/apachectl start
4、确定启动状:
[root@localhost apache2]# netstat -utl
tcp 0 0 *:http *:* LISTEN
#看到上面这行就表示你的Apache已经启动。
#用浏览器访问,看到It works!,说明apache已经安装成功了,恭喜您!
五、安装PHP
1、下载:php4.3.11
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget http://ftp.gamearena.cn/software/php-4.3.11.tar.gz
[root@localhost src]# chmod +x php-4.3.11.tar.gz
[root@localhost src]# tar -zxvf php-4.3.11.tar.gz
2、设置编译器的编译参数
[root@localhost src]# cd php-4.3.11
[root@localhost src]# ./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
编译共享的 Apache 2.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@localhost php-4.3.11]# make; make install
4、转存php基本配置文件
[root@localhost php-4.3.11]# cp php.ini-dist /usr/local/php4/php.ini
#这个路径必须和./configure中的--with-config-file-path设置一致
5、整合apache 与php
[root@localhost php-4.3.11]# vi /usr/local/apache2/conf/httpd.conf
加上:

QUOTE:
AddType application/x-httpd-php .php
查找<IfModule dir_module>,在下面一行的DirectoryIndex后面增加index.php,例:

QUOTE:
DirectoryIndex index.php index.html
PS:其实这个DirectoryIndex和IIS中”启用默认内容文档“那项设置是一个含义,应该知道是干什么用的了吧。
6、重启apache
[root@localhost php-4.3.11]# /usr/local/apache2/bin/apachectl stop
[root@localhost php-4.3.11]# /usr/local/apache2/bin/apachectl start
切记:不要直接用[root@localhost php-4.3.11]# /usr/local/apache2/bin/apachectl restart,我第一次配置时,就是这样操作导致apache的服务启动不了,害得我查了半天。
7、测试php是否正常工作
[root@localhost php-4.3.11]# echo '<?php phpinfo(); ?> ' > /usr/local/apache2/htdocs/phpinfo.php
#在浏览器中输入http://你的地址/phpinfo.php,如果出现如下画面,就说明PHP编译成功了。

六、安装Zend Optimizer
1、下载Zend Optimizer 3.2.2
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget http://downloads.zend.com/optimizer/3.2.2/ZendOptimizer-3.2.2-linux-glibc21-i386.tar.gz
[root@localhost src]# chmod +x ZendOptimizer-3.2.2-linux-glibc21-i386.tar.gz
[root@localhost src]# tar -xzvf ZendOptimizer-3.2.2-linux-glibc21-i386.tar.gz
2、安装Zend Optimizer
[root@localhost src]# cd /usr/local/src/ZendOptimizer-3.2.2-linux-glibc21-i386
[root@localhost ZendOptimizer-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探针文件核查Zend Optimizer是否安装成功
正常的话,应该能看到成功安装Zend Optimizer的信息,图中红框部份

7、安装phpMyAdmin
1、下载版本
[root@localhost src]# wget http://jaist.dl.sourceforge.net/ ... s-utf-8-only.tar.gz
#从phpMyAdmin官方站点下载phpMyAdmin-2.10.0.2-all-languages.tar.gz文件。
2、安装配置
[root@localhost src]# tar -xzvf phpMyAdmin-2.10.0.2-all-languages-utf-8-only.tar.gz
[root@localhost src]# mv phpMyAdmin-2.10.0.2-all-languages-utf-8-only /usr/local/apache2/htdocs/phpmyadmin
#把解开的phpMyAdmin拷贝到你的web发布目录
在浏览器访问http://你的地址/phpmyadmin/scripts/setup.php,点击Add按钮,如下图所示

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

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

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

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