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

[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文件

 

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

 

(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

 

(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

 

启动成功

显示进程

ps -ef | grep php-fpm

 

 

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

 

(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

 

(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

 

(10)curl命令localohst

 

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

 

解析成功

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值