绝对原创! 这个是DOS2000和我一起整理的。:)
说明:主要是以假设php网站为目标,网站使用了GD库(包括GIF create功能),采用zend加速,数据库用的是Mysql,由于程序设计和数据库使用了一些新版本的新特性,所以没办法使用Linux默认安装的Http和mysql服务,需要自己配制安装。
这方面的文章和教程很多了,我写这个笔记主要是为了自己备忘和总结经验。还有就是明确地为架设同类站点的程序员参考,因为很多程序员都没有太多时间研究Linux服务器的配置,希望能给他们省点儿时间。希望对Linux比较熟悉的高手或是网管朋友多多批评指正,不然有错误害了人可就不好了,呵呵。
准备工作首先你需要安装Linux,我推荐用Red Hat Linux,版本8.0以上就可以了,因为我在RH8、RH9和Fedora core2上面都用下面的方法安装成功过,其他的版本我没有试过,应该最好是用内核版本较高的Linux,这样编译比较少出问题。
以下是我用到的软件及下载地址。
Apachehttpd-2.0.54.tar.gz 下载地址:http://httpd.apache.org/download.cgi
l 说明:没有给出直接链接,因为Apache.org总是提供最新的版本下载,有可能现在已经不是2.054了,而是更高的版本。注意要下载源码包。
PHPphp-4.3.11.tar.gz 下载地址:http://www.php.net/downloads.php
l 说明:源码包
Mysqlmysql-max-4.1.12-pc-linux-gnu-i686.tar.gz
下载地址:http://dev.mysql.com/downloads/mysql/4.1.html
l 说明:反复装过几次,我个人觉得就Mysql而言,二进制包比RPM包的安装较少出问题,所以我个人推荐安装二进制包,而且RPM包一旦出问题,不容易查出问题所在。源码包编译也不错的,不过好像Mysql.com上不提供源码包下载了:(
GDgd-2.0.33.tar.gz 下载地址:http://www.boutell.com/gd/
l 说明:gd2.0.29开始就恢复GIF创建的支持了,这是一个珍贵的版本,建议保留一个,说不定什么时候又闹版权问题弄得不支持了,那样又要打补丁,很麻烦。GIF真的很变态,支持共享!
jpegsrc.v6b.tar.gz 下载地址:http://www.ijg.org (这个竟然是传说中的官网)
libpng-1.2.7.tar.gz 下载地址:http://www.libpng.org/pub/png/libpng.html
zlib-1.2.2.tar.gz 下载地址:http://www.gzip.org/zlib/
freetype-2.1.9.tar.gz 下载地址:http://www.freetype.org/
ZendZendOptimizer-2.5.10-linux-glibc21-i386.tar.gz 下载地址:http://www.zend.com/
卸载:我们需要把原来系统自带的或者后来采用rpm方式安装的Apache | mysql | php软件卸载掉,我听说不卸载rpm也是可以的,不会影响源码包或者二进制包的安装,就是将来你不起动那些进程就没问题了,但我还是建议卸载,因为rpm方式安装的软件把各种文件放在很多奇怪的地方,我感觉是非常不好管理的。
下面的卸载范例是Fedora core2默认安装的包。
卸载Mysql[root@yourdomainname/]# rpm -qa | grep mysql
mysql-3.23.58-9
php-mysql-4.3.4-11
mod_auth_mysql-20030510-4.1
mysql-server-3.23.58-9
l 说明:rpm –qa | grep mysql 命令是为了把mysql相关的包都列出来,我上面的例子是Fedora core2默认安装mysql的rpm软件包列表,如果是别的Linux版本列出来的列表有可能会不一样,不过不用担心,不管是什么,卸载都从最下面的一个包开始,直到卸载掉第一个为止。
l 比如:在这个例子中,我们应该先卸载mysql-server-3.23.58-9 方法如下:
rpm –e mysql-server
l 说明:rpm –e 是卸载rpm包的命令,后面是包名称,最后的版本号是不用打的,比如我们下一步卸载mod_auth_mysql-20030510-4.1包,方法如下:
rpm –e mod_auth_mysql
卸载Apache[root@ yourdomainname /]# rpm -qa | grep httpd
httpd-2.0.49-4
system-config-httpd-1.2.0-3
httpd-manual-2.0.49-4
l 说明:方法跟卸载Mysql一样,不用说了吧
卸载PHP[root@ yourdomainname /]# rpm -qa | grep php
php-odbc-4.3.4-11
php-4.3.4-11
php-mysql-4.3.4-11
php-pear-4.3.4-11
php-ldap-4.3.4-11
php-pgsql-4.3.4-11
l 说明:方法跟卸载Mysql一样,不用说了吧
l 注意:卸载的时候如果卸载不掉,系统一般会提示包的依赖关系,并且列出依赖的包的名称,先卸载提示依赖的包就可以了。
l 如果实在实在有卸载不掉的包,可以加—nodeps这个参数来卸载,比如我们卸载php-4.3.4-11,实在卸不掉了。就用:
[root@ yourdomainname /]# rpm -e php-4.3.4-11 –nodeps 命令很强硬,应该行的。
安装:安装Mysql二进制包解压缩:
# tar zxvf mysql-max-4.1.12-pc-linux-gnu-i686.tar.gz /usr/local
# cd /usr/local
# mv mysql-standard-4.0.20-pc-linux-i686 mysql
解压缩以后,可以看到mysql目录里面有一个文件叫INSTALL-BINARY,里面有很详细的二进制安装说明(可惜英文的),如果能看明白就基本上搞定了,我是看不懂地。其实解压以后,安装工作基本上已经完成了,配置一下就可以工作了。
我知道的目录和文件的用途:
目录
目录的内容
/bin
客户程序和mysqld服务器
/data
日志文件和数据库文件存放的地方,这个位置跟源码包的安装是有区别的,源码包的目录是var
/include
头文件 这些文件是php编译时会用到的
/lib
库文件 这些文件是php编译时会用到的
/scripts
mysql_install_db 就这一个文件,初始化数据库
添加用户和组:
下面添加 mysql 用户组和用户(如果你刚刚卸载掉mysql,组和用户都是存在的,验证一下吧),如果系统中还没有mysql组和用户,建立他们:
# groupadd mysql
# useradd -g mysql -d /usr/local/mysql -s /sbin/nologin mysql
l 上面第一条命令建立mysql组,第二条添加mysql帐号,并设定其主目录为/usr/local/mysql,如果你的mysql解压在别的地方就改一下,同时出于安全考虑设定该帐号不可以登录系统
初始化数据库:
# scripts/mysql_install_db --user=mysql
用mysql这个用户运行 /usr/local/mysql/scripts目录下的数据库初始化程序
l 注意:这个命令只能在mysql的安装目录下(/usr/local/mysql)执行,别的地方执行是绝对不可以的,也不要到scripts目录底下去执行。
权限设定:
# chown -R root .
# chown -R mysql data
# chgrp -R mysql .
启动一下试试:
# /usr/local/mysql/bin/safe_mysqld
# /mysql
mysql>
最后将safe_mysqld拷贝到safe_mysqld /etc/rc.d/init.d/ 成为系统启动的守护进程!
这就意味着成功安装了mysql了,其他的事情推荐安装了apache 编译了php以后再做,因为那时候上传一套phpmyadmin就完事大吉了。
安装APACHE2:
首先# tar zxvf apache.gar.gz
./configure -prefix=/usr/local/apache2 -enable-so (可改为你自己的目录;-enable-so用于加载connector,不可省略,你还可以加上你自己的其他模块)
make
make install
cd /usr/local/apache2/conf
vi httpd.conf
更改:servername 你的机器ip或域名
1、 安装jpeg-6b
#./configure
#make
编译成功,但是在安装的时候报错,系统提示不能将文件拷贝到/usr/local/man/man1这个目录,于是建立目录以后安装成功:
#mkdir /usr/local/man & /usr/local/man/man1
安装记录
# make install
# make install-lib //以前因为没有执行这一步安装导致在编译php时报错
2、libpng-1.2.5的安装配置
#cp scripts/makefile.gcmmx makefile \\makefile.gcmmx是针对MMX指令集优化的
#make && make install
3、zlib-1.1.4安装配置
#./configure --shared \\shared生成zlib的共享库文件
#make && make install
4、freetype-2.1.5安装配置
#./configure
#make && make install
5.gd-1.0.15安装配置
#./configure
配置完成后,注意输出的信息是否如下:
** Configuration summary for gd 2.0.15:
Support for PNG library: yes
Support for JPEG library: yes
Support for Freetype 2.x library: yes
Support for Xpm library: no
Xpm库以前安装不成功,如果程序部门不常用用,一般PNG/JPEG/FREETYPE三个库打开支持就行
#make && make install
#cp gd.h /usr/local/lib \编译PHP的时候会缺少这个文件出错
配置PHP
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache2/bin/apxs --enable-track-vars --with-config-file-path=/usr/local/php/etc --with-gd --enable-sysvmsg --enable-sockets --enable-sysvshm --enable-sysvsem --enable-gd-native-ttf --with-ttf=/usr/lib --disable-debug --with-tiff-dir=/usr/lib --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/local/lib --with-xml --with-gdbm-dir=/usr/lib --enable-wddx --with-freetype-dir=/usr/local/lib --with-zlib
#make
#make install
注意路径!!!
配置:Httpd.conf的修改支持php
虚拟主机Httpd.conf 的虚拟主机配置的例子里面,只用到了开设虚拟主机最常用的几条命令,其他的虚拟主机功能非常强大,在http://httpd.apache.org/docs-2.0/ 里面有详细的说明:
l 比较有用的一条 ServerAlias ,如果你需要一台虚拟主机支持多个别名的指向,就很需要了,还可以支持通配符:
<VirtualHost *>
ServerName server.domain.com
ServerAlias server server2.domain.com server2
# ...
</VirtualHost>
PHP.ini的修改默认设为中文:
找到以下行:
;default_charset = "iso-8859-1"
在这行下面加一行或修改成:
default_charset = "gb2312"
关于PHP.ini大家弄的都很熟悉了。这里不在赘述!!
我遇到过的问题及解决方法问:在使用Freetype的时候,程序提示字体找不到,并且列出了字体的名称和位置
答:其实很简单,不同版本的Freetype默认安装的目录是不一样的,找到默认安装的目录,修改程序使用正确的路径就可以了。如果是编译的程序你改不了的话,就把系统目录按照程序的要求cp一份就可以了。同时默认安装路径尽量放到/usr/local/就OK了!!
所有文件的下栽我做了一个包。路径在http://www.smartshop.com.cn/soft/liunx_soft.rar