CentOS 7 手动编译LNMP环境

2015/07/1414:22:26 发表评论

1、安装必须的开发库

yum install ntp wget cpp gcc gcc-c++ gcc-g77 make unzip libtool \
libtool-ltdl-devel libc-client-devel libstdc++-devel db4-utils libcap-devel \
expat-devel perl pam-devel perl-Time-HiRes libaio-devel bzr patch bzip2-devel \
cmake bison libevent-devel ncurses-devel openssl-devel zlib-devel curl-devel \
libxml2-devel tcp_wrappers-devel nasm lemon flex libXpm-devel fontconfig-devel \
pcre-devel sqlite-devel perl-ExtUtils-Embed neon-devel

2、源码包

mysql-5.5.34.tar.gz

php-5.6.10.tar.gz

nginx-1.8.0.tar.gz

libmcrypt-2.5.7.tar.gz

将以上几个源码包都放在~/soft目录下,cd之

3、编译mysql

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1
make
make install
#新增mysql组
groupadd mysql 
#新增mysql用户
useradd -r -g mysql mysql 
cd /usr/local/lnmp/mysql
chown mysql:mysql -R *
scripts/mysql_install_db --user=mysql --datadir=/usr/local/lnmp/mysql/data
cp /usr/local/lnmp/mysql/support-files/my-default.cnf   /etc/my.cnf 
cp /usr/local/lnmp/mysql/support-files/mysql.server /etc/init.d/mysqld

参考文章:http://www.cnblogs.com/apexchu/p/4245278.html

4、编译安装libmcrypt-2.5.7.tar.gz

tar zxvf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure
make
make install

5、安装php

tar zxvf php-5.6.10.tar.gz
cd php-5.6.10
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --enable-inline-optimization --enable-shared --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=/usr/local/lnmp/mysql --enable-sockets --enable-pdo --with-pdo-mysql
make
make install

修改/usr/local/lnmp/php/etc/php-fpm.conf

[global]
pid = run/php-fpm.pid
log_level = error 
 
[www]
user = www
group = www

listen = /tmp/php-fcgi.sock
listen.owner = www
listen.group = www
 
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

chroot=/usr/local/lnmp/nginx/html

6、安装nginx

tar zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure --prefix=/usr/local/lnmp/nginx --sbin-path=/usr/local/lnmp/nginx/sbin/nginx --conf-path=/usr/local/lnmp/nginx/conf/nginx.conf --error-log-path=/tmp/nginx_error.log --http-log-path=/tmp/nginx_access.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --user=www --group=www --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --http-proxy-temp-path=/tmp/ --http-fastcgi-temp-path=/tmp --with-pcre
make 
make install

修改nginx配置文件/usr/local/lnmp/nginx/conf/nginx.conf,没有什么什么优化处理,支持PATHINFO:

worker_processes  1;
user www www;
error_log  logs/error.log;
events {
    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  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    gzip  on;
    server {
        listen       80;
        server_name  localhost;
        charset utf-8;
        location / {
            root   html;
            index  index.html index.htm index.php;
            if (!-e request_filename) {
                    rewrite  ^/(.*)  /index.php/1  last;
                    break;
            }
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~ .+\.php(|/) {  
                set script uri;  
                set path_info "/";  
                if (uri ~ "^(.+\.php)(/.+)") {  
                        set script     1;  
                        set path_info  2;  
                }  
                fastcgi_pass unix:/tmp/php-fcgi.sock;
                fastcgi_index index.php;
                include fastcgi_params;  
                fastcgi_param PATH_INFO path_info;  
                fastcgi_param SCRIPT_NAME script;  
                fastcgi_param  SCRIPT_FILENAME  /script;
        }  
    }
}

编写nginx启动脚本,将之放入/etc/init.d目录中:

#! /bin/sh
# chkconfig: 2345 55 25
# Description: Startup script for nginx webserver on Debian. Place in /etc/init.d and
# run 'update-rc.d -f nginx defaults', or use the appropriate command on your
# distro. For CentOS/Redhat run: 'chkconfig --add nginx'
### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    all
# Required-Stop:     all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFO
# Author:   guozi
# website:  http://lnmp.org
. /etc/init.d/functions
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=nginx
NGINX_BIN=/usr/local/lnmp/nginx/sbin/NAME
CONFIGFILE=/usr/local/lnmp/nginx/conf/NAME.conf
PIDFILE=/var/run/NAME.pid
SCRIPTNAME=/etc/init.d/NAME
case "1" in
        start)
                echo -n "Starting NAME... "
                if netstat -tnpl | grep -q nginx;then
                echo "NAME (pid `pidof NAME`) already running."
                exit 1
                fi
                NGINX_BIN -c CONFIGFILE
                if [ "?" != 0 ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        stop)
                echo -n "Stoping NAME... "
                if ! netstat -tnpl | grep -q nginx; then
                        echo "NAME is not running."
                        exit 1
                fi
                NGINX_BIN -s stop
                for nid in `ps aux | grep "nginx:" | grep -v grep | awk '{print 1}'`
                do
                        kill -9 nid >/dev/null 2>&1
                done
                if [ "?" != 0 ] ; then
                        echo " failed. Use force-quit"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        status)
                if netstat -tnpl | grep -q nginx; then
                        PID=`pidof nginx`
                        echo "NAME (pid PID) is running..."
                else
                        echo "NAME is stopped"
                        exit 0
                fi
        ;;
        force-quit)
                echo -n "Terminating NAME... "
                if ! netstat -tnpl | grep -q nginx; then
                        echo "NAME is not running."
                        exit 1
                fi
                kill `pidof NAME`
                if [ "?" != 0 ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        restart)
                SCRIPTNAME stop
                sleep 1
                SCRIPTNAME start
        ;;
        reload)
                echo -n "Reload service NAME... "
                if netstat -tnpl | grep -q nginx; then
                        NGINX_BIN -s reload
                        echo " done"
                else
                        echo "NAME is not running, can't reload."
                        exit 1
                fi
        ;;
        configtest)
                echo -n "Test NAME configure files... "
                NGINX_BIN -t
        ;;
        *)
                echo "Usage: SCRIPTNAME {start|stop|force-quit|restart|reload|status|configtest}"
                exit 1
        ;;
esac

7、编写LNMP启动、停止总脚本,方便测试

#!/bin/bash

PHPFPM=/usr/local/lnmp/php/sbin/php-fpm
PHPFPM_CONFIG=/usr/local/lnmp/php/etc/php-fpm.conf

start()
{
        /etc/init.d/mysqld start
        /etc/init.d/nginx start
        PHPFPM -y PHPFPM_CONFIG
}

stop()
{
        killall -9 php-fpm
        /etc/init.d/mysqld stop
        /etc/init.d/nginx stop

}
case "$1" in
    'start')
        start
        ;;
    'stop')
        stop
        ;;
    'restart')
        stop
        start
        ;;
    '*')
        echo "No such selection"
        ;;
esac

 

  • 微信扫码赞助
  • weinxin
  • 支付宝赞助
  • weinxin

发表评论

您必须才能发表评论!