CentOS 4.4下源码编译安装apache+php+mysql

来源:互联网 发布:知乎 赚钱 编辑:程序博客网 时间:2024/05/18 02:53
 作    者:稻草人
最后更新:03/08/2007
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://bbs.gamearena.cn/thread-2772-1-1.html
关键词:CentOS Apache MySQL PHP ZendOptimizer phpMyAdmin LAMP 源码编译
内容摘要:
  本文参考了网上高手的教程和结合自己的实践经验而来。网上关于LAMP安装配置的教程虽然很多,但长篇大论的让你抓不到重点,短小精悍的对新手来说又难了点,所以初次配置时最容易在某个环节卡住,从而打击了学习的激情或者耽误了宝贵的时间。于是就整理出这个学习笔记。如果文中有错误的地方,恳请大家指正,不要误导了初学者。
一、系统约定
1、系统环境
OS:CentOS-4.4.ServerCD-i386
Apache:2.2.4
MySQL:4.0.26
PHP:4.3.11
ZendOptimizer:3.2.2
phpMyAdmin:
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
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
CODE
[Copy to clipboard]
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、安装LAMP套件所必需的包
[root@localhost ~]# vi install.sh
CODE
[Copy to clipboard]
yum 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
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;
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]#
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
加上:
AddType application/x-httpd-php .php
查找,在下面一行的DirectoryIndex后面增加index.php,例:
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 ' ' > /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 -zcvf 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的信息,图中红框部份
点击在新窗口中浏览此图片
Tags - linux , centos , amp , 安装 , 编译 , 优化
原创粉丝点击