《手把手博客搭建教程2—LAMP安装配置》

来源:互联网 发布:免费的收银软件 编辑:程序博客网 时间:2024/06/05 19:32

在教程1中我们已经将常用架构进行了详细的分析,这里我们采用经典的LAMP架构,使用centos6.5 + httpd 2.4.4 + mysql-5.6.10 + php-5.6.21。

首先我们先安装apache。

编译安装http2.4.4

一、安装前准备:

确保你的LINUX上已经安装了apr、apr-util。

为什么需要apr、apr-util?

(百度百科:APR(Apache portable Run-time libraries,Apache可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库httpd是用c语言开发的,但它要在不同的平台上运行就需要解决兼容性问题,对此httpd采用了虚拟机技术,就是在httpd与操作系统之间用了一个库。针对不同的系统平台我们仅需要下载安装不同的库即可,而不用去改动httpd。那么,apr和apr-util的作用就在于此。另外,可能有些系统已经自带了apr、apr-util但是一定要和你安装的httpd的版本兼容(具体兼容性可以上apache官网查看。我们的httpd2.4.4使用apr-1.4.6、apr-util-1.4.1)。这里还要注意,如果系统自带的apr与apr-util与httpd版本不兼容,一定不能卸载。因为其他许多软件还依赖于它们。我们只需要将编译安装的新版本放在不同的目录下让httpd使用即可。

(1)编译安装apr

# tar xf apr-1.4.6.tar.bz2
# cd apr-1.4.6
# ./configure –prefix=/usr/local/apr
# make && make install

(2)编译安装apr-util

# tar xf apr-util-1.4.1.tar.bz2
# cd apr-util-1.4.1
# ./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr
# make && make install

(3)安装pcre库

此外,httpd还依赖于pcre库(PCRE是perl语言的缺省正则库),我们可以直接用

# yum install pcre-devel(devel开发包包含开发此包的一些编译支持)

(4)其它

如果你的LINUX连基本的开发环境(gcc、g++、glibc等库)都没有安装的话,那也没有关系,根据报错提示,一步一步安装吧。

二、编译安装httpd

(1)编译安装

# tar xf httpd-2.4.4.tar.bz2
# cd httpd-2.4.4
# ./configure     –prefix=/usr/local/apache   (安装目录)

                        –sysconfdir=/etc/httpd        (配置文件目录)

                        –enable-so      支持动态共享模块,如果没有这个模块PHP将无法与apache结合工作,此模块默认开启除非你把所有模块编译成静态

                        –enable-ssl      (支持ssl)

                        –enable-cgi         (支持非线程MPM即:prefork)

                        –enable-cgid            (支持线程MPM即:worker和event)
                        –enable-rewrite         (支持URL重写)
                        –with-apr=/usr/local/apr   (指定apr路径)

                        –with-apr-util=/usr/local/apr-util    (指定apr-util路径)

                        –enable-modules=most  (安装大多数模块,就包括了FastCGI模块

                        –enable-mods-shared=most (安装大多数共享模块)
                        –enable-mpms-shared=all  (支持全部多道处理prefork、worker、event)

               

使用./configure –help查看所有的编译选项及其含义。

# make && make install

(2)配置

  • 关闭防火墙

       #setenforce 0 
        或者vim /etc/selinux/config 

                permissive

       关闭防火墙,因为防火墙对http程序的启动有影响,如果你不会配置防火墙建议你关闭它。

       这时,你的http就可以启动了

        #cd /usr/local/apache

        #bin/apachectl start 

        可以netstat -ntlp查看可以看到http进程,80端口被监听。但是这种启动方式和我们系统自身的服务进程启动方式相比,太拙劣了,所以我们对其进行改进。

  • 修改httpd的主配置文件,设置其Pid文件的路径

        #vim  /etc/httpd/httpd.conf
        加一行 PidFile  “/var/run/httpd.pid”

  • 提供SysV服务脚本/etc/rc.d/init.d/httpd,自己写的服务脚本可以让httpd以服务形式启动

        httpd服务脚本太长,这里就不贴了,可以去下载 。

        #chmod +x /etc/init.d/httpd    (给执行权限)

        #chkconfig –add httpd     (开机自动启动)

        #chkconfig –list httpd

        这时我们就可以以服务脚本的方式启动httpd服务了。并且可以在通过IP或者域名假如你有的话)来访问你的http页面了。

  • 将http命令路径添加至环境变量中

        #vim /etc/profile.d/httpd.sh

        #export PATH=$PATH:/usr/local/apache/bin

      这时我们就可以直接使用httpd -t来测试httpd.conf的语法。


安装初始化MySql-5.6.10

一、安装前准备:

(1)准备mysql数据盘

        为Mysql准备一个数据盘,将数据单独存放,这样做是比较安全的做法,将磁盘格式化,挂载至特定目录即可。但是若你没有格外的磁盘也没关系,直接新建一个目录作为mysql数据的存放目录。

        #mkdir /mydata/data 

(2)新建用户以安全方式运行数据库进程:
      # groupadd -r mysql                           (添加系统组)
      # useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql  (添加mysql用户)
      # chown -R mysql:mysql  /mydata/data    (修改数据目录的属主属组) 

二、安装初始化mysql

(1)安装mysql

        # tar xf mysql-5.6.10-linux-glibc2.5-x86_64 -C /usr/local   (注意下载对应的mysql版本,这里是64位。通用二进制格式不用编译)

        # cd /usr/local/

        # ln -sv mysql-5.6.10-linux-glibc2.5-x86_64  mysql

        # cd mysql 

          #cat INSTALL-BINBARY  (查看安装帮助文档)

        # chown -R mysql:mysql  .    (先修改mysql目录的属组属主为mysql因为接下来的初始化mysql进程需要对该目录有写权限)

        # scripts/mysql_install_db –user=mysql –datadir=/mydata/data   (mysql初始化)

        # chown -R root  .   (将mysql目录属主改回来)


(2)为mysql提供主配置文件:

        # cd /usr/local/mysql

        # cp support-files/my-default.cnf /etc/my.cnf

        另外还需要添加如下行指定mysql数据文件的存放位置:

        #vim /etc/my.cnf

        datadir = /mydata/data

(3)为mysql提供sysv服务脚本,让其可以以服务的形式启动:

        # cd /usr/local/mysql

        # cp support-files/mysql.server  /etc/rc.d/init.d/mysqld

        # chmod +x /etc/rc.d/init.d/mysqld

        添加至服务列表:

        # chkconfig –add mysql        

        而后就可以启动服务测试使用了。

        #service mysqld start

        #netstat -tnlp   (查看mysqld服务端口3306是否已被监听)

(4)修改PATH环境变量,让系统可以直接使用mysql的相关命令。

        #vim /etc/profile.d/mysql.sh

        #export PATH=$PATH:/usr/local/mysql/bin

(5)启动

        #mysql

      因为后续的其他软件可能需要使用mysql,所以我们需要将其开发组件导出给系统使用:

(6)输出mysql的帮助手册至man命令的查找路径:

        编辑/etc/man.config,添加如下行即可:

        MANPATH  /usr/local/mysql/man


(7)输出mysql的头文件至系统头文件路径/usr/include:

        这可以通过简单的创建链接实现:

        # ln -sv /usr/local/mysql/include  /usr/include/mysql

(8)输出mysql的库文件给系统库查找路径:

        # vim /etc/ld.so.conf.d/mysql.conf

        添加/usr/local/mysql/lib

        而后让系统重新载入系统库:

        # ldconfig

编译安装php-5.6.21

这里需要说明一点:我们这里选择php与apache的结合方式为Fastcgi方式,关于php与apache的结合方式的我在《Php与Apache的三种结合方式以及各自优缺点》这篇文章中有详细的介绍。

一、安装前准备

安装前需要先解决依赖关系:

    libmcrypt

    libmcrypt-devel

    mhash

    mhash-devel

 libxml2

 libxml2-devel

 bzip2

二、安装配置php

(1)编译安装php

# tar xf php-5.6.21.tar.bz2
# cd php-5.6.21
# ./configure      –prefix=/usr/local/php       (安装路径)

                        –with-mysql=/usr/local/mysql     (mysql的路径)    

                        –with-openssl       (支持ssl功能)

                        –with-mysqli=/usr/local/mysql/bin/mysql_config    (mysql的另一种php访问接口)

                        –enable-mbstring     (支持mbstring编码库)

                        –with-freetype-dir       (支持字体库)

                        –with-jpeg-dir           (支持jpeg格式图片)

                        –with-png-dir             (支持png格式图片)

                        –with-zlib                    (支持互联网常用的通用格式压缩库)

                        –with-libxml-dir=/usr     (扩展标记语言,实现数据交互)

                        –enable-xml              (支持xml语言)

                        –enable-sockets            (支持基于套接字的通信)

                        –enable-fpm                 (成为apache的fastcgi模块)

                        –with-mcrypt                  (支持额外的加密库)

                        –with-config-file-path=/etc    (配置文件路径)

                        –with-config-file-scan-dir=/etc/php.d    (配置文件的另外路径)

                        –with-bz2             (支持压缩库)

                        –disable-fileinfo     (防止因内存过小而编译出错)

#make

#make install

(2)配置php-fpm

  • 为php提供配置文件:

        # cp php.ini-production  /etc/php.ini

  • 为php-fpm提供Sysv init脚本,并将其添加至服务列表:

        # cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm
        # chmod +x /etc/rc.d/init.d/php-fpm
        # chkconfig –add php-fpm
        # chkconfig php-fpm on

  • 为php-fpm提供配置文件:

        # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf 
        # vim /usr/local/php/etc/php-fpm.conf

  • 配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):

        pm.max_children = 50
        pm.start_servers = 5
        pm.min_spare_servers = 2
        pm.max_spare_servers = 8

  • 接下来就可以启动php-fpm了:

        # service php-fpm start

  • 验证php-fpm是否启动开始工作:

# netstat -tnlp | grep php-fpm

tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      24344/php-fpm 

        默认情况下,fpm监听在127.0.0.1的9000端口,也可以使用如下命令验正其是否已经监听在相应的套接字。

配置httpd-2.4.4以Fastcgi模式支持php

一、配置httpd的支持php

    (1)启用httpd的相关模块

        #vim /etc/httpd.conf

        找以下两行:

        #LoadModule proxy_module modules/mod_proxy.so           

        #LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so   (加载fastcgi模块)

        去掉前面的#号将其激活。(在httpd 2.4.4中有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载)

     (2)让apache能识别php格式的页面,并支持php格式的主页

       # vim /etc/httpd/httpd.conf

        添加如下二行AddType application/x-httpd-php  .php 

        AddType application/x-httpd-php-source  .phps

        定位至DirectoryIndex 

        index.html 修改为:DirectoryIndex  index.php  index.html

    (3)配置虚拟主机或主机支持使用FCGI

  • ProxyRequests Off            

        ProxyPassMatch   ^/(.*\.php)$    fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1    

        打开httpd.conf,找到DocumentRoot,将以上俩句加到的DocumentRoot的下一行。

        若使用虚拟主机就将以上俩句加到httpd-vhosts.conf文件虚拟主机的DocumentRoot的下一行。

  • 解释

        ProxyRequests Off:关闭正向代理
        ProxyPassMatch     ^/(.*\.php)$      fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1:
        ProxyPassMatch:带匹配检测的反向代理,即当有客户端请求这个文件,我们的服务器本身没有这个目录,也
        有这个内容,我们的服务器到另一台服务器去取,然后再返回给客户端。
        ^/(.*\.php)$: 正则表达式,表示以/开头中间是任意字符,最后以.php结尾。

        fcgi:服务器以fcgi协议工作,则使用fcgi协议

   至此,你博客的后台架构就全部搭建完成,接下来就是优化配置、安装开源博客程序(如果你的网站编程能力很强,也可以自己编写博客程序)。