美文网首页LAMP
CentOS6.5 源码安装Nginx1.8 + PHP7.0.

CentOS6.5 源码安装Nginx1.8 + PHP7.0.

作者: 94f1bd2737e9 | 来源:发表于2016-05-29 17:31 被阅读572次

    准备工作

    使用yum安装相关依赖

    yum install -y gcc gcc-c++ autoconf automake libtool make cmake libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libpng libpng-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl openssl-devel gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel readline-devel libxslt-devel expat-devel xmlrpc-c xmlrpc-c-devel libmcrypt libmcrypt-devel bison-devel
    

    Nginx

    下载安装pcre

    cd /usr/local/src
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
    tar -zxvf ./pcre-8.38.tar.gz
    cd ./pcre-8.38
    ./configure
    make
    make install
    

    下载安装zlib

    cd /usr/local/src
    wget http://zlib.net/zlib-1.2.8.tar.gz
    tar -zxvf ./zlib-1.2.8.tar.gz
    cd ./zlib-1.2.8
    ./configure
    make
    make install
    

    下载openssl

    cd /usr/local/src
    wget https://www.openssl.org/source/openssl-1.0.1t.tar.gz
    tar -zxvf openssl-1.0.1t.tar.gz
    

    下载安装Nginx

    wget http://nginx.org/download/nginx-1.8.1.tar.gz
    tar -zxvf ./nginx-1.8.1.tar.gz
    cd ./nginx-1.8.1
    ./configure --sbin-path=/usr/local/nginx/nginx \
    --conf-path=/usr/local/nginx/nginx.conf \
    --pid-path=/usr/local/nginx/nginx.pid \
    --with-http_ssl_module \
    --with-pcre=/usr/local/src/pcre-8.38 \
    --with-zlib=/usr/local/src/zlib-1.2.8 \
    --with-openssl=/usr/local/src/openssl-1.0.1t
    make
    make install
    

    添加Nginx启动脚本

    vim /etc/init.d/nginx
    # 复制粘贴保存以下内容
    #!/bin/sh
    #
    # nginx - this script starts and stops the nginx daemon
    #
    # chkconfig:   - 85 15
    # description:  NGINX is an HTTP(S) server, HTTP(S) reverse \
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /etc/nginx/nginx.conf
    # config:      /etc/sysconfig/nginx
    # pidfile:     /var/run/nginx.pid
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
    
    nginx="/usr/local/nginx/nginx"
    prog=$(basename $nginx)
    
    NGINX_CONF_FILE="/usr/local/nginx/nginx.conf"
    
    [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
    
    lockfile=/var/lock/subsys/nginx
    
    make_dirs() {
       # make required directories
       user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
       if [ -z "`grep $user /etc/passwd`" ]; then
           useradd -M -s /bin/nologin $user
       fi
       options=`$nginx -V 2>&1 | grep 'configure arguments:'`
       for opt in $options; do
           if [ `echo $opt | grep '.*-temp-path'` ]; then
               value=`echo $opt | cut -d "=" -f 2`
               if [ ! -d "$value" ]; then
                   # echo "creating" $value
                   mkdir -p $value && chown -R $user $value
               fi
           fi
       done
    }
    
    start() {
        [ -x $nginx ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        # make_dirs
        echo -n $"Starting $prog: "
        daemon $nginx -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $lockfile
        return $retval
    }
    
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $lockfile
        return $retval
    }
    
    restart() {
        configtest || return $?
        stop
        sleep 1
        start
    }
    
    reload() {
        configtest || return $?
        echo -n $"Reloading $prog: "
        killproc $nginx -HUP
        RETVAL=$?
        echo
    }
    
    force_reload() {
        restart
    }
    
    configtest() {
      $nginx -t -c $NGINX_CONF_FILE
    }
    
    rh_status() {
        status $prog
    }
    
    rh_status_q() {
        rh_status >/dev/null 2>&1
    }
    
    case "$1" in
        start)
            rh_status_q && exit 0
            $1
        ;;
        stop)
            rh_status_q || exit 0
            $1
        ;;
        restart|configtest)
            $1
        ;;
        reload)
            rh_status_q || exit 7
            $1
        ;;
        force-reload)
            force_reload
        ;;
        status)
            rh_status
        ;;
        condrestart|try-restart)
            rh_status_q || exit 0
        ;;
        *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
    esac
    
    # 保存退出
    :wq
    
    # 为脚本添加执行权限
    chmod +x /etc/init.d/nginx
    # 添加开启启动
    chkconfig --add /etc/init.d/nginx
    # 这样就可以使用以下命令来管理Nginx了
    service nginx start|restart|stop
    

    添加环境变量

    vim /etc/profile
    # 添加这一行
    export PATH=/usr/local/nginx:$PATH
    
    # 保存退出
    :wq
    source /etc/profile
    

    PHP

    下载安装PHP

    cd /usr/local/src
    wget -O php-7.0.6.tar.gz http://cn2.php.net/get/php-7.0.6.tar.gz/from/this/mirror
    tar -zxvf ./php-7.0.6.tar.gz
    cd ./php-7.0.6
    ./buildconf --force
    ./configure \
    --prefix=/usr/local/php \
    --with-config-file-path=/usr/local/php/etc \
    --with-config-file-scan-dir=/usr/local/php/etc/conf.d \
    --enable-fpm \
    --with-fpm-user=web \
    --with-fpm-group=www \
    --enable-soap \
    --with-openssl \
    --with-openssl-dir \
    --with-mcrypt \
    --with-pcre-regex \
    --with-zlib \
    --with-iconv \
    --with-bz2 \
    --enable-calendar \
    --with-curl \
    --with-cdb \
    --enable-dom \
    --enable-exif \
    --with-pcre-dir \
    --enable-ftp \
    --with-gd \
    --with-jpeg-dir \
    --with-png-dir \
    --with-freetype-dir \
    --with-gettext \
    --with-gmp \
    --with-mhash \
    --enable-mbstring \
    --with-libmbfl \
    --with-onig \
    --enable-pdo \
    --with-pdo-mysql \
    --with-zlib-dir \
    --with-readline \
    --enable-session \
    --enable-shmop \
    --enable-simplexml \
    --enable-sockets \
    --enable-sysvmsg \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-wddx \
    --with-libxml-dir \
    --with-xsl \
    --enable-zip \
    --enable-mysqlnd \
    --with-mysqli \
    --without-pear
    make
    make install
    

    复制修改PHP配置文件

    cp /usr/local/src/php-7.0.6/php.ini-production /usr/local/php/etc/php.ini
    vim /usr/local/php/etc/php.ini
    
    ;date.timezone =
    修改为
    date.timezone = PRC
    
    ;cgi.fix_pathinfo=1
    修改为
    cgi.fix_pathinfo=0
    
    # 开启opcache
    zend_extension=opcache.so # 添加这一行
    
    ;opcache.enable=0
    修改为
    opcache.enable=1
    
    ;opcache.enable_cli=0
    修改为
    opcache.enable_cli=1
    

    复制修改PHP-FPM配置文件

    cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
    cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
    
    vim /usr/local/php/etc/php-fpm.conf
    
    ;pid = run/php-fpm.pid
    修改为
    pid = run/php-fpm.pid
    
    # 保存退出
    :wq
    
    vim /usr/local/php/etc/php-fpm.d/www.conf
    
    # 修改PHP-FPM用户
    user = web
    修改为
    user = www
    
    # 修改监听方式
    listen = 127.0.0.1:9000
    修改为
    listen = /usr/local/php/var/run/php-fpm.sock
    
    ;listen.owner = web
    ;listen.group = www
    ;listen.mode = 0660
    修改为
    listen.owner = www
    listen.group = www
    listen.mode = 0660
    
    ;listen.allowed_clients = 127.0.0.1
    修改为
    listen.allowed_clients = 127.0.0.1
    

    添加PHP-FPM启动脚本

    vim /etc/init.d/php-fpm
    
    # 复制粘贴保存以下内容
    #! /bin/sh
    ### BEGIN INIT INFO
    # Provides:          php-fpm
    # Required-Start:    $remote_fs $network
    # Required-Stop:     $remote_fs $network
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: starts php-fpm
    # Description:       starts the PHP FastCGI Process Manager daemon
    ### END INIT INFO
     
    prefix=/usr/local/php
    exec_prefix=${prefix}
     
    php_fpm_BIN=${exec_prefix}/sbin/php-fpm
    php_fpm_CONF=${prefix}/etc/php-fpm.conf
    php_fpm_PID=${prefix}/var/run/php-fpm.pid
     
    php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID"
     
    wait_for_pid () {
        try=0
    
        while test $try -lt 35 ; do
            case "$1" in
                'created')
                    if [ -f "$2" ] ; then
                        try=''
                        break
                    fi
                ;;
                'removed')
                    if [ ! -f "$2" ] ; then
                        try=''
                        break
                    fi
                ;;
            esac
                echo -n .
                try=`expr $try + 1`
                sleep 1
            done
    }
     
    case "$1" in
        start)
            echo -n "Starting php-fpm "
            $php_fpm_BIN --daemonize $php_opts
            if [ "$?" != 0 ] ; then
                echo " failed"
                exit 1
            fi
     
            wait_for_pid created $php_fpm_PID
     
            if [ -n "$try" ] ; then
                echo " failed"
                    exit 1
            else
                echo " done"
            fi
        ;;
     
        stop)
            echo -n "Gracefully shutting down php-fpm "
            if [ ! -r $php_fpm_PID ] ; then
                echo "warning, no pid file found - php-fpm is not running ?"
                exit 1
            fi
     
            kill -QUIT `cat $php_fpm_PID`
            wait_for_pid removed $php_fpm_PID
     
            if [ -n "$try" ] ; then
                echo " failed. Use force-quit"
                exit 1
            else
                echo " done"
            fi
        ;;
     
        force-quit)
            echo -n "Terminating php-fpm "
            if [ ! -r $php_fpm_PID ] ; then
                echo "warning, no pid file found - php-fpm is not running ?"
                exit 1
            fi
     
            kill -TERM `cat $php_fpm_PID`
     
            wait_for_pid removed $php_fpm_PID
     
            if [ -n "$try" ] ; then
                echo " failed"
                exit 1
            else
                echo " done"
            fi
        ;;
     
        restart)
            $0 stop
            $0 start
        ;;
     
        reload)
            echo -n "Reload service php-fpm "
     
            if [ ! -r $php_fpm_PID ] ; then
                echo "warning, no pid file found - php-fpm is not running ?"
                exit 1
            fi
     
            kill -USR2 `cat $php_fpm_PID`
     
            echo " done"
        ;;
     
        *)
            echo "Usage: $0 {start|stop|force-quit|restart|reload}"
            exit 1
        ;;
    esac
    
    # 保存退出
    :wq
    
    # 为脚本添加执行权限
    chmod +x /etc/init.d/php-fpm
    # 添加开启启动
    chkconfig --add /etc/init.d/php-fpm
    # 这样就可以使用以下命令来管理PHP-FPM了
    service php-fpm start|restart|stop
    

    添加环境变量

    vim /etc/profile
    # 添加这一行
    export PATH=/usr/local/php/bin:$PATH
    
    # 保存退出
    :wq
    source /etc/profile
    

    MySQL

    cd /usr/local/src
    wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.12.tar.gz
    wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.12.tar.gz
    tar -zxvf ./mysql-5.7.12.tar.gz
    tar -zxvf ./mysql-boost-5.7.12.tar.gz
    cd ./mysql-5.7.12
    cmake \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DMYSQL_DATADIR=/usr/local/mysql/data \
    -DSYSCONFDIR=/etc \
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_MEMORY_STORAGE_ENGINE=1 \
    -DWITH_READLINE=1 \
    -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
    -DMYSQL_TCP_PORT=3306 \
    -DENABLED_LOCAL_INFILE=1 \
    -DWITH_PARTITION_STORAGE_ENGINE=1 \
    -DEXTRA_CHARSETS=all \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci \
    -DDOWNLOAD_BOOST=1 -DWITH_BOOST=boost
    make
    make install
    

    添加MySQL用户及用户组

    groupadd mysql
    useradd -r -g mysql mysql
    

    修改MySQL目录所属用户

    chown -R mysql:mysql /usr/local/mysql
    

    数据库初始化

    cd /usr/local/mysql
    ./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
    # 查询初始化root用户密码
    cat ~/.mysql_secret
    

    添加MySQL服务

    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
    chkconfig mysql on
    service mysql start
    

    复制MySQL配置文件

    cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
    

    添加环境变量

    vim /etc/profile
    # 添加这一行
    export PATH=/usr/local/mysql/bin:$PATH
    
    # 保存退出
    :wq
    source /etc/profile
    

    让Nginx支持PHP

    cd /usr/local/nginx
    mkdir conf.d
    cd conf.d
    vim php-fpm
    # 添加以下内容
    location ~ \.php$ {
        try_files      $uri = 404;
        fastcgi_pass   unix:/usr/local/php/var/run/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    
    # 保存退出
    :wq
    

    修改Nginx配置文件

    cd /usr/local/nginx
    vim nginx.conf
    
    # 修改为以下内容
    user www;
    worker_processes 1;
    
    events {
        use epoll;
        worker_connections 1024;
    }
    
    
    http {
        include mime.types;
        default_type application/octet-stream;
    
        log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log /usr/local/nginx/logs/access.log main;
    
        sendfile on;
    
        keepalive_timeout 65;
        tcp_nodelay on;
    
        gzip on;
        gzip_disable "MSIE [1-6].";
    
        client_header_buffer_size 128k;
        large_client_header_buffers 4 128k;
    
        include /usr/local/nginx/sites-enabled/*;
    }
    
    # 保存退出
    :wq
    

    添加站点

    mkdir sites-enabled
    cd ./sites-enabled
    vim site
    
    # 复制粘贴以下内容
    server {
        listen 80;
        server_name www.test.com;
    
        root /var/www;
    
        access_log /usr/local/nginx/logs/init.access.log main;
        error_log /usr/local/nginx/logs/init.error.log;
    
        location / {
            index index.php index.html index.htm;
            try_files $uri $uri/ /index.php?$query_string;
            include /usr/local/nginx/conf.d/php-fpm;
        }
    
        location ~ ^/(images|javascript|js|css|flash|media|static)/ {
            expires 30d;
        }
    
        location ~ /.ht {
            deny all;
        }
    }
    
    # 保存退出
    :wq
    

    相关文章

      网友评论

      • JAVA觅音阁:请问openssl下载后为什么没有进行编译安装呢?

      本文标题:CentOS6.5 源码安装Nginx1.8 + PHP7.0.

      本文链接:https://www.haomeiwen.com/subject/rvsqdttx.html