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

CentOS 6.5 LAMP(Apache+MySQL+PHP模块方式)源码安装

操作系统: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+PHP常见的2种结合方式:

(1)、modules(模块):

    把PHP编译成httpd的DSO对象,PHP直接作为Apache的模块来执行,这不会产生子进程的概念,如果有请求请求PHP内容的话,我们httpd自己家就能完成运行了,只不过要借助于这个扩展模块来实现。
    而在模块化中,PHP是与Web服务器一起启动并运行的。(它是apache在CGI的基础上进行的一种扩展,加快PHP的运行效率)。

        MPM/prefork         模块:libphp5.so
        MPM/event or worker 模块:libphp5-zts.so

(2)、fpm(基于fastcgi实现):php作为独立的服务fastcgi(fpm)

        httpd-2.2 fcgi模块需要以打补丁的方式实现
        httpd-2.4 fcgi模块自带

一、安装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,以Module方式:

**如果要译连接MySQL驱动,首先知道MySQL在什么地方、什么版本,才可以编译自己内部的驱动的**

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 --enable-maintainer-zts --with-apxs2=/usr/local/httpd/bin/apxs

                @*@ 常用编译选项说明:
                # # --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通信
                # # --with-mcrypt=/usr/local/libmcrypt      支持加密解密库
                # # --with-config-file-path=/etc            表示把php.ini放在哪里
                # # --with-config-file-scan-dir=/etc/php.d  指定其他.ini的配置文件放哪里
                # # --with-bz2                              支持BZ2格式压缩
                # # --enable-maintainer-zts                 如果httpd是以worker、event工作,同时PHP编译成apache的模块使用的话就要启用这个选项
                # # --with-apxs2=/usr/local/httpd/bin/apxs  把php变成httpd模块(如果对httpd做第三方模块编译必须要有apxs接口)

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

3.源码编译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.重启httpd服务:        httpd -k graceful

        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:

            # cd php-5.4.40

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

2.配置httpd:

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

            # AddType application/x-httpd-php .php      把所有.php都识别为application/x-httpd-php这种MIME类型(对于这种类型要调用php模块来进行处理)

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

            # DirectoryIndex index.html index.php       添加index.php

            # LoadModule php5_module modules/libphp5.so 确认是否已经在主配置文件中加载php模块

五、测试:编辑PHP,以查看php测试页,并测试PHP与MySQL的连接情况(PHP7中不适用)

    # <?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

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

    </VirtualHost>

 

赞(0) 打赏

评论 抢沙发

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