LNMP架构(上)

原文链接: https://my.oschina.net/u/3991860/blog/2986233

一、LNMP架构介绍

二、MySQL安装

三、PHP安装

四、Nginx介绍

五、Nginx安装

 

 

一、LNMP架构介绍

和LAMP不同的是,提供web服务的是Nginx

并且php是作为一个独立服务存在的,这个服务叫做php-fpm

Nginx直接处理静态请求,动态请求会转发给php-fpm

Nginx处理静态文件的速度比Apache快

Nginx支持的并发数可以上好几万,Apache达不到

 

LNMP架构(上)_第1张图片

 

 

二、MySQL安装

由于之前搭建LAMP环境,已经安装过mysql,现需先删除之前安装的mysql

先停止mysql服务,确认服务已停止

LNMP架构(上)_第2张图片

删除mysql的安装包和启动脚本

3f29edc32756e8f367461805cd69f325027.jpg

cd /usr/local/src       //进入安装包下载目录

de9a14509a453079b1a4f41bc4b67bde2e8.jpg

 

wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz     //下载软件包,由于之前已经下载,这里就无需再次下载

 

tar zxvf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz      //解压源码包

 

mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql    //将解压后的目录移动位置,并重新命名

LNMP架构(上)_第3张图片

 

cd /usr/local/mysql/           //进入解压包目录

9cc30e81ac1537c314209b730db31591791.jpg

 

useradd mysql          //创建mysql用户,之前已创建,此处无需在创建

 

mkdir /data/            //创建data目录,由于之前已创建过,此处只需清理mysql目录下的数据,或者直接删除data/mysql这个目录

LNMP架构(上)_第4张图片

 

/scripts/mysql_install_db --user=mysql --datadir=/data/mysql      //初始化数据库

 

cp support-files/my-default.cnf  /etc/my.cnf            //拷贝配置文件,由于系统默认就有/etc/my.cnf文件,只需修改即可,无需拷贝

 

vim /etc/my.cnf       //编辑配置文件

LNMP架构(上)_第5张图片

 

 

cp support-files/mysql.server /etc/init.d/mysqld           //拷贝启动脚本

vim /etc/init.d/mysqld            //编辑启动脚本,定义basedir和datadir

LNMP架构(上)_第6张图片

 

/etc/init.d/mysqld start                //启动mysql服务,并检查服务状态

LNMP架构(上)_第7张图片

 

将mysql服务加入到服务列表里面,并设置开机启动

9201bf2fbdb1bacc03817093f08d24a285b.jpg

 

之后就可以使用service mysqld stop 关闭服务,service mysqld start开启服务

LNMP架构(上)_第8张图片

 

 

三、PHP安装

和LAMP安装PHP方法有差别,需要开启php-fpm服务

 

cd /usr/local/src/         //进入下载目录

LNMP架构(上)_第9张图片

 

wget http://cn2.php.net/distributions/php-5.6.30.tar.gz      //由于系统已经下载过源码包,此处无需再下载

 

tar zxf php-5.6.30.tar.gz            //由于已经解压过,此处无需解压

 

cd php-5.6.30          //进入php源码包解压目录

make clean           //删除之前编译的文件

LNMP架构(上)_第10张图片

 

./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl  --with-openssl        //编译

 

 

 

--prefix=/usr/local/php-fpm       指定路径

--with-config-file-path=/usr/local/php-fpm/etc      指定配置文件所在路径

--enable-fpm                                 启动服务

 --with-fpm-user=php-fpm            指定用户

--with-fpm-group=php-fpm           指定组

--with-mysql=/usr/local/mysql            指定mysql路径

--with-mysqli=/usr/local/mysql/bin/mysql_config      指定mysqli的路径

--with-pdo-mysql=/usr/local/mysql           指定pdo-mysql的路径

 --with-mysql-sock=/tmp/mysql.sock          指定mysql-sock的路径

 

LNMP架构(上)_第11张图片

 

 

安装命令:yum install -y libcurl-devel

 

重新执行编译,验证成功

LNMP架构(上)_第12张图片

 

make && make install        //编译安装

验证是否安装成功

LNMP架构(上)_第13张图片

 

查看php-fpm的文件

LNMP架构(上)_第14张图片

 

/usr/local/php-fpm/sbin/php-fpm -m       //加载php哪些模块

 

/usr/local/php-fpm/sbin/php-fpm -i         //查看php的具体信息

 

/usr/local/php-fpm/sbin/php-fpm -t       //测试php配置文件的语法

 

cp php.ini-production /usr/local/php-fpm/etc/php.ini     //拷贝配置文件

db5646a78b844d10761368920a6db3a8821.jpg

 

 

cd /usr/local/php-fpm/etc/    //进入配置文件目录

vim php-fpm.conf                 //创建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]

listen = /tmp/php-fcgi.sock

listen.mode = 666

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

 

1b86dcf6968581a5c49c2d3cba98fedf365.jpg

 

LNMP架构(上)_第15张图片

 

 

cd /usr/local/src/php-5.6.30        //进入源码包目录

cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm      //拷贝启动脚本

fae435387e3b6fe5fba40bd3e3ffbf7abf9.jpg

 

更改启动脚本权限,加入系统服务列表,设置为开机启动服务

2d6404a592065e8469da4dedbbf166b30e8.jpg

 

service php-fpm start         //启动服务

fd42999850cbf74daf114c7338778439e2c.jpg

 

useradd -s /sbin/nologin php-fpm      //创建用户

f16893c0ce1edd3cc78b88b3b35ef065497.jpg

 

重新启动服务,并检查服务是否正在运行

LNMP架构(上)_第16张图片

 

 

四、Nginx介绍

Nginx官网 nginx.org,最新版1.13,最新稳定版1.12

Nginx应用场景:web服务、反向代理、负载均衡

Nginx著名分支,淘宝基于Nginx开发的Tengine,使用上和Nginx一致,服务名,配置文件名都一样,和Nginx的最大区别在于Tenging增加了一些定制化模块,在安全限速方面表现突出,另外它支持对js,css合并

Nginx核心+lua相关的组件和模块组成了一个支持lua的高性能web容器openresty,参考http://jinnianshilongnian.iteye.com/blog/2280928

 

五、Nginx安装

cd /usr/local/src/      //进入源码包下载目录

wget http://nginx.org/download/nginx-1.12.1.tar.gz           //下载源码包

LNMP架构(上)_第17张图片

 

tar zxf nginx-1.12.1.tar.gz       //解压

cd nginx-1.12.1

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

make               //安装

make install        //编译安装

 

查看nginx目录底下有哪些目录文件

LNMP架构(上)_第18张图片

 

 

/usr/local/nginx/sbin/nginx -t          //检测配置文件是否正确

921db30e854aa6d1db5024aab5c1522b236.jpg

 

 

创建启动脚本

 

vim /etc/init.d/nginx         //创建文件,编辑如下内容

#!/bin/bash

# chkconfig: - 30 21

# description: http service.

# Source Function Library

. /etc/init.d/functions

# Nginx Settings

 

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                  //加入系统列表

chkconfig nginx on                    //设置为开机启动

2ad08d5c3ded728833c0b16368e4e1051d7.jpg

 

 

cd /usr/local/nginx/conf/          //进入nginx配置文件路径

LNMP架构(上)_第19张图片

 

mv nginx.conf nginx.conf.bak            //更改原有的配置文件名称

 

重新创建nginx.conf配置配置文件

 

vim 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;

    request_pool_size 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 localhost;

        index index.html index.htm index.php;

        root /usr/local/nginx/html;

 

        location ~ \.php$

        {

            include fastcgi_params;

            fastcgi_pass unix:/tmp/php-fcgi.sock;

            # fastcgi_pass 127.0.0.1:9000

            fastcgi_index index.php;

            fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;

        }    

    }

}

 

LNMP架构(上)_第20张图片

 

 

/usr/local/nginx/sbin/nginx -t          //测试配置文件

9115cd97e9518d046b8729f402dbc7f28d3.jpg

 

/etc/init.d/nginx start       //启动服务

LNMP架构(上)_第21张图片

 

测试访问nginx,访问正常

LNMP架构(上)_第22张图片

 

 

测试nginx解析php

vim /usr/local/nginx/html/1.php            //创建1.php文件,编辑如下测试内容

0ac8eebb3b175d11d98cd7c4ff659cff670.jpg

 

访问1.php

0cafbe735b543e975c30d113474d4892b97.jpg

转载于:https://my.oschina.net/u/3991860/blog/2986233

你可能感兴趣的:(LNMP架构(上))