源码编译安装lnmp环境(nginx-1.14.2 + mysql-5.6.43 + php-5.6.30 )------踩了无数坑,重装了十几次服务器才会的,不容易啊!

 

和LAMP不同的是,LNMP中的N指的是Nginx(类似于Apache的一种web服务软件),并且php是作为一个独立服务存在的,这个服务叫做php-fpm,Nginx直接处理静态请求,动态请求会转发给php-fpm。

 

目前LNMP环境的应用非常多。在静态页面的处理上,Nginx比Apache更强;但在动态页面的处理上,Nginx并不占优势。

 

安装顺序nginx -- php ---  mysql

安装php-5.6.30:

1 环境准备

yum install gcc bison bison-devel zlib-devel libmcrypt-devel mcrypt mhash-devel openssl-devel libxml2-devel libcurl-devel bzip2-devel readline-devel libedit-devel sqlite-devel jemalloc jemalloc-devel

yum install libpng
yum install libpng-devel
yum -y install libjpeg-devel
yum install freetype-devel

cd /usr/local

mkdir php-fpm

cd /usr/local/src

wget http://cn2.php.net/distributions/php-5.6.30.tar.gz

tar zvxf php-5.6.30.tar.gz

cd php-5.6.30

groupadd www

useradd -g www -s /sbin/nologin www

 

 

2 编译安装 (##编译参数)

./configure --prefix=/usr/local/php-fpm \
--with-config-file-path=/usr/local/php-fpm/etc \
--enable-inline-optimization --disable-debug \
--disable-rpath --enable-shared --enable-opcache \
--enable-fpm --with-fpm-user=www \
--with-png-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-gd \
--with-fpm-group=www \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-gettext \
--enable-mbstring \
--with-iconv \
--with-mcrypt \
--with-mhash \
--with-openssl \
--enable-bcmath \
--enable-soap \
--with-libxml-dir=/usr/ \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-sockets \
--with-curl --with-zlib \
--enable-zip \
--with-bz2 \
--with-readline

##参数解释

""" 安装路径 """
--prefix=/usr/local/php56 \
""" php.ini 配置文件路径 """
--with-config-file-path=/usr/local/php56/etc \
""" 优化选项 """
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
""" 启用 opcache,默认为 ZendOptimizer+(ZendOpcache) """
--enable-opcache \
""" FPM """
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
""" MySQL """
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
""" 国际化与字符编码支持 """
--with-gettext \
--enable-mbstring \
--with-iconv \
""" 加密扩展 """
--with-mcrypt \
--with-mhash \
--with-openssl \
""" 数学扩展 """
--enable-bcmath \
""" Web 服务,soap 依赖 libxml """
--enable-soap \
--with-libxml-dir \
""" 进程,信号及内存 """
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
""" socket & curl """
--enable-sockets \
--with-curl \
""" 压缩与归档 """
--with-zlib \
--enable-zip \
--with-bz2 \
""" GNU Readline 命令行快捷键绑定 """
--with-readline
 

3. 编译安装

make && make install

如下图 ,不抱任何错误

 

 

4.配置服务

配置文件

cp php.ini-development /usr/local/php-fpm/etc/php.ini
cp /usr/local/php-fpm/etc/php-fpm.conf.default /usr/local/php-fpm/etc/php-fpm.conf

5 .修改配置

vim /usr/local/php-fpm/etc/php-fpm.conf

[global]
pid =/usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log

[www]

 

 

 

 6. 保存配置文件后,检验配置是否正确的方法如下:

/usr/local/php-fpm/sbin/php-fpm -t

如果显示 "test is successful",说明配置没有问题,否则就要根据提示检查配置文件.

 

 

7.启动 php-fpm,命令如下:

cp /usr/local/src/php-5.6.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

chmod 755 /etc/init.d/php-fpm

useradd -s /sbin/nologin php-fpm

service php-fpm start

设置php-fpm开启启动命令如下:

chkconfig php-fpm on

检测php-fpm是否启动的命令如下:

ps aux |grep php-fpm

执行这条命令,可以看见多个进程

 

 

 

安装nginx-1.14.2:

 

先不要急着安装,先确保它所依赖的库是否有,怎样查看软件是否安装(rpm -q xxx),如果没有安装依赖则进行安装(笔者一般安装依赖库直接使用yum 默认安装,这样在软件安装的时候就不需要知道依赖库的安装路径,省去不少麻烦) 

 

需要安装的依赖包有 gcc  expat-devel  openssl-devel pcre pcre-devel

 

 

在src目录下 yum install gcc 

yum install -y expat-devel 

yum install openssl-devel

yum install -y pcre pcre-devel

yum install pcre-devel

 

 

1:在/usr/local下创建一个nginx目录

cd /usr/local

mkdir nginx

cd /usr/local/src

wget http://nginx.org/download/nginx-1.14.2.tar.gz

tar zxvf nginx-1.14.2.tar.gz

2.配置编译选项

cd nginx-1.14.2

./configure --prefix=/usr/local/nginx

3.编译和安装

make && make install

4.编写nginx启动脚本,并加入系统服务

vim /etc/init.d/nginx 

#!/bin/bash
#chkconfig: - 30 21
#description: http service.
#Source Function Library
. /etc/init.d/functions

NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"

start()
{
        echo -n $"Starting $prog: "
        mkdir -p /dev/shm/nginx_temp
        daemon $NGINX_SBIN -c $NGINX_CONF
        RETVAL = $?
        echo 
        return $RETVAL
}

stop()
{
        echo -n $"Stopping $prog: "
        killproc -p $NGINX_PID $NGINX_SBIN -TERM
        rm -rf /dev/shm/nginx_temp
        RETVAL = $?
        echo 
        return $RETVAL
}       

reload()
{
        echo -n $"Reloading $prog: "
        killproc -p $NGINX_PID $NGINX_SBIN -HUP
        RETVAL = $? 
        echo
        return $RETVAL
}

restart()
{
        stop
        start
}

configtest()
{
        $NGINX_SBIN -c $NGINX_CONF -t
        return 0
}

case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        reload)
                reload
                ;;
        restart)
                restart
                ;;
        configtest)
                configtest
                ;;
        *)
                echo $"Usage: $0 {start|stop|reload|restart|configtest}"
                RETVAL=1
esac

exit $RETVAL

 

 

保存该脚本后更改权限,命令如下:

chmod 755 /etc/init.d/nginx

chkconfig --add nginx

如果想开启启动nginx,请执行命令如下:

chkconfig nginx on

5.更改nginx的配置文件:

> /usr/local/nginx/conf/nginx.conf

重定向符号>,单独使用时,可以吧一个文本文档快速清空

vim /usr/local/nginx/conf/nginx.conf   //写入如下内容:

#vim  /usr/local/nginx/conf/nginx.conf
user nobody nobody;
worker_processes 2;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;

events
{
        use epoll;
        worker_connections 6000;
}       

http
{
        include mime.types;
        default_type application/octet-stream;
        server_names_hash_bucket_size 3526;
        server_names_hash_max_size 4096;
        log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
        ' $host "$request_uri" $status'
        ' "$http_referer" "$http_user_agent"';
        sendfile on;
        tcp_nopush on;
        keepalive_timeout 30;
        client_header_timeout 3m;
        client_body_timeout 3m;
        send_timeout 3m;
        connection_pool_size 256;
        client_header_buffer_size 1k;
        large_client_header_buffers 8 4k;
        output_buffers 4 32k;
        postpone_output 1460;
        client_max_body_size 10m;
        client_body_buffer_size 256k;
        client_body_temp_path /usr/local/nginx/client_body_temp;
        proxy_temp_path /usr/local/nginx/proxy_temp;
        fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
        fastcgi_intercept_errors on;
        tcp_nodelay on;
        gzip on;
        gzip_min_length 1k;
        gzip_buffers 4 8k;
        gzip_comp_level 5;
        gzip_http_version 1.1;
        gzip_types text/plain application/x-javascript text/css text/htm
        application/xml;

        server 
        {
                listen 80;
                server_name ax.xxx.xxb;
                index index.html index.htm index.php;
                root /usr/local/nginx/html;

                location ~ \.php$
                {
                        include fastcgi_params;
                        fastcgi_pass 127.0.0.1:9000;    
                        fastcgi_index index.php;
                        fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;


                }
        }

}

 

 

 

 6. 保存配置文件后,检验配置是否正确的方法如下:

/usr/local/nginx/sbin/nginx -t

如果显示 "test is successful",说明配置没有问题,否则就要根据提示检查配置文件.

 

7.启动nginx,命令如下:

service nginx start

重启 service nginx restart

 

 

 

 8.测试是否正确解析php

vim /usr/local/nginx/html/index.php

其内容如下

<?php

echo phpinfo();

 

 

安装mysql-5.6.43(与之前一模一样)

https://www.cnblogs.com/yehuisir/p/10061789.html

 

------------------------------------------------------------------------额外补充-----------------------------------------------------------------------------------

 nginx.conf

#vim  /usr/local/nginx/conf/nginx.conf

user nobody nobody;
worker_processes 2;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;

events
{
    use epoll;
    worker_connections 6000;
}

http
{
    include mime.types;
    default_type application/octet-stream;
    server_names_hash_bucket_size 3526;
    server_names_hash_max_size 4096;
    log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
    ' $host "$request_uri" $status'
    ' "$http_referer" "$http_user_agent"';
    sendfile on;
tcp_nopush on;
    keepalive_timeout 30;
    client_header_timeout 3m;
    client_body_timeout 3m;
    send_timeout 3m;
    connection_pool_size 256;
    client_header_buffer_size 1k;
    large_client_header_buffers 8 4k;
    output_buffers 4 32k;
    postpone_output 1460;
    client_max_body_size 10m;
    client_body_buffer_size 256k;
    client_body_temp_path /usr/local/nginx/client_body_temp;
    proxy_temp_path /usr/local/nginx/proxy_temp;
    fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
    fastcgi_intercept_errors on;
    tcp_nodelay on;
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 8k;
    gzip_comp_level 5;
    gzip_http_version 1.1;
    gzip_types text/plain application/x-javascript text/css text/htm
    application/xml;
    
    server
    {
        listen 80;
        server_name xxx.nxxx.cxx;
        index index.html index.htm index.php;
        root /usr/local/nginx/html;

        location ~ \.php$
        {
            include fastcgi_params;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;        

    
        }
    }
    
    server 
        {
                listen 80;
                server_name axxl.xxx.xxx;
                index index.html index.htm index.php;
                root /usr/local/nginx/html;

                location ~ \.php$
                {
                        include fastcgi_params;
                        fastcgi_pass 127.0.0.1:9000;
                        fastcgi_index index.php;
                        fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;


                }
        }
    
    server {  
            listen       80;  
            server_name  blxxx.xxx.xxx;  
            root /usr/local/nginx/html/xxxg/public;  
            index  index.html index.htm index.php;  
            location / {  
                if (!-e $request_filename) {  
                    rewrite ^(.*)$ /index.php?s=$1 last;  
                    break;  
                }  
            }  
            error_page   500 502 503 504  /50x.html;  
            location = /50x.html {  
                root   html;  
            }  
            location ~ \.php$ {  
               fastcgi_pass   127.0.0.1:9000;  
               fastcgi_index index.php;  
               include fastcgi_params;  
               set $real_script_name $fastcgi_script_name;  
               if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {  
                   set $real_script_name $1;  
                   set $path_info $2;  
               }  
               fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;  
               fastcgi_param SCRIPT_NAME $real_script_name;  
               fastcgi_param PATH_INFO $path_info;  
            }  
            location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {  
                expires 30d;  
                access_log off;  
            }  
            location ~ .*\.(js|css)?$ {  
                expires 7d;  
                access_log off;  
           }  
    }      

}

 

 

 


 

 

 

 

 

 

 

posted @ 2019-02-10 23:04  搬砖小伙子  阅读(321)  评论(0编辑  收藏  举报