zoukankan      html  css  js  c++  java
  • CentOS 6.5 源码编译搭建LAMP(两台独立主机实现)

    搭建前准备:

      1.两台独立主机

        httpd:192.168.1.105

        php-fpm:192.168.1.105

        mariadb:192.168.1.103

      2.相关软件的源码包

        httpd:httpd-2.4.23

        php:php-5.6.28

        mysql:mariadb-5.5.53

      3.开发环境及依赖包组

        包:apr-1.4+,apr-util-1.4+,pcre-devel;

        包组:Development Tools;Server Platform Development

    开始搭建:

      第一台主机安装httpd和php:

      1.编译安装httpd

        ①编译安装apr-1.4和apr-util-1.4

    /*apr-1.4*/
    ./configure --prefix=/usr/local/apr
    make && make install
    
    /*apr-util-1.4*/
    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
    make && make install

        ②编译安装httpd

    ./configure --prefix=/usr/local/apache2.4 
    --sysconfdir=/etc/httpd2.4  //配置文件存放路径
    --with-zlib  //依赖zlib所提供的压缩功能
    --with-pcre  //支持perl的正则表达式
    --with-mpm=prefork  //指明mpm为prefork模式
    --with-apr=/usr/local/apr  //依赖apr的存放路径
    --with-apr-util=/usr/local/apr-util  //依赖apr-util的存放路径
    --enable-so  //支持DSO机制
    --enable-ssl  //支持ssl
    --enable-cgi  //支持cgi机制
    --enable-rewrite  //支持url重写
    --enable-modules=most  //启用多少模块,有most/all等值
    --enable-mpms-shared=all  //编译哪些MPM模块

        ③导出httpd2.4的头文件

          # ln -sv /usr/local/apache24/include /usr/include/httpd

        ④为httpd2.4提供服务启动脚本

    #!/bin/bash
    #
    # httpd        Startup script for the Apache HTTP Server
    #
    # chkconfig: - 85 15
    # description: The Apache HTTP Server is an efficient and extensible  
    #           server implementing the current HTTP standards.
    # processname: httpd
    # config: /etc/httpd/conf/httpd.conf
    # config: /etc/sysconfig/httpd
    # pidfile: /var/run/httpd/httpd.pid
    #
    ### BEGIN INIT INFO
    # Provides: httpd
    # Required-Start: $local_fs $remote_fs $network $named
    # Required-Stop: $local_fs $remote_fs $network
    # Should-Start: distcache
    # Short-Description: start and stop Apache HTTP Server
    # Description: The Apache HTTP Server is an extensible server 
    #  implementing the current HTTP standards.
    ### END INIT INFO
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    #if [ -f /etc/sysconfig/httpd ]; then
    #        . /etc/sysconfig/httpd
    #fi
    
    # Start httpd in the C locale by default.
    HTTPD_LANG=${HTTPD_LANG-"C"}
    
    # This will prevent initlog from swallowing up a pass-phrase prompt if
    # mod_ssl needs a pass-phrase from the user.
    INITLOG_ARGS=""
    
    # Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
    # with the thread-based "worker" MPM; BE WARNED that some modules may not
    # work correctly with a thread-based MPM; notably PHP will refuse to start.
    
    # Path to the apachectl script, server binary, and short-form for messages.
    apachectl=/usr/local/apache24/bin/apachectl
    httpd=${HTTPD-/usr/local/apache24/bin/httpd}
    prog=httpd
    pidfile=${PIDFILE-/usr/local/apache24/logs/httpd.pid}
    lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
    RETVAL=0
    STOP_TIMEOUT=${STOP_TIMEOUT-10}
    
    # The semantics of these two functions differ from the way apachectl does
    # things -- attempting to start while running is a failure, and shutdown
    # when not running is also a failure.  So we just do it the way init scripts
    # are expected to behave here.
    start() {
            echo -n $"Starting $prog: "
            LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
            RETVAL=$?
            echo
            [ $RETVAL = 0 ] && touch ${lockfile}
            return $RETVAL
    }
    
    # When stopping httpd, a delay (of default 10 second) is required
    # before SIGKILLing the httpd parent; this gives enough time for the
    # httpd parent to SIGKILL any errant children.
    stop() {
        echo -n $"Stopping $prog: "
        killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
    }
    reload() {
        echo -n $"Reloading $prog: "
        if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
            RETVAL=6
            echo $"not reloading due to configuration syntax error"
            failure $"not reloading $httpd due to configuration syntax error"
        else
            # Force LSB behaviour from killproc
            LSB=1 killproc -p ${pidfile} $httpd -HUP
            RETVAL=$?
            if [ $RETVAL -eq 7 ]; then
                failure $"httpd shutdown"
            fi
        fi
        echo
    }
    
    # See how we were called.
    case "$1" in
      start)
        start
        ;;
      stop)
        stop
        ;;
      status)
            status -p ${pidfile} $httpd
        RETVAL=$?
        ;;
      restart)
        stop
        start
        ;;
      condrestart|try-restart)
        if status -p ${pidfile} $httpd >&/dev/null; then
            stop
            start
        fi
        ;;
      force-reload|reload)
            reload
        ;;
      graceful|help|configtest|fullstatus)
        $apachectl $@
        RETVAL=$?
        ;;
      *)
        echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}"
        RETVAL=2
    esac
    
    exit $RETVAL

        将httpd24这个脚本加入到系统服务:

        # chkconfig --add httpd24

        # vim /etc/httpd24/conf/httpd.conf

        

        

        如果基于虚拟主机进行演示的话,此处还需要注释DocumentRoot,此处附上基于虚拟主机配置的配置文件:   

    DirectoryIndex index.php
    <VirtualHost *:80>
            ServerName www.a.com
            DocumentRoot "/usr/local/apache24/www/demo1"
            ProxyRequests Off
            ProxyPassMatch ^/(.*.php)$ fcgi://192.168.1.105:9000/www/test1/$1
            <Directory "/usr/local/apache24/www/demo1">
                    Options None
                    AllowOverride None
                    Require all granted
            </Directory>
    </VirtualHost>

        至此,服务可以正常启动了,接下来开始编译安装php:

        可能需要用到的相关依赖包:

          bzip2-devel,libmcrypt-devel,libxml2-devel

        ①编译安装php

    ./configure --prefix=/usr/local/php56 
    --with-mysql
    --with-openssl
    --with-mysqli
    --enable-mbstring
    --with-png-dir
    --with-jpeg-dir
    --with-freetype-dir
    --with-zlib
    --with-libxml-dir=/usr
    --enable-xml 
    --enable-sockets
    --with-mcrypt
    --with-config-file-path=/etc/php56
    --with-config-file-scan-dir=/etc/php56.d
    --with-bz2
     --enable-fpm  //关键选项

        ②配置文件和服务的相关操作  

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

        #cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm (将php-fpm加入到系统服务中)

        #chkconfig --add php-fpm

            查看添加结果:#chkconfig --list php-fpm

        php-fpm配置文件的相关配置:

        

        配置完成后,创建相应的测试页(在此不再赘述)并启动httpd24和php-fpm服务测试即可,测试效果如下:

        静态资源:

        

        动态资源:

        

       最后的mysql参考lnmp那篇博客,再次不再演示

  • 相关阅读:
    RF基本框架搭建
    Robot Framework连接Oracle数据库
    RF接口测试
    RF-Selenium2Library关键字
    RF-autoit3中有关Send的用法
    RF-selenium2library库
    IPD产品开发流程
    python函数
    python字典
    python元组
  • 原文地址:https://www.cnblogs.com/trymybesttoimp/p/6388931.html
Copyright © 2011-2022 走看看