LNMP(一)

  LNMP环境搭建

LNMP 是一套技术的组合

· L 代表服务器操作系统使用Linux

· N 代表Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。

· M代表网站后台使用的数据库时MySQL数据库

· P代表网站是使用PHP/Perl/Python等语言开发

首先 Nginx 服务是不能处理动态请求,那么当用户发起动态请求时, Nginx 又是如何进行处理的。
当用户发起 http 请求,请求会被 Nginx 处理,如果是静态资源请求 Nginx 则直接返回,如果是动态请求 Nginx 则通过 fastcgi 协议转交给后端的 PHP 程序处理,具体如下图所示。

 

LNMP特点:

LNMP动态网站部署架构是一套由Linux + Nginx + MySQL + PHP组成的动态网站系统解决方案,具有免费、高效、扩展性强且资源消耗低等优良特性

  ​ Nginx是一款相当优秀的用于部署动态网站的轻量级服务程序,它最初是为俄罗斯门户站点而开发的,因其稳定性、功能丰富、占用内存少且并发能力强而备受用户的信赖。目前国内诸如新浪、网易、腾讯等门户站点均已使用了此服务。

  Nginx服务程序的稳定性源自于采用了分阶段的资源分配技术,降低了CPU与内存的占用率,所以使用Nginx程序部署的动态网站环境不仅十分稳定、高效,而且消耗的系统资源也很少。此外,Nginx具备的模块数量与Apache具备的模块数量几乎相同,而且现在已经完全支持proxy、rewrite、mod_fcgi、ssl、vhosts等常用模块。更重要的是,Nginx还支持热部署技术,可以7×24不间断提供服务,还可以在不暂停服务的情况下直接对Nginx服务程序进行升级。

 

1.安装MySQL

(1)下载MySQL安装包,

mysql-5.6.43-linux-glibc2.12-x86_64.tar

(2)解压

    tar –zxvf  mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz –C /usr/local/src

    所有压缩包都放在/usr/local/src目录下,方便统一管理

(3)将解压完的数据移动到/usr/local/mysql,存放MySQL的一些脚本配置文件。

mv mysql-5.6.47-linux-glibc2.12-x86_64 /usr/local/mysql

(4)创建MySQL数据库的用户

[[email protected] mysql]# useradd -s /sbin/nologin mysql

(5)定义数据库安装位置,数据存放位置存放数据的目录赋予他用户组和用户的权限

[[email protected] local]# mkdir -p /data/mysql; chown -R mysql: mysql /data/mysql

(6)看一下我的目录的所属属性是什么:

[[email protected] local]# ls -la /data/mysqll

 

显示SUCCESS就成功了

2.安装 PHP

(1)解压

#cd /usr/local/src

#[[email protected] src]# tar -zxvf php-5.6.24.tar.gz

(2)安装与配置

# yum install -y libxml2-devel

# yum install -y openssl openssl-devel

# yum install -y bzip2 bzip2-devel

# yum install -y libpng libpng-devel

# yum install -y freetype freetype-devel

# yum install -y epel-release

# yum install -y libmcrypt-devel

#yum -y install libjpeg-devel

#yum install -y libcurl-devel

#yum installl -y gcc

#useradd -s /sbin/nologin php-fpm(新建一个用户)

#cd php-5.6.24

编译文件

./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-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 --disable-ipv6 --with-pear --with-curl

--with-openssl

 

(3)安装配置

make && make insatll (时间会很久)

(4)可以看到/sur/local/目录下多了一个php-fpm文件

 LNMP(一)

Php-fpm目录下多了一个sbin和var目录

 

LNMP(一)

(5)将php-ini做一个拷贝

[[email protected] local]# cp /usr/local/src/php-5.6.24/php.ini-production /usr/local/php-fpm/etc/php.ini

(6)接下来我们写一个php-fpm.conf文件

[[email protected] etc]# vim php-fpm.conf

往里添加代码

·   [global] //全局定义

·   pid = /usr/local/php-fpm/var/run/php-fpm.pid

·   error_log = /usr/local/php-fpm/var/run/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

(7)复制一个启动脚本

[[email protected] php-5.6.24]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

(8) 将它加入到服务列表里设置开机自启,并且修改启动脚本,755权限

[[email protected] php-5.6.24]# chkconfig --add php-fpm

[[email protected] php-5.6.24]# chkconfig php-fpm on

[[email protected] php-5.6.24]# chmod 755 /etc/init.d/php-fpm

 

LNMP(一)

(9)检查一下配置文件有没有错

[[email protected] php-5.6.24]# cd /usr/local/php-fpm/

[[email protected] php-fpm]# sbin/php-fpm -t

 

  1. 启动一下服务

[[email protected] php-fpm]# service php-fpm start

 LNMP(一)

启动成功

显示进程

ps -ef | grep php-fpm

LNMP(一)

 

 

3.安装 Nginx

(1)解压安装包,统一放在/usr/local/src/目录下

[[email protected] src]# tar -zxvf nginx-1.16.1.tar.gz 

(2)编译文件 安装make

[[email protected] nginx-1.16.1]# ./configure --prefix=/usr/local/nginx

[[email protected] nginx-1.16.1]# make && make install

(3)编辑一个启动脚本

[[email protected] nginx-1.16.1]# 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

(5)设置开机自启,并且修改启动脚本,755权限

[[email protected] nginx-1.16.1]# chmod 755 /etc/init.d/nginx

[[email protected] nginx-1.16.1]# chkconfig --add nginx

[[email protected] nginx-1.16.1]# chkconfig nginx on

 LNMP(一)

(6)配置另外一个配置文件

因为我们不使用它自带的,所以我们拷贝一下然后重新配置

[[email protected] conf]# mv nginx.conf nginx.conf.default

[[email protected] 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_index index.php;

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

}

}

}

(7)检查配置文件

[[email protected] nginx]# sbin/nginx -t

 LNMP(一)

(8)启动服务

[[email protected]nginx sbin]# /usr/local/nginx/sbin/nginx -s reload

会出现报错

nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"

在运行下面这条命令就好了

[[email protected]nginx sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

(9)查看服务

ps -aux | grep nginx

LNMP(一)

 

(10)curl命令localohst

LNMP(一)

 

(11)自己编辑一个文件curl运行一下

LNMP(一)

LNMP(一)

 

解析成功