欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

手动配置lamp服务器的图文教程

LAMP是Linux、Apache、MySQL、PHP/Perl/Python的简称。它所组成的各组件都是开源软件,因此很方便自由的获取,导致这些组件的广泛使用,并不断完善发展,初步形成新的软件系统格局,并可能成为开源软件系统工程化的核心模式。

要安装比较新的httpd我们就必须安装比较新的apr。红帽6上就不需要再指定安装apr了,因为它默认安装的版本比较新。但是我们这里使用的是红帽5.8的版本,它给我们安装的apr版本有点老,我们要安装新版本的apr,是不是老版本的apr就要卸载了呢?这不是的,老版本千万不能卸载,可能会有依赖;那升级呢?也是不行的,升级后老版本也是会没的。那有的朋友该问了,那两个版本在是不是该有冲突了。我们只能使用多版本并存的机制,只要把编译安装的新版本和老版本安装在不同的地方就可以了。

  1. Rpm包安装: 

  2.  

  3.        /bin, /sbin, /usr/bin, /usr/sbin ####二进制所在位置 

  4.  

  5.        /lib, /usr/lib ####库文件所在位置 

  6.  

  7.        /etc ####配置文件所在位置 

  8.  

  9.        /usr/share/{doc,man}####帮助文档/手册 

  10.  

  11. 编译安装: 

  12.  

  13.       /usr/local/ ####定义安装第三方软件包 

  14.  

  15.               bin, sbin ####二进制所在位置 

  16.  

  17.               lib ####库文件所在位置 

  18.  

  19.               etc ####配置文件所在位置 

  20.  

  21.               share/{doc,man} ####帮助文档/手册 

我们这样安装,看上去还算工整,但是我们还要想到到时候要是想要卸载某个软件怎么办?还要一个一个的找吗?那不就变麻烦了。所以我们这样调整,就是定义安装第三方软件包依旧放在/usr/local/下,并且还要创建以软件名命名的目录(为了好找),然后把它有关的文件都放在这个目录下面。但是这样安装又出现了问题,它的二进制程序不在PATH环境里面,那就不能直接执行命令了,那就修改PATH变量;还要修改库文件搜索路径;还要修改man的配置文件等。

例如:    /usr/local/apr/

              bin, sbin, lib, includes, etc, share/man

下面我们就开始手动配置apr及apr-util,并且如何安装httpd。(提示:这里要下载源程序包)

第一步:安装开发环境

第二步:安装apr源程序

我们这里是在我们的服务器上下载的,大家要是做的话去官方网站(apr.apache.org)上下载源程序包,我们这里将它们放到了主目录下面。如果不想放到这里的话可以放到/usr/local/src下面,这里专门放源码的。下面我们就准备安装apr【提示:如果你系统的时间比下载源码包的时间还要早的话,这样是会出错的。如果时间不对的话可以用hwclock –s,这样将软件时间同步为硬件时间。】

下面我们就要将软件进行解压后进行安装。安装完成后第一个包就装好了。

  1. [root@localhost apr-1.4.6]# make 

  2.  

  3. [root@localhost apr-1.4.6]# make install 

第三步:安装apr-util

安装apr-util和我们安装apr是一样的。不过它指定路径的时候还要指定apr装在什么地方,如果不指定的话,它会自动找老版本的(05行最后面的红色就是指定的apr安装路径)。

  1. [root@localhost ~]# tar xf apr-util-1.5.2.tar.bz2 

  2.  

  3. [root@localhost ~]# cd apr-util-1.5.2 

  4.  

  5. [root@localhost apr-util-1.5.2]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr 

  6.  

  7. [root@localhost apr-util-1.5.2]# make 

  8.  

  9. [root@localhost apr-util-1.5.2]# make install 

第四步:安装httpd

在安装httpd之前我们还要安装一个模块,这个模块是pcre。除了配置那些模块还有可能会用到--enable –deflate配置压缩模块的. --enable –expires过期首部控制。如果要以fastCGI模式工作的话必须启用—enable-proxy-fcgi。这里我们是以模块的方式工作,暂时不用启用。--enable-mpms-shared=all在版本2.2中是没有的,但是在版本2.4中就有了。Apache是支持MPM(躲到处理模块)有三种形式,prefork,worker,event。支持哪一种在编译的时候已经确定了。在2.4的时候以模块化的方式使用MPM,也就是可以同时将这三种模块一并写进来用哪个可以切换哪个。听起来非常棒,但是PHP以模块化方式给MPM结合的时候,如果使用prefork,PHP很简单。但是你使用的是worker或event我们的PHP必须编译成ZTS格式,如果你想灵活使用的话,还要编辑两次PHP。在2.2默认MPM是prefork ,在2.4默认的MPM是event。--with-mpm=MPM 指定哪一个为默认。【提示:详细内容就在图中】

  1. [root@localhost ~]# tar xf httpd-2.4.4.tar.bz2 

  2.  

  3. [root@localhost ~]# cd httpd-2.4.4 

  4.  

  5. [root@localhost httpd-2.4.4]# yum -y install pcre-devel ####安装pcre模块 

  1. [root@localhost httpd-2.4.4]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-rewirte --enable-ssl --enable-cgi --enable-cgid --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util 

第五步:关闭selinux

之所以将这一项作为一大步来说是因为关闭selinux,不关闭的话,你的服务器启动不了。默认基本上是开启的,我们要把它给关掉。

1、暂时性的关闭

2、永久性关闭

  1. [root@localhost httpd-2.4.4]# vim /etc/selinux/config 

第六步:启动web服务器

在/usr/local/paache下面有一个脚本可以启动服务,脚本名称为bin/apachectl。

这里给大家说一下/usr/local/apache里面的内容,顺便把网页的内容添加hello apache,这时候我们查看一下。

第七步:将.pid文件放到/var/run下

我们一般都是将生成的.pid文件放到/var/run下面的,但是这里的.pid文件都放到了/usr/local/apache/logs下面,但是我们的/logs/下面都是放日志的,放这些.pid文件显然是不合适的,我们这里编辑配置文件(/etc/httpd/httpd.conf)将它的.pid文件都生成到/var/run下面。我们在配置文件中添加的内容是:PidFile "/var/run/httpd.pid"。【提示:我们还可以验证,当你没有输入这些内容的时候,关闭服务器(bin/apachectl stop)我们再用netstat –tnlp查看一下80端口,已经不再处于监听状态,我们在查看一下logs下面已经没有了.pid文件。这时候在配置文件中添加PidFile "/var/run/httpd.pid",我们发现.pid文件已经放到了/var/run/下面了,并且名字为httpd.pid。】

第八步:启动方便

我们这时候虽然能启动起来但是启动总是那么的不方便,这时候我们就要写脚本来让它方便起来了。将文件放在/etc/init.d/httpd里面,编辑完成后给它权限就行了,直接启动就行了。接下来我们让它开机后自动启动起来。

  1. [root@localhost apache]# vim /etc/init.d/httpd 

  2.  

  3. [root@localhost apache]# chmod +x /etc/init.d/httpd 

  1. #!/bin/bash 

  2. # httpd        Startup script for the Apache HTTP Server 

  3. # chkconfig: - 85 15 

  4. # description: Apache is a World Wide Web server.  It is used to serve \ 

  5. #          HTML files and CGI. 

  6. # processname: httpd 

  7. # config: /etc/httpd/conf/httpd.conf 

  8. # config: /etc/sysconfig/httpd 

  9. # pidfile: /var/run/httpd.pid 

  10.  

  11. # Source function library. 

  12. . /etc/rc.d/init.d/functions 

  13.  

  14. if [ -f /etc/sysconfig/httpd ]; then 

  15.         . /etc/sysconfig/httpd 

  16. fi 

  17.  

  18. # Start httpd in the C locale by default. 

  19. HTTPD_LANG=${HTTPD_LANG-"C"} 

  20.  

  21. # This will prevent initlog from swallowing up a pass-phrase prompt if 

  22. # mod_ssl needs a pass-phrase from the user. 

  23. INITLOG_ARGS="" 

  24.  

  25. # Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server 

  26. # with the thread-based "worker" MPM; BE WARNED that some modules may not 

  27. # work correctly with a thread-based MPM; notably PHP will refuse to start. 

  28.  

  29. # Path to the apachectl script, server binary, and short-form for messages. 

  30. apachectl=/usr/local/apache/bin/apachectl 

  31. httpd=${HTTPD-/usr/local/apache/bin/httpd} 

  32. prog=httpd 

  33. pidfile=${PIDFILE-/var/run/httpd.pid} 

  34. lockfile=${LOCKFILE-/var/lock/subsys/httpd} 

  35. RETVAL=0 

  36.  

  37. start() { 

  38.         echo -n $"Starting $prog: " 

  39.         LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS 

  40.         RETVAL=$? 

  41.         echo 

  42.         [ $RETVAL = 0 ] && touch ${lockfile} 

  43.         return $RETVAL 

  44.  

  45. stop() { 

  46.     echo -n $"Stopping $prog: " 

  47.     killproc -p ${pidfile} -d 10 $httpd 

  48.     RETVAL=$? 

  49.     echo 

  50.     [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile} 

  51. reload() { 

  52.     echo -n $"Reloading $prog: " 

  53.     if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then 

  54.         RETVAL=$? 

  55.         echo $"not reloading due to configuration syntax error" 

  56.         failure $"not reloading $httpd due to configuration syntax error" 

  57.     else 

  58.         killproc -p ${pidfile} $httpd -HUP 

  59.         RETVAL=$? 

  60.     fi 

  61.     echo 

  62.  

  63. # See how we were called. 

  64. case "$1" in 

  65.   start) 

  66.     start 

  67.     ;; 

  68.   stop) 

  69.     stop 

  70.     ;; 

  71.   status) 

  72.         status -p ${pidfile} $httpd 

  73.     RETVAL=$? 

  74.     ;; 

  75.   restart) 

  76.     stop 

  77.     start 

  78.     ;; 

  79.   condrestart) 

  80.     if [ -f ${pidfile} ] ; then 

  81.         stop 

  82.         start 

  83.     fi 

  84.     ;; 

  85.   reload) 

  86.         reload 

  87.     ;; 

  88.   graceful|help|configtest|fullstatus) 

  89.     $apachectl $@ 

  90.     RETVAL=$? 

  91.     ;; 

  92.   *) 

  93.     echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}" 

  94.     exit 1 

  95. esac 

  96.  

  97. exit $RETVAL 

第九步:安装mysql

从上面的顺序可看出,下面我们将要演示MySQL安装过程,这里我们先使用5.5这个版本是如何安装的,回头再讲5.6的安装过程。大家要演示的话到mysql的官方网站上去下载(www.mysql.com)。这里就从怎样安装开始讲起。这个时候我们就可以解压【官方要求:但是我们必须要将mysql放到/usr/local下面,并且目录名称还必须是mysql,压缩过去后,我们是重命名还是使用连接?这里最好使用的是连接,这样的它的版本号还有平台这些字符创都会保留着,容易识别正在使用的是什么版本的。

  1. [root@localhost ~]# tar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local  ####由于包有点大所以速度有点慢 

  2.  

  3. [root@localhost local]# ln -sv mysql-5.5.28-linux2.6-i686/ mysql    ####创建连接 

     对我们而言,要想初始化安装mysql,我们就要使用mysql用户mysql组,并且还不能让它登录(不创建家目录)。

实际上在mysql里面有个文件是INSTALL-BINARY,这个文件里面说明了是如何安装的,这里给大家讲解一下,下面就给大家演示一下如何去安装mysql的。

这里我们就可以更改mysql的权限了,更改权限后我们先查看一下scripts下面的脚本,这个脚本是进行初始化的,里面也是有很多选项的,有个选项是—datadir=path,我们要将数据另外保存在什么地方,我们用rpm包安装默认在/var/lib/mysql。我们用编辑的方式安装mysql,它默认都放在/usr/local/mysql/data下面。我们要是把数据放在软件安装路径下面可不是好的选择,我们要给它另找路径,我们知道这个数据是不断变大的,我们最好把它放到逻辑卷中,这样等数据很大的时候我们可以用扩展逻辑卷的方式继续存放数据。这里我们先创建一个20G的逻辑分区,将其设置成逻辑卷类型。

  1. [root@localhost mysql]# chown -R mysql.mysql /usr/local/mysql/* 

  2.  

  3. [root@localhost mysql]# fdisk /dev/sda 

  4.  

  5. [root@localhost mysql]# pvcreate /dev/sda5   ####创建物理卷 

  6.  

  7. [root@localhost mysql]# vgcreate myvg /dev/sda5   ####创建卷组 

  8.  

  9. [root@localhost mysql]# lvcreate -n mydata -L 5G myvg  ####创建5G的逻辑卷 

  10.  

  11. [root@localhost mysql]# mke2fs -j /dev/myvg/mydata  ####格式化为ext3格式 

  12.  

  13. [root@localhost mysql]# mkdir /mydata  ####创建文件夹 

  14.  

  15. [root@localhost mysql]# vim /etc/fstab   ####开机自动挂载 

  16.  

  17. /dev/myvg/mydata        /mydata       ext3    defaults        0 0 

  18.  

  19. [root@localhost mysql]# mount –a  

如果把mydata作为数据目录的话,将来所有文件将直接放到这个分区上了,为了便于管理我们在建立一个子目录data。它的属主属组应该是mysql,但现在是root,所以我们还要更改属主属组。并且其他用户也是不能随意查看的。

  1. [root@localhost mysql]# mkdir /mydata/data 

  2.  

  3. [root@localhost mysql]# chown -R mysql.mysql /mydata/data   ####更改属主、属组 

  4.  

  5. [root@localhost mysql]# chmod o-rx /mydata/data    ####更改其他用户的权限 

这个时候我们就可以执行脚本了,进行初始化。为了安全起见,初始化完成后我们要将mysql下面的属主改为root。【提示:如果你使用的是默认的data,那你还要将data的属主改为mysql,而我们是又创建的文件存放数据,所以这里就不用改了】

  1. [root@localhost mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data 

  2.  

  3. [root@localhost mysql]# chown -R root /usr/local/mysql/* 

第十步:启动mysql

我们这时候是没有脚本的,所以不能用service mysqld start。但是mysql给我们提供的有脚本,在support-files下面有个文件叫mysql.server,这就是它的脚本,我们只需要将它复制过去就行了。

    这个时候我们还不能启动mysql,因为我们还没有设置配置文件,mysql找配置文件的时候先去找/etc/my.cnf,再去找/etc/mysql/my.cnf,找完这里还去找$BNSEDIR/my.cnf。有人问$BNSEDIR是什么?一般来讲就是你的安装目录。下面还去找~/.my.cnf。找完后如果有冲突怎么办?这里就是以最后一个为准(后一个会覆盖前一个)。我们到support-files目录中选择一个配置文件,其中我们要选择合适的,我们就以正确的作为例子,我们这里查看一下文件中的内存是否为我们合适的内存。这里我们选择my-large.cnf,因为我们的内存是512M的,所以这里我们就选择它了。然后我们将它复制到/etc/下面,并命名为my.cnf,然后编辑配置文件。最后启动serice mysqld start。

  1. [root@localhost mysql]# cp support-files/my-large.cnf /etc/my.cnf 

  2.  

  3. [root@localhost mysql]# vim /etc/my.cnf 

  1. [root@localhost mysql]# service mysqld start 

我们编译的时候服务器端和客户端的mysql都装了,我们这里的mysql的二进制也装了,但是找不到,所以我们要给它一个路径这样就行了,这里我们登录一下mysql,结果如下。

  1. [root@localhost mysql]# vim /etc/profile.d/mysql.sh 

  1. export PATH=$PATH:/usr/local/mysql/bin 

第十一步:安装php

这里我们开始安装php,大家去php的官网(http://php.net/downloads.php)下载安装包,php有很多功能都要依赖于你系统上的某些功能的,它可以给我们动态生成图片,但是它要依赖于图片库,如果当前系统上没有图片库,它就没法使用这个功能。这里我们就先解压,解压后我们就可以配置了。

  1. [root@localhost ~]# tar xf php-5.4.13.tar.bz2 

  2.  

  3. [root@localhost ~]# cd php-5.4.13 

  1. [root@localhost php-5.4.13]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2  --enable-maintainer-zts 

  1. 详解: 

  2. --prefix=/usr/local/php   ####安装目录 

  3. --with-mysql=/usr/local/mysql                       ####mysql的位置 

  4. --with-openssl            ####是否支持openssl功能 

  5. --with-mysqli=/usr/local/mysql/bin/mysql_config     ####php与mysql交互的另一个接口(是个二进制程序) 

  6. --enable-mbstring         ####支持中文(非单个字节表示的语言) 

  7. --with-freetype-dir       ####支持fretype功能(fretype是实现引用不同字体的) 

  8. --with-jpeg-dir           ####支持jpg格式的图片 

  9. --with-png-dir            ####支持png格式的图片 

  10. --with-zlib               ####支持通用格式的压缩库 

  11. --with-libxml-dir=/usr    ####xml的库的位置 

  12. --enable-xml              ####支持扩展标记语言 

  13. --enable-sockets          ####支持基于套接字的通信 

  14. --with-apxs2=/usr/local/apache/bin/apxs     ####将它编译成apache的模块 

  15. --with-mcrypt             ####支持加密功能的 

  16. --with-config-file-path=/etc                ####php文件存放的目录(主配置文件为php.ini) 

  17. --with-config-file-scan-dir=/etc/php.d      ####主配置文件有很多片段放的位置(格式是.ini) 

  18. --with-bz2                ####支持压缩库 

  19. --enable-maintainer-zts   ####主要取决于apache的类型(为prefork不用,使用event或worker需要要用)如果apache以线程方式工作必须编译成这种格式 

这里执行后可能会出现错误,因为它所依赖的还有别的库文件不存在,这里我们手动解决依赖关系就行了。我们查看图片出现了错误,它说你没有安装mcrypt相关的软件包,加密不了了。有两种解决方案:一、不适用加密功能把--with-mcrypt给去了。二、使用加密功能,安装mcrypt相关的包。我们这里使用第二中方案。这里我们需要安装四个软件包,一个是mhash,一个是mhash-devel,一个是libmcrypt,最后一个是libmcrypt-devel。

这几个软件包去rpmfind.net上面搜索,里面有很多版本的,我们这里选定的是mhash-0.9.2-6.el5.i386.rpm和mhash-devel-0.9.2-6.el5.i386.rpm。然后我们再上网上下载libmcrypt-2.5.7-5.el5.i386.rpm,libmcrypt-devel-2.5.7-5.el5.i386.rpm软件包,然后解压。解压完成后我们就可以再次执行./configure了。执行完成后我们就可以make和make install。

第十二步:提供配置文件

Php的配置文件比较独特,在/etc/php.ini。php-5.4.13下面有两个文件,一个是php.ini-development用户开发环境的,另一个是php.ini-production用于生产环境的。我们用于生产环境的,把php.ini-production复制到/etc/下并命名为/php.ini。下面我们就说一说如何让apache和php结合起来工作。主要修改apache的配置文件来实现。编辑apache的配置文件,让apache处理php结尾的页面文件,既然我们能够支持php了,我们主页面也应该有以php结尾的页面了。

  1. [root@localhost php-5.4.13]# cp php.ini-production /etc/php.ini 

  2.  

  3. [root@localhost php-5.4.13]# vim /etc/httpd/httpd.conf 

下面我们要进入网页默认目录,然后修改index.html,更改为index.php格式的。然后编辑内容,我们这里用php连接mysql,然后进行测试,我们在把mysql关闭(service mysqld stop)然后在进行测试。

  1. [root@localhost ~]# cd /usr/local/apache/htdocs 

  2.  

  3. [root@localhost htdocs]# mv index.html index.php 

  4.  

  5. [root@localhost htdocs]# vim index.php 

  1. [root@localhost ~]# service mysqld stop 

第十三步:配置xcache

下面我们就实现如何让我们的php支持虚拟主机,但是在支持虚拟主机之前,我们先让我们的php能够使用xcache,对php和opcod进行加速。这里我们直接下载好了,大家做了上网上下载(http://xcache.lighttpd.net/)。我们这里使用的是xcache-2.0版本。xcache的安装比较独特,因为xcache是php的模块准确的说是php的扩展,我们首先要使用php的命令来加载这个扩展,要识别这个扩展。Phpize意思是准备好一个扩展以便进行编译的。Php-config是能够获取php的配置信息,以及编译时候所使用的选项信息的【提示:能够和php-5.4结合工作的只支持xcache2.0及其以后的版本】

  1. [root@localhost ~]# tar xf xcache-2.0.0.tar.bz2 

  2.  

  3. [root@localhost ~]# cd xcache-2.0.0 

  4.  

  5. [root@localhost xcache-2.0.0]# /usr/local/php/bin/phpize   ####【提示:几乎所有扩展在安装之前都要执行这个命令的。】 

  6.  

  7. [root@localhost xcache-2.0.0]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config 

  8.  

  9. --enable-xcache    ####启用xcache功能 

  10.  

  11. --with-php-config=/usr/local/php/bin/php-config   ####php的配置命令 

  12.  

  13. [root@localhost xcache-2.0.0]# make 

安装完成后会在xcache-2.0.0目录下面生成一个文件叫xcache.ini。要想php能够支持xcache这个功能,那就意味着把xcache的配置信息必须要提供到php里面去,所以我们要把xcache.ini追加到php里面去,或者直径将xcache.ini直接复制到php.d下面,不过这个php.d目录是我们手动创建的,复制完成后我们要进行编辑,我们这里只把常用的给列了出来,我们应该重启才能生效,这里要重启web,因为它的模块是被web加载的。我们还需要在/usr/local/apache/htdocs/index.php 添加一项“phpinfo();“,我们在测试一下,由此可见xcache工作起来了。

  1. [root@localhost xcache-2.0.0]# mkdir /etc/php.d 

  2.  

  3. [root@localhost xcache-2.0.0]# cp xcache.ini /etc/php.d 

  4.  

  5. [root@localhost xcache-2.0.0]# vim /etc/php.d/xcache.ini 

  1. [xcache.admin]      ####xcache的管理功能 

  2. xcache.admin.enable_auth = On    ####管理功能认证打开 

  3. xcache.admin.user = "mOo"      ####管理用户是什么 

  4. xcache.admin.pass = md5($your_password)    ####用md5加密的方式加密码 

  5. xcache.admin.pass = ""          ####管理密码是什么 

  6.  

  7. xcache.shm_scheme =        "mmap"    ####使用哪种方式来共享内存,“mmap”内存映射(一个内存可以让多个进程同时访问) 

  8. xcache.size  =               60M     ####用于缓存opcode代码的空间有多大(可修改的) 

  9. xcache.count =                 1     ####设置你的CPU个数 

  10. xcache.slots =                8K     ####在缓存当中,有几个槽位来缓存opcode,并且每个槽位是多大 

  11. xcache.ttl   =                 0     ####过期时间,0表示永不过期 

  12.  

  1. xcache.gc_interval =           0     ####过期的时候都清理出去,我们的垃圾回收器多长时间工作一次,0表示永不工作 

  1. [root@localhost xcache-2.0.0]# service httpd restart 

  2.  

  3. [root@localhost xcache-2.0.0]# vim /usr/local/apache/htdocs/index.php 

 

来自  http://www.uzzf.com/news/7974.html

普通分类: