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数据库的用户

[root@lnmp mysql]# useradd -s /sbin/nologin mysql

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

[root@lnmp local]# mkdir -p /data/mysql; chown -R mysql: mysql /data/mysql

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

[root@lnmp local]# ls -la /data/mysqll

 

显示SUCCESS就成功了

2.安装 PHP

(1)解压

#cd /usr/local/src

#[root@lnmp 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文件

 

zabbix lnmp还有什么 lnmp作用_lnmp

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

 

zabbix lnmp还有什么 lnmp作用_lnmp_02

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

[root@lnmp local]# cp /usr/local/src/php-5.6.24/php.ini-production /usr/local/php-fpm/etc/php.ini

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

[root@lnmp 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)复制一个启动脚本

[root@lnmp php-5.6.24]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

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

[root@lnmp php-5.6.24]# chkconfig --add php-fpm

[root@lnmp php-5.6.24]# chkconfig php-fpm on

[root@lnmp php-5.6.24]# chmod 755 /etc/init.d/php-fpm

 

zabbix lnmp还有什么 lnmp作用_nginx_03

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

[root@lnmp php-5.6.24]# cd /usr/local/php-fpm/

[root@lnmp php-fpm]# sbin/php-fpm -t

 

  1. 启动一下服务

[root@lnmp php-fpm]# service php-fpm start

 

zabbix lnmp还有什么 lnmp作用_php_04

启动成功

显示进程

ps -ef | grep php-fpm

zabbix lnmp还有什么 lnmp作用_linux_05

 

 

3.安装 Nginx

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

[root@lnmp src]# tar -zxvf nginx-1.16.1.tar.gz 

(2)编译文件 安装make

[root@lnmp nginx-1.16.1]# ./configure --prefix=/usr/local/nginx

[root@lnmp nginx-1.16.1]# make && make install

(3)编辑一个启动脚本

[root@lnmp 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权限

[root@lnmp nginx-1.16.1]# chmod 755 /etc/init.d/nginx

[root@lnmp nginx-1.16.1]# chkconfig --add nginx

[root@lnmp nginx-1.16.1]# chkconfig nginx on

 

zabbix lnmp还有什么 lnmp作用_lnmp_06

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

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

[root@lnmp conf]# mv nginx.conf nginx.conf.default

[root@lnmp 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)检查配置文件

[root@lnmp nginx]# sbin/nginx -t

 

zabbix lnmp还有什么 lnmp作用_lnmp_07

(8)启动服务

[root@nginx sbin]# /usr/local/nginx/sbin/nginx -s reload

会出现报错

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

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

[root@nginx sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

(9)查看服务

ps -aux | grep nginx

zabbix lnmp还有什么 lnmp作用_nginx_08

 

(10)curl命令localohst

zabbix lnmp还有什么 lnmp作用_lnmp_09

 

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

zabbix lnmp还有什么 lnmp作用_nginx_10

zabbix lnmp还有什么 lnmp作用_lnmp_11

 

解析成功