Linux运维笔记
我们一直在努力

CentOS 6.5 LAMP(Apache+MySQL+PHP-FPM独立进程运行)源码安装

操作系统:CentOS 6.5

软件版本:

Apache: httpd-2.4.9     (源码)

        apr-1.5.0        (源码)

        apr-util-1.5.3  (源码)

MySQL:  MySQL-5.5.43        (二进制)

PHP:    php-5.4.40      (源码)

        libmcrypt-2.5.8     (源码)

一、安装httpd:

1.yum安装开发包:

        # yum groupinstall -y "Development Tools" "Server Platform Development"

        # yum install -y pcre-devel

2.安装apache运行环境:

    (1)安装apr:       

        1.下载源码包:    wget http://archive.apache.org/dist/apr/apr-1.5.0.tar.bz2

        2.解压源码包:    tar -xf apr-1.5.0.tar.bz2

        3.进入源码目录:   cd apr-1.5.0

        4.进行预编译:    ./configure --prefix=/usr/local/apr

            如果configure最后有报错,直接编辑configure文件,注释这一行  # $RM "$cfgfile"

        5开始编译安装:    make -j 4 && make install

    (2)安装apr-util:

        1.下载源码包:    wget http://archive.apache.org/dist/apr/apr-util-1.5.3.tar.bz2

        2.解压源码包:    tar -xf apr-util-1.5.3.tar.bz2 

        3.进入源码目录:   cd apr-util-1.5.3

        4.进行预编译:    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

        5.开始编译安装:   make -j 4 && make install

3.安装httpd:

    1.下载源码包:    wget http://archive.apache.org/dist/httpd/httpd-2.4.9.tar.bz2

    2.解压源码包:    tar -xf httpd-2.4.9.tar.bz2 

    3.进入源码目录:   cd httpd-2.4.9

    4.进行预编译:    ./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event

        @*@ 常用编译选项说明:
        # # --enable-so                    支持动态模块加载机制
        # # --enable-ssl                    支持https
        # # --enable-cgi                   支持cgi
        # # --enable-rewrite            支持URL重写
        # # --with-zlib                     支持compress传输时做压缩(gzip|deflate)
        # # --with-pcre                    支持perl扩展的正则表达式(需要pcre-devel)
        # # --with-apr=/usr/local/apr   apahce的运行环境(可以理解为运行apache的虚拟机)
        # # --with-apr-util=/usr/local/apr-util
        # # --enable-modules=most       支持哪些模块(most大多数模块|all所有模块)
        # # --enable-mpms-shared=all   支持MPM共享模块机制,ALL编译所有的
        # # --with-mpm=prefork            编译所有的mpm模块,默认启用prefork

    5.开始编译安装:   make -j 4 && make install

二、安装二进制包的MySQL:

1.下载二进制包:   wget http://ftp.hosteurope.de/mirror/archive.mariadb.org//mariadb-5.5.43/bintar-linux-x86_64/mariadb-5.5.43-linux-x86_64.tar.gz

2.解压软件包:    tar -xf mariadb-5.5.43-linux-x86_64.tar.gz 

3.创建目录以及用户组:

    把二进制目录复制到usr目录中 mv mariadb-5.5.43-linux-x86_64 /usr/local/mysql

    创建MySQL用户和组:            useradd -r -s/sbin/nologin mysql

    创建MySQL数据目录 :           mkdir /mydata/data -p

    进入MySQL目录:              cd /usr/local/mysql

    修改MySQL相关目录用户和组:

            # chown mysql. /usr/local/mysql -R

            # chown mysql. /mydata/data -R

4.初始化MySQL: scripts/mysql_install_db --datadir=/mydata/data/ --user=mysql

5.创建MySQL配置目录和修改配置文件

    创建MySQL配置为目录:   mkdir /etc/mysql/

    复制MySQL配置文件:    cp support-files/my-large.cnf /etc/mysql/my.cnf

    修改配置文件中字段:  vim /etc/mysql/my.cnf:

            # datadir = /mydata/data

            # innodb_file_per_table = on

            # skip_name_resolve = on

6.制作Service启动脚本:

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

        # chkconfig --add mysqld

        # chkconfig mysqld on

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

7.启动MySQL:      service mysqld start

8.安全初始化MySQL:   bin/mysql_secure_installation

        Enter current password for root (enter for none): 当前root的密码是什么(刚安装好是空的,所以直接回车)

        Set root password? [Y/n]            是否为root设置密码(选择Y)

        New password:                       键入2次密码

        Re-enter new password:              键入确认密码

        Remove anonymous users? [Y/n]       是否删除匿名用户(选择Y删除)

        Disallow root login remotely? [Y/n] 是否禁止管理员远程登录(为了安装可以Y禁止root远程登录)

        Remove test database and access to it? [Y/n]    是否移除测试数据库(影响不大可以按回车直接留着)

        Reload privilege tables now? [Y/n]  是否要把授权表重载一下(就是 flush privileges,按Y重载)

三、安装编译PHP,以fpm方式:

1.安装依赖包(如果需要rpm安装需要额外的镜像源):

    (1)、安装依赖包:  yum install -y bzip2-devel libmcrypt-devel libxml2-devel

    (2)、安装libmcrypt(原本yum源里没有,如如果需要rpm安装需要额外的镜像源):

            1.下载源码包:    wget https://nchc.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz

            2.解压源码包:    tar -xf libmcrypt-2.5.8.tar.gz 

            3.进入源码目录:   cd libmcrypt-2.5.8

            4.进行预编译:    ./configure --prefix=/usr/local/libmcrypt

            5.开始编译安装:   make -j 4 && make install

2.开始编译安装PHP:

        1.下载源码包:    wget http://cn2.php.net/distributions/php-5.4.40.tar.gz

        2.解压源码包:    tar -xf php-5.4.40.tar.gz 

        3.进入源码目录:   cd php-5.4.40

        4.进行预编译:    ./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 --enable-fpm --with-mcrypt=/usr/local/libmcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2

                不使用--with-apxs2,不然就会被编译成httpd模块

                @*@ 常用编译选项说明:
                # # --with-mysql=/usr/local/mysql      指定MySQL位置
                # # --with-openssl                                支持SSL
                # # --with-mysqli=/usr/local/mysql/bin/mysql_config     对MySQL数据交互的另外一种接口
                # # --enable-mbstring                          支持多字节字符串(对中文支持必须要启用)
                # # --with-freetype-dir                         支持freetype字体格式(支持灵活的多种字体在php页面中处理字体
                # # --with-jpeg-dir                               支持PHP直接去处理jpeg图片
                # # --with-png-dir                                支持PHP直接去处理png图片
                # # --with-zlib                                      压缩库
                # # --with-libxml-dir=/usr                   支持处理xml格式的文档
                # # --enable-xml                                  启动支持xml的功能
                # # --enable-sockets                            支持php基于sockets通信
                # # --enable-fpm                                 启用fpm(实际上是PHP内置的一个能自我提供服务能够监听端口上的服务器程序)
                # # --with-mcrypt=/usr/local/libmcrypt      支持加密解密库
                # # --with-config-file-path=/etc                表示把php.ini放在哪里
                # # --with-config-file-scan-dir=/etc/php.d  指定其他.ini的配置文件放哪里
                # # --with-bz2                                     支持BZ2格式压缩

        5.开始编译安装:make -j 4 && make install

3.初始化PHP:

        1.进入源码包目录:  cd php-5.4.40

        2.复制php配置文件 :   cp php.ini-production /etc/php.ini

        3.复制php-fpm脚本:  cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm

        4.修改启动脚本权限: chmod +x /etc/rc.d/init.d/php-fpm

        5.添加至service中:  chkconfig --add php-fpm

        6.设置PHP为开机启动:   chkconfig php-fpm on

        7.复制FPM配置文件:    cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

4.源码编译Xcache(PHP加速器)[可选择性安装]:

        1.下载源码包:    wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz

        2.解压源码包:    tar -xf xcache-3.2.0.tar.gz

        3.进入源码目录:   cd xcache-3.2.0

        4.在Xcache源码目录生成configure文件(xcache的configure的脚本需要借助于phpize工具程序读取当前模块来生成的):

                # /usr/local/php/bin/phpize

        5.进行预编译:    ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config

                @*@ 常用编译选项说明:
                # # --enable-xcache                                 启用xcache模块
                # # --with-php-config=/usr/local/php/bin/php-config 把他编译成PHP的模块(xcache本质上讲是PHP的扩展)

        6.开始编译安装:   make -j 4 && make install

        7.配置XCACHE:

            make完后会提供对应的模块安装路径:

            /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so

            所以必须编辑PHP的配置文件告诉他有这个模块

            xcache提供了一个样例配置文件:  xcache-3.2.0/xcache.ini

                把xcache.ini放到conf.d目录中: mkdir /etc/php.d;cp xcache.ini /etc/php.d/xcache.ini

                编辑xcache.ini中的参数:           vim etc/php.d/xcache.ini

                    (1)xacache扩展模块路径:       extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so

                    (2)关闭admin管理员验证:        xcache.admin.enable_auth = Off

                    (3)分割多大的内存空间        xcache.size = 60M
                        用来专门为xcache缓存
                        opcode使用

        8.重启php-fpm服务:      service php-fpm restart

        9.检查XCache是否开启: 打开phpinfo页面,查看 XCache 和 XCache Cacher 都已经开启

        10.简单进行压力测试:        ab -c 1000 -n 100000 http://URL/URL.php

                方法:ab [OPTIONS] URL

                    -n:总请求数(在并发的请求上有多少数量)

                    -c:模拟的并发数

                    -k:以持久连接模式测试

                        Linux下每个用户打开的文件数量有限制;1024;由于tcp是通过套接字连接的

                        一个连接即为一个套接字,模拟请求数大于1024,就会超过文件打开数

                                ulimit -n   调整当前用户同时打开的文件数

四、配置httpd连接PHP:

1.配置php:

        PHP-FPM的工作方式跟httpd的prefork一样,一个主进程生成N个子进程,开启的时候,先启动几个空闲进程(最多最少有几个)

        修改fpm配置文件:      vim /usr/local/php/etc/php-fpm.conf

                # listen = 0.0.0.0:9000     PHP作为进程所监听的地址和端口(默认是127.0.0.1:9000)

                # pm = dynamic              以动态方式进行进程管理

                # pm.max_children = 50      刚启动时有多少个进程(默认:5个;就是5个并发)扩展阅读: 数量的多少根据机器内存确定,基本上一个进程需要30M的内存,假设起100个进程,那么就是3000M,3G内存

                # pm.start_servers = 5      刚启动时有多少个进程(默认:2)

                # pm.min_spare_servers = 3  最少空闲进程(默认:1)

                # pm.max_spare_servers = 5  最大空闲进程(默认:3)要和pm.start_servers一样,不然会被杀掉

                # pid = /usr/local/php/var/run/php-fpm.pid      设定pid位置

2.配置httpd:

    修改httpd主配置文件:   vim /etc/httpd24/httpd.conf

            #LoadModule proxy_module modules/mod_proxy.so           启用代理模块

            #LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so 启用代理模块中的fcgi


                AddType application/x-httpd-php .php

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

    在相应虚拟主机配置文件中添加类似如下两行:

                ProxyRequests Off       关闭正向代理

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

                        所有对.php格式结尾的这种URL的请求(以任何内容开始,以.php结尾的请求)

                        都基于fcgi协议送给这个127.0.0.1上的9000端口

                        /PATH/TO/DOCUMENTROOT/就是php网页存放位置

                        $1就是这个"^/(.*\.php)$"模式中所匹配到的页面资源路径

五、测试:编辑PHP,以查看php测试页,并测试PHP与MySQL的连接情况

    # <?php
    #   $conn = mysql_connect('HOST','USERNAME','PASSWORD');
    #   IF ($conn)
    #       echo "OK";
    #   else
    #       echo "FAILURE";

    #   phpinfo();

    #?>

虚拟主机配置模板:

    <VirtualHost *:80>
        DocumentRoot "/www/redppx.cn"
        ServerName redppx.cn
        ServerAlias www.redppx.cn

      ProxyRequests Off
      ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/www/redppx.cn/$1

        <Directory "/www/redppx.cn">
            Options none
            AllowOverride none
            Require all granted
        </Directory>
    </VirtualHost>

 

赞(0) 打赏

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址