如何安装一个lamp系统?
作者:orla shanaghy 翻译 来自:linuxfocus
摘要:
在这个指南中,我会告诉怎么安装一个linux服务器和一些主要的而且很有用的东西.换句话说,我将告诉如何安装一个lamp系统.
首先,我将告诉这个lmap的缩写代表的是什么.
lamp就是linux apache mysql php,或许可以从名字猜到,一个lamp系统包括一个linux操作系统,一个apache web服务器,一个mysql数据库,和一个脚本语言php.
介绍
本文介绍了如何使用动态共享对象(dso)来安装一个lamp系统.
dsos和静态安装相比的主要优点:很容易就可以随时使用任何一个新版本的模块的覆盖其相应的旧版本的模块而不用从新编译安装所有其他的模块. 无论这个模块是pdf-lib模块,gd-lib模块或者任何其他的模块. 使用静态安装,打个比方,如果想把php 4.2.3升级到php 4.2.4,必须重新编译和安装所有的东西,apache服务器,pdf-lib和其他所有需要的模块(当然包括php本身在内),但是使用dso安装,只有php受到影响,而其他的所有东西还是保持不变的.
注意:一般来说,由于安装过程有可能是不一样的,应该在安装或编译每个软件之前仔细的阅读readme文件.通常,成功的安装依赖于./configure后面的开关. 基于我的测试,这个安装应该一次成功,如果出现任何错误,请参考readme文件,并确认使用root权限进行安装!
导言已经足够了.开始安装lamp系统吧.
在开始安装之前,请务必完整而且仔细的阅读本文!
下载所需要的软件包
在安装之前,需要下载下列软件包:
apache 1.3.27
()
直接下载:
(2,2 mb)
mysql
()
红帽rpm包 (rpm):
mysql 3.23.52 server (i386) (7.4m)
mysql 3.23.52 client programs (i386) (2.2m)
mysql 3.23.52 libraries and header files for development (i386) (743k)
mysql 3.23.52 client shared libraries (i386) (232k)
zlib 1.1.4
()
下载:
(177 kb)
gd library 1.8.4
()
下载:
(252 kb)
注意:由于许可的原因,gd库不在支持gif格式(并且已经不支持这种格式一段时间了)!
pdf lib 4.0.3
()
下载:
(3,2 mb)
php 4.2.3
()
下载:
(3,3 mb)
安装
只要把所有这些安装包全部下载完毕了,就可以开始安装了。首先,复制这些文件到以下目录(如果没有这个目录,使用mkdir /usr/local/src/lamp命令来建立lapm目录):
/usr/local/src/lamp/
唯一不需要复制到这里的文件就是mysql rpm文件,因为他们可以直接的安装。最好先安装mysql,想知道如何安装他,请看下面"mysql 3.23.52"这部分
现在六个包都应该以tar.gz的形式放在 /usr/local/src/lamp/目录了.需要使用下面的步骤把他们解包.
注意:需要输入的命令是下面的黑体; 计算机输出是普通字体,所以的输入都起始于一个>符号.
首先打开一个控制台(shell终端,例如bash),然后在执行下面的命令:
user:~ > su
[now enter your root password]
root: ~> cd /usr/local/src/lamp
root:/usr/local/src/lamp > tar -xvzf apache_1.3.27.tar.gz
root:/usr/local/src/lamp > tar -xvzf zlib-1.1.4.tar.gz
root:/usr/local/src/lamp > tar -xvzf libpng-1.2.2.tar.gz
root:/usr/local/src/lamp > tar -xvzf gd-1.8.4.tar.gz
root:/usr/local/src/lamp > tar -xvzf pdflib-4.0.3.tar.gz
root:/usr/local/src/lamp > tar -xvzf php-4.2.3.tar.gz
把所有的包解开之后,使用命令 "ls -l" 来显示所有的目录.
需要指出的是,很有必要按照这里的安装顺序一步一步的执行下去,因为一些软件包需要其他的包才能正常的工作.比如gd库需要zlib和libpng,而libpng又需要zlib. 好,现在开始apache web服务器的安装吧.
apache 1.3.27
注意:确保阅读了readme文件!在这里./configure有好几个可以设置的开关.
不要使用--enable-module=all编译apache web服务器!如果这样的话,任何模块都不会编译进去的. 最好的方法就是尽可能的指定一些模块. 一般说来,这样做对dso的支持已经足够了. 之后可以自己添加任何其他的模块,这就是dso安装的优势所在.
按照下面的方法来安装和配置apache.
首先,象刚才那样进入命令行模式(shell终端,例如 bash),
注意:不要在命令行下输入user:/usr/local/src/lamp >.这个是linux命令行和当前的路径,命令行可能看起来不一样.
user:/usr/local/src/lamp > cd apache_1.3.27
user:/usr/local/src/lamp/apache_1.3.27 > su
[enter your root password]
root:/usr/local/src/lamp/apache_1.3.27 > ./configure --prefix=/usr/local/apache/1.3.27 --datadir=/web/htdocs --enable-rule=shared_core --enable-module=so
注意:最后一步是一次完成的,不要分成两步来做!在"--"的前面有一个空格.-datedir后面接的是网站的文件所在的位置,当然也可以选择自己的文件所放位置。 如果修改了"/web/htdocs"这个位置,本文后面的相关位置也需要相应的作出修改.
root:/usr/local/src/lamp/apache_1.3.27 > make
root:/usr/local/src/lamp/apache_1.3.27 > make install
如果输入都正确的话,apache web服务器应该编译安装完成了的.
mysql 3.23.52
如果按照刚才的步骤做的话,他已经安装好了.
安全警告:如果服务器连接到公共网络上的话,比如因特网或者内部网,尽量把mysql服务器的密码设置的复杂些!
root:/home/user/download/mysql > rpm -uvh mysql-3.23.52-1.i386.rpm
root:/home/user/download/mysql > rpm -uvh mysql-client-3.23.52-1.i386.rpm
root:/home/user/download/mysql > rpm -uvh mysql-devel-3.23.52-1.i386.rpm
root:/home/user/download/mysql > rpm -uvh mysql-shared-3.23.52-1.i386.rpm
注意:使用mysql的rpm所在的位置替换/home/user/donwload/mysql.
##########
zlib 1.1.4
##########
root:/usr/local/src/lamp/apache_1.3.27 > cd /zlib-1.1.4/
root:/usr/local/src/lamp/zlib-1.1.4 > ./configure --shared
root:/usr/local/src/lamp/zlib-1.1.4 > make
root:/usr/local/src/lamp/zlib-1.1.4 > make install
comment: we use the switch --shared here to tell zlib that we want to include the library as a dynamic module in php.
############
libpng 1.2.3
############
我在tar zxvf libpng-1.2.14-no-config.tar.gz
时出错如下:
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors
重新下载
tar zxvf libpng-1.0.22.tar.gz
libpng的安装有点点不一样。首先,进入目录 /libpng-1.2.3/scripts/ :
cd ../libpng-1.2.3/scripts/
然后在输入下面的命令:
libpng-1.2.3/scripts > cp makefile.linux ../makefile
root:/usr/local/src/lamp/libpng-1.2.3/scripts > cd ..
使用这些命令,已经把相关的make file复制到libpng的主目录了.现在需要看看make file并且做一些系统需要的改变, e.g.例如,特别的include目录. 通常情况下,文件中的数据都是正确的,但是还是需要检查一下,这样可以让更加快的发现错误.
继续输入下面的命令:/libpng-1.2.3 > make test
....
PASS (9782 zero samples)
Filter 0 was used 21 times
Filter 1 was used 15 times
Filter 2 was used 52 times
Filter 3 was used 10 times
Filter 4 was used 33 times
tIME = 7 Jun 1996 17:58:08 +0000
libpng passes test
如果这时没有任何出错信息,可以使用下面的命令安装libpng:
/libpng-1.2.3 > make install
...
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config
cp libpng-config /usr/local/bin/libpng10-config
chmod 755 /usr/local/bin/libpng10-config
(cd /usr/local/bin; ln -sf libpng10-config libpng-config)
######## ######### ##################################
gd-1.8.4
#####################################################
首先进入目录gd-1.8.4:
cd ../gd-1.8.4/
同样应该看make file.如果系统的某些东西有变化,可以使用喜欢的文本编辑器对make file做相应的修改.
通常情况下,不需要对make file进行任何更改.
如果现在喜欢上了编译文件,可以输入下面的命令:
root:/usr/local/src/lamp/gd-1.8.4 > make
gd_jpeg.c:761: error: `outfile' undeclared (first use in this function)
make: *** [gd_jpeg.o] Error 1
root:/usr/local/src/lamp/gd-1.8.4 > make install
gd_jpeg.c:761: error: `outfile' undeclared (first use in this function)
make: *** [gd_jpeg.o] Error 1
出错了,看来上面没有做任何改动,是不能通过的
如果这时出现了任何错误,输入下面的命令:
root:/usr/local/src/lamp/gd-1.8.4 > make clean
make clean
rm -f *.o *.a pngtogd pngtogd2 gdtopng gd2topng gd2copypal gdparttopng webpng gdtest gddemo gd2time gdtestft gdtestttf test/gdtest.jpg test/gdtest.wbmp
vi Makefile
找不到includedirs和libdirs这二个
原来这二个都要大写,呵呵
原文:
INCLUDEDIRS=-I. -I/usr/include/freetype2 -I/usr/include/X11 -I/usr/X11R6/include/X11 -I/usr/local/include
LIBDIRS=-L. -L/usr/local/lib -L/usr/lib/X11 -L/usr/X11R6/lib
一项一项检查
/usr/include/freetype2
/usr/include/X11
/usr/X11R6/include/X11
这三项都没有找到
/usr/local/include
Is a directory
改成这样再试,出了很多错
查看GCC
gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --host=i386-redhat-linux
Thread model: posix
gcc version 3.3.2 20031022 (Red Hat Linux 3.3.2-1)
INCLUDEDIRS=-I. -I/usr/local/include
另外的
/usr/local/lib Is a directory
/usr/lib/X11 Is a directory
/usr/X11R6/lib Is a directory
less readme
For Unix
cd to the 1.8.4 directory. Edit the Makefile with your preferred text
editor and make any necessary changes to the settings at the top,
especially if you want Xpm or TrueType support. Next, type "make". If
you are the system administrator, and you wish to make the gd library
available to other programs, you may also wish to type "make install".
If you get errors, edit the Makefile again, paying special attention
to the INCLUDEDIRS and LIBDIRS settings.
IF YOU GET LINKER ERRORS, TRY JUGGLING THE ORDER OF THE -l DIRECTIVES
IN THE MAKEFILE. Some platforms may prefer that the libraries be
listed in the opposite order.
还是不知道要改成什么样的
????????????????????????
当出现了错误才需要执行最后的命令!如果执行了make clean,必须再次检查make file并且适当的修改他,然后再执行make.
注意:务必要检查includedirs和libdirs的设置是否正确!
看来这样比较难走下去,换种方式呢
gd-2.0.26gif.tar.gz用这种呢,倒还真的完成了
安装libpng:
# tar -zxf libpng-1.2.7-config.tar.gz
# cd libpng-1.2.7-config
# ./configure --prefix=/usr/local/libpng2
# make
# make install
安装freetype:
# tar -zxf freetype-2.1.9.tar.gz
# cd freetype-2.1.9
# ./configure --prefix=/usr/local/freetype2
# make
# make install
安装gd库:
# tar -zxf gd-2.0.26gif.tar.gz
# cd gd-2.0.26gif
# ./configure --prefix=/usr/local/gd2 --with-zlib=/usr/local/zlib2/ --with-png=/usr/local/libpng2/ --with-jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype2/ (请指定及格插件的安装路径,否则安装php的时候可能出错!)
# make
# make install
#############
pdf-lib 4.0.3
#############
这个笔尖简单,因为模块已经编译好了,只需要把他复制到/usr/local/lib目录.
输入下面的命令:
root:/usr/local/src/lamp/gd-1.8.4 > cd /
root:/ > cp /usr/local/src/lamp/pdflib-4.0.3-linux/bind/php/php-4.2.1/libpdf_php.so /usr/ local/lib/libpdf_php.so
php 4.2.3
最后,需要安装php.
进入php目录:
root:/ > cd /usr/local/src/lamp/php-4.2.3/
root:/usr/local/src/lamp/php-4.2.3 > ./configure --with-apxs=/usr/local/apache/1.3.27/bin/apxs --enable-track-vars -- enable-ftp --with-zlib --with-gd --with-sockets --enable-sockets --with-sysvshm --with-sysvsem --disable-debug --with-pdflib-dir=/usr/local/lib --with-tiff-dir=/usr/local/lib --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/lo cal/lib --with-zlib-dir=/usr/local/lib --with-mysql --with-xml
注意:最后一步是一次完成的,不要分成两步来做!在"--"的前面有一个空格, 在第二行和第三行的"sysvshm"和"sysvsem"并不是错误!
象以前一样输入:
root:/usr/local/src/lamp/php-4.2.3 > make
root:/usr/local/src/lamp/php-4.2.3 > make install
注意:在一些配置比较低的计算机编译(make)php需要花比较长的时间,所以如果一段时间内没有任何反应的话,请不要不烦躁。可以使用rm /usr/local/src/lamp -r命令删除 /usr/local/src/lamp目录 确认要正确输入,因为以root执行"rm -r /"将破坏整个系统,可是,如果删除了"usr/local/lamp"目录的话,在重新安装或者升级系统的时候,需要做更多的工作,所以可以只删除以".tar.gz"结尾的源代码包.
##############
配置httpd.conf
安装完毕,现在开始配置.
首先,需要告诉apache web读物器让他支持*php或者*.php3文件.
进入apache的"conf"目录:
root:/usr/local/src/lamp/php-4.2.3 > cd /usr/local/apache/1.3.27/conf
root:/usr/local/apache/1.3.27/conf >
然后使用可以编辑和保存的文本编辑器打开"httpd.conf"文件.
注意:kate编辑器是很适合编辑配置文件的,注意他必须运行在kde环境,按 alt + f2 => kdesu kate来启动他.按ctrl + g跳转到想到的那行.
在这个文件的190行可以找到这些:
#
#dynamic shared object (dso) support
#
#to be able to use the functionality of a module which was built as a dso you
#have to place corresponding `loadmodule' lines at this location so the
#directives contained in it are actually available _before_ they are used.
#please read the file readme.dso in the apache 1.3 distribution for more
#details about the dso mechanism and run `httpd -l' for the list of already
# built-in (statically linked and thus always available) modules in your httpd
#binary.
在这里如果没有的话,需要输入:
loadmodule php4_module libexec/libphp4.so
下面的内容可以在770行找到:
#addtype allows you to tweak mime.types without actually editing it, or to
#make certain files to be certain types.
#addtype application/x-tar .tgz
在这里添加:
addtype application/x-httpd-php .htm
addtype application/x-httpd-php .html
addtype application/x-httpd-php .phtm
addtype application/x-httpd-php .phtml
addtype application/x-httpd-php .php
addtype application/x-httpd-php .php3
addtype application/x-httpd-php .php4
addtype application/x-httpd-php-source .phps
注意:请确保输入正确,否则将会出现错误.
如果不象php解析器执行html文件,可以注释掉下面的内容:
addtype application/x-httpd-php .htm
addtype application/x-httpd-php .html
现在httpd.conf文件就配置好了.
什么是解析器?
解析器就是一个解析文本的一个小软件。这个文本可以是源代码(象 c++)或者是一个标记语言 (象 html).他检查文本的语法错误而且传递解析了的文本,并通常以高效简洁的内码来处理应用程序.
文本通过解析器执行需要一定的时间才可以显示出来,那就是说纯粹的html页面读取和显示都比php或者其他的脚本. 但是用户不会发现这个细小的延迟,当多个用户都访问同样的文件的时候,这个延迟才比较明显。例如,如果多个用户同时访问一个php页或者脚本,这个页的显示速度会稍微慢些。当然和硬件配置也有很大的关系。因此,如果打算把lamp系统对外开放, (例如因特网或者内部网),需要更加好的配置,计算机更加快,否则系统将变的非常缓慢 . 另一方面,可以很安全在一个旧的pc或者笔记本电脑使用lamp系统开发php页或者脚本连接mysql数据库,因为就只有一个人在计算机系统上执行和显示php页或者脚本,速度是不成问题的.
php.ini
现在需要设置和修改php.ini文件.
首先,需要把php.ini文件复制到适当的位置,进入php的安装目录 :
root:/usr/local/apache/1.3.27/conf > cd /usr/local/src/lamp/php-4.2.3/
复制"php.ini-dist"到/usr/local/lib并且把名字改成"php.ini".按照下面的方法去做:
root:/usr/local/src/lamp/php-4.2.3 > cp php.ini-dist /usr/local/lib/php.ini
然后把"pdflib"作为一个扩展写到php.ini文件.这样php知道如何处理相应的pdf函数,php也找到了其他的模块 (zlib, gd, etc.).
现在使用文本编辑器打开文件"/usr/local/lib/php.ini". 这个扩展所在的的位置是第371行.
他看起来应该象这样:
;directory in which the loadable extensions (modules) reside.
....
extension_dir = ./ <=使用下面的内容覆盖他:
extension_dir = /usr/local/lib
extension=libpdf_php.so
保存文件.
到这里为止,全部完成了!全能的lamp系统!
现在测试服务器,这是为了测试时候可以成功的启动服务器。第一步是先关闭任何正在运行中旧的服务器(例如当安装这个版本的时候,如果一个web服务器已经安装了). 只需要这样做:
root:/usr/local/src/lamp/php-4.2.3 > killall httpd
现在尝试启动新的服务器:
root:/ > /usr/local/apache/1.3.27/bin/apachectl start
如果看到了下面的消息...
/usr/local/apache/1.3.27/bin/apachectl start: httpd started
... 完全ok,并且服务器已经在运行了!
现在进入"web/htdocs"目录(documentroot 如果已经选择了另外一个目录,记得做相应的改变if ) 并在那里建立一个叫info.php的新文件,按照下面来做:
user:/ > cd /web/htdocs/
我的目录:pwd
/usr/local/apache/htdocs
user:/web/htdocs > touch info.php
用文本编辑器打开ingo.php并按照下面编辑:
echo phpinfo();
?>
注意:确认没有任何错漏,包括括弧!
保存并退出编辑器. 现在到了最激动人心的部分!在浏览器输入下面的地址:
or
or
or
此时,如果可以看到phpinfo()的输出的话,一切都正如所愿,可以随意的进行php编程了,恭喜!现在不但拥有了一个全能的lamp系统,还拥有了一个web服务器.
注意:现在可以在/web/htdocs目录下新建多个子目录(或者在安装的时候指定的任何目录).例如,如果有多个web工程,可以为每一个工程创建一个目录.
注意/web/htdocs (或者其他指定的目录) 是web服务器的根目录. 这就是url地址是的原因,如果有其他的子目录,例如project1, project2,等等.只需要把url地址改成: or ,等等.
注意:php文件只要他们在/web/htdocs或者子目录下才会被执行!
可以随意的扩展web服务器.
推荐
在这个部分,我推荐一些可以让更好的管理系统和web服务器的工具:
webmin 1.000
()
webmin可以完全轻松的管理系统,也可以使用来轻松地配置web服务器,例如.让web服务器随着系统的启动而启动,对mysql同样有用。 由于webmin本身很容易使用,因为这个,他非常之适合web服务器新手.
下载:
or
phpmyadmin 2.3.1
()
phpmyadmin专门为mysql定制的非常好的工具. 他可以让建立,删除和编辑表和和其他许多的功能,同样是强烈推荐.
下载:
(phpmyadmin-2.3.1-php.tar.gz)
使用webmin配置
设置apache服务器::
webmin => server => apache webserver
module config:
apache server root directory:
/usr/local/apache/1.3.27/bin/
path to httpd executable:
/usr/local/apache/1.3.27/bin/httpd
apache version:
select empty field and enter: => 1.3.27
path to apachectl command:
in empty field => /usr/local/apache/1.3.27/bin/
command to start apache:
in empty field => /etc/init.d/apachectl start
注意:如果apachectl不在这个目录,那就复制一个到这里:
root > cp /usr/local/apache/1.3.27/bin/apachectl /etc/init.d/
停止apache:
in empty field => /etc/init.d/apachectl stop
display virtual servers as:
=> icons
order virtual servers by :
=> order in config file(s)
maximum number of servers to display
=> 100
path to httpd.conf
in empty field => /usr/local/apache/1.3.27/conf/httpd.conf
path to srm.conf
in empty field => /usr/local/apache/1.3.27/conf/srm.conf
path to access.conf
in empty field => /usr/local/apache/1.3.27/conf/access.conf
path to mime.types
in empty field => /usr/local/apache/1.3.27/conf/mime.types
file to add virtual servers to:
=> httpd.conf
test config file before applying changes?
=> yes
注意:不需要输入=> !
如果想apache服务器在系统启动的时候也随之启动,可以在webmin这样设置:
webmin => system => bootup and shutdown
如果apache没有在这里监听,把他作为一个新的服务写入.
name => apachectl
script => is usually loaded automatically
start at boot time? => yes
bootup commands => /etc/init.d/apachectl start
shutdown commands => /etc/init.d/apachectl stop
##################################
升级
升级php
首先,复制新版本的php包到下面的目录:
/usr/local/src/lamp/
假设这个新版本的php是php 4.2.4 (我不知道是否真是这个名字).这个部分描述了升级php需要的步骤.基本上,所希望的是把旧版本的php升级到新版本的.
把刚才复制的文件解包.
打开命令行,并执行下面的命令:
user:~ > su
[only enter your root password]
root:~ > cd /usr/local/src/lamp/
root:/usr/local/src/lamp > tar -xvzf php-4.2.4.tar.gz
如果旧版本的源文件仍然在"/usr/local/src/lamp"目录的话,执行下面的命令 .
就版本的目录叫做 "/usr/local/lamp/php-4.2.3".
首先需要创建一个新的libphp4.so.把原来的重命名成"libphp4-4.2.3 .so":
root:/ > cd /usr/local/apache/1.3.27/libexec/
root:/usr/local/apache/1.3.27/libexec > cp libphp4.so libphp4-4.2.3.so
再创建一个旧版本的php.ini的备份:
root:/ > cd /
root:/ > cp /usr/local/lib/php.ini /usr/local/lib/php-4.2.3.ini
接着再删除就版本的php.ini:
root:/ > rm /usr/local/lib/php.ini
最好保存旧版本的php源文件,因为可以少输入很多东西!
这是因为这个就版本的目录"/usr/local/lamp/php-4.2.3"保存着一个短的shell脚本,他保存着上次./configure的所有参数.因此如果不保存这个目录,现在将不得不手动的输入所有的参数!
现在执行./configure:
root:/ > cp /usr/local/lamp/php-4.2.3/config.nice /usr/local/lamp/php-4.2.4/config.nice
root:/ > cd /usr/local/lamp/php-4.2.4
root:/usr/local/lamp/php-4.2.4 > ./config.nice
root:/usr/local/lamp/php-4.2.4 > make
root:/usr/local/lamp/php-4.2.4 > make install
注意:同样,如果没有保存旧的目录"/usr/local/lamp/php-4.2.3",需要手动输入所有./configure的参数,正如在上面"installation => php 4.2.3" 描述的那样.
复制php.ini到合适的地方:
root:/ > cd /
root:/ > cp /usr/local/lib/php.ini-dist /usr/local/lib/php.ini
现在只须按需要改变php.ini,正如上面 "configuration => php.ini"所描述.
最后,重新启动apache,服务器升级完毕:
root:/ > /usr/local/apache/1.3.27/bin/apachectl restart
结束语
后记
正如所知,人无完人,在本文中同样会出现错误。如果这方面的专家读了本文并觉得有地方需要修正,缺漏了一些东西或者需要进一不解释,请告诉我, 我可以改进这个指南.他也在suse linux 8.0测试通过,同样可以在其他linux版本中使用.
当然有许多途径配置一个lamp系统,但是本指南是基于告诉初学者如何建立一个web服务器的。我将继续更新这个指南,建议访问我的主页以获取最新的指南(请看下载链接旁边的注释).
相关参考
我将在这里继续升级这个指南: [in german]
gd: