1.LNMP架构概述

LNMP就是Linux+Nginx+MySQL+PHP
Linux作为服务器的操作系统
Nginx作为Web服务器
PHP作为解析动态脚本语言
MySQL即为数据库

Nginx服务本身不能处理PHP的请求,那么当用户发起PHP动态请求,Nginx又是如何进行处理的。

有两种方法:
.将PHP页面的解析请求转发给Apache处理
.将PHP页面的解析请求转发给php-fpm模块处理 *****
用户->http协议->Nginx->fastcgi协议->php-fpm
注意:fastcgi是nginx连接php-fpm之间的协议。

1.用户通过http协议发起请求,请求会先抵达LNMP架构中的Nginx
2.Nginx会根据用户的请求进行判断,这个判断是由location进行完成
3.判断用户请求的是静态页面,Nginx直接进行处理
4.判断用户请求的是动态页面,Nginx会将该请求交给fastcgi协议下发
5.fastcgi会将请求交个php-fpm管理进程,php-fpm管理进程接收到后会调用具体的工作线程warrap
6.warrap线程会调用php进行解析,如果只是解析代码php直接返回
7.如果有查询数据库操作,则由php连接数据库(用户 密码 IP)然后发起查询的操作
8.最终数据由mysql->php->php-fpm->fastcgi->nginx->http->user

2.安装LNMP架构

1.安装Nginx

)使用Nginx官方提供的rpm包
sudo yum install yum-utils -y
cat >>/etc/yum.repos.d/nginx.repo<<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/x86_64/
gpgcheck=
enabled=
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF )执行yum安装
sudo yum install -y nginx )启动并加入开机自动启动
systemctl start nginx && systemctl enable nginx

2.安装MySQL

.下载MySQL官方扩展源
rpm -ivh https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm .安装mysql8.,文件过大可能导致下载过慢
yum install mysql-community-server -y .启动数据库,并加入开机自启动
systemctl start mysqld
systemctl enable mysqld //5.6版本
.由于mysql5.6默认管理员root密码为空,服务器启动后,可以直接登陆
mysql -uroot
....
mysql> .为了安全,必须给root设置密码
[root@web01 scripts]# mysqladmin -u root password
//如果已经有密码,再次修改
[root@web01 scripts]# mysqladmin -u root -p123456 password .使用密码登录mysql
mysql -uroot -p123456
....
mysql> //5.7版本
.由于mysql5.7默认配置了默认密码,需要过滤temporary password关键字查看对应登陆数据库密码
grep "temporary password" /var/log/mysql.log .登陆mysql数据库[password中填写上一步过滤的密码]
mysql -uroot -p$(awk '/temporary password/{print $NF}' /var/log/mysql.log) .重新修改数据库密码
mysql> ALTER USER 'root'@'localhost IDENTIFIED BY ''; 注意:mysql是觉得不需要源码安装,所有的功能都是通过修改配置文件来实现。

3.使用第三方扩展源安装PHP7.1

.移除旧版php(之前有通过Base或epel库安装过php的,必须先移除)
yum remove php-mysql php php-fpm php-common .安装扩展源
yum localinstall -y http://mirror.webtatic.com/yum/el7/webtatic-release.rpm .安装php7.1版本
yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb .启动php-fpm管理进程,并加入开机自启
systemctl start php-fpm && systemctl enable php-fpm

4.验证Nginx是否能正常解析php动态请求,以及php程序能否正常连接数据库

.创建一个测试站点
[root@web01 www]# cat /etc/nginx/conf.d/php.conf
server {
listen ;
server_name www.xiao.com;
root /code/www;
index index.php index.html; location ~ \.php$ {
root /code/www;
fastcgi_pass 127.0.0.1:;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
} .新增index.php,测试php解析是否正常工作
[root@web01 www]# cat /code/www/index.php
<?php
phpinfo();
?> .测试php是否能连接mysql数据库服务(无论是本地数据库还是远程数据库,测试方式一致)
[root@web01 www]# cat /code/www/mysqli.php
<?php
$servername = "localhost";
$username = "root";
$password = ""; //创建链接
$conn = mysqli_connect($servername,$username,$password); //检测连接
if (!$conn) {
die("Connection failed:" . mysqli_connect_error());
}
echo "连接成功";
?>

 部署wordpress个人博客

.部署Nginx虚拟主机站点,域名为blog.xiao.com
[root@web01 conf.d]# cat wordpress.conf
server {
listen ;
server_name blog.xiao.com;
root /code/wordpress;
index index.php index.html; location ~ \.php$ {
root /code/wordpress;
fastcgi_pass 127.0.0.1:;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
} .下载wordpress产品,部署wordpress并授权
#.获取wordpress源码
mkdir /soft
cd /soft
wget https://cn.wordpress.org/latest-zh_CN.tar.gz #.解压网站源码文件,拷贝至对应站点目录,并授权站点目录
tar xf wordpress-5.3.-zh_CN.tar.gz
mv wordpress /code/ #和rsync nfs关联用户信息
groupadd -g www
useradd -u -g -M -s /sbin/nologin www
chown -R www.www /code/wordpress/ #nginx也要修改程序用户,让通过nginx访问页面的用户具有写权限
sed -i "/^user/c user www;" /etc/nginx/nginx.conf #php-fpm也要修改程序用户,让通过访问php页面的用户具有写权限
sed -i "/^user/c user = www" /etc/php-fpm.d/www.conf
sed -i "/^group/c group = www" /etc/php-fpm.d/www.conf #重载nginx和php-fpm
systemctl reload nginx php-fpm #.由于wordpress产品需要数据库,所以需要手动创建数据库
[root@web01 conf.d]# mysql -uroot -p123
mysql> create database wordpress;
Query OK, row affected (0.02 sec)
mysql> exit
Bye

 部署知乎产品Wecenter

.部署Nginx虚拟主机站点,域名为zh.xiao.com
[root@web01 conf.d]# cat zh.conf
server {
listen ;
server_name zh.xiao.com;
root /code/zh;
index index.php index.html; location ~ \.php$ {
root /code/zh;
fastcgi_pass 127.0.0.1:;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
} .下载wecenter产品,部署wecenter并授权
#.获取wecenter源码
mkdir /soft
cd /soft #.解压网站源码文件,拷贝至对应站点目录,并授权站点目录
unzip WeCenter_3--.zip zh
mv zh /code/ #和rsync nfs关联用户信息
chown -R www.www /code/zh #nginx也要修改程序用户,让通过nginx访问页面的用户具有写权限
sed -i "/^user/c user www;" /etc/nginx/nginx.conf #php-fpm也要修改程序用户,让通过访问php页面的用户具有写权限
sed -i "/^user/c user = www" /etc/php-fpm.d/www.conf
sed -i "/^group/c group = www" /etc/php-fpm.d/www.conf #重载nginx和php-fpm
systemctl reload nginx php-fpm #.由于wordpress产品需要数据库,所以需要手动创建数据库
[root@web01 conf.d]# mysql -uroot -p123
mysql> create database zh;
Query OK, row affected (0.02 sec)
mysql> exit
Bye

LNMP应用的更多相关文章

  1. 阿里云ECS安装lnmp环境-转载自:http://ninghao.net/blog/1368

    远程控制你的服务器 远程控制 Linux 类型的系统的服务器,比如 CentOS 系统的服务器,一般不像 Windows 服务器那样,使用图形界面的远程控制.我们需要使用命令行工具,远程连接到服务器, ...

  2. centos6.5下使用yum完美搭建LNMP环境(php5.6) 无脑安装

    准备工作 配置防火墙,开启80端口.3306端口删除原有的 iptables , 添加合适的配置 rm -rf /etc/sysconfig/iptables vi /etc/sysconfig/ip ...

  3. LAMP坏境和LNMP环境安装Nagios4.1.1和基本配置

    ----------------------------------------以下内容为笔者生产环境的监控,安装都是经过一步步测试的-------------------------------- ...

  4. lnmp 预设iptables设置

    「LNMP」iptables初始配置   首先使用命令iptables -P INPUT ACCEPT允许所有连接,否则容易把自己关在外边.然后使用iptables -F;iptables -X;ip ...

  5. 烂泥:学习centos之快速搭建LNMP环境

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 以前在centos下安装软件都是喜欢源码安装,不过昨天因为一个事情需要一个centos 下的LNMP环境.反倒不会搞了,今天特意记录下,以备后续使用. 一 ...

  6. 基于corosync+pacemaker+drbd+LNMP做web服务器的高可用集群

    实验系统:CentOS 6.6_x86_64 实验前提: 1)提前准备好编译环境,防火墙和selinux都关闭: 2)本配置共有两个测试节点,分别coro1和coro2,对应的IP地址分别为192.1 ...

  7. 基于centos的lnmp搭建

    部署lnmp环境 安装配置mariadb配置php配置phpmyadmin配置php-fpm配置nginx配置测试 LNMP(linux,nginx,mariadb,php)部署,以下默认在root权 ...

  8. lnmp安装

    一.准备工作 需要的安装包都是从官网下载的,系统centos6.6 nginx-1.10.1.tar.gz php-5.6.24.tar.gz mysql-5.5.32.tar.gz 所有的包都一传入 ...

  9. [原创]Centos7 从零整合LNMP一体包

    按照前几章配置好后,我们就可以把这些工具打包啦.生成LNMP一体包. # export LD_LIBRARY_PATH=/package/libmemcached/lib:$LD_LIBRARY_PA ...

  10. 【CentOS】LNMP

    本文为博主JerryChan所有,如需转载,请联系博主747618706@qq.com,并附上博客链接/////////////////目录//////////////////一.LNMP的安装 1. ...

随机推荐

  1. 如何让手游内存占用更小?从内存消耗iOS实时统计开始

    为什么iOS内存使用过多会崩溃,性能会下降?腾讯游戏学院专家Devlin在本文给了解释,如何让手游内存占用更小?从内存消耗iOS实时统计开始. 一.问题 在之前的手游项目中,内存使用过多,都开始崩溃了 ...

  2. Bean XML 配置(1)- 通过XML配置加载Bean

    系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of Contro ...

  3. pppd调试心得.md

    描述 pppd是用于驱动3g模块的一种方式,其本质是和运营商APN协商,建立连接 其与运营商之间使用ppp协议,而用户在应用层使用系统提供的socket即可,从而忽略底层使用的时何种接口的设备,避免因 ...

  4. 常用ES6-ES10知识点总结

    在工作中我们会常用到的一些es6-es10的一些特性还记得多少,今天就让我们重新复习一遍 ES6语法 1.Let 1.let声明的变量具有块级作用域, { let a = 1 } console.lo ...

  5. 三、CI框架之一个最简单的页面

    一.在CI框架里面的controllers <?php defined('BASEPATH') OR exit('No direct script access allowed'); class ...

  6. Codeforces_449B 最短路+统计

    也是给这个题目跪了一天...时间不多了,也不多讲 首先要用 nlogn的优先队列dijstla来求最短路,n^2的会超时,不过发现SPFA好像也可以过,他的复杂度应该介于NlogN和N^2之间. 然后 ...

  7. jQuery中的一些方法 19.5.20课上笔记

    after() insertAfter():特定元素后面插入新的节点 before() insertBefore():特定元素前面插入新的节点 append() appendTo():向特定元素元素内 ...

  8. Java基础——HashTable源码分析

    HashTable是基于哈希表的Map接口的同步实现 HashTable中元素的key是唯一的,value值可重复 HashTable中元素的key和value不允许为null,如果遇到null,则返 ...

  9. CountDownLatch和CyclicBarrier和Semaphore最通俗形象解释

    应该还有好多同学对这三个的区别比较模糊,网络上其他文章说的也比较专业化.所以我在这里举个例子说明这三个的区别. 我们假定有一场百米比赛,比赛包括十个运动员和一个裁判,每个运动员和每个裁判都是一个线程, ...

  10. BMP位图图像格式简介

    1. 文件结构 位图文件可看成由4个部分组成:位图文件头(bitmap-fileheader).位图信息头(bitmap-informationheader).彩色表(colortable)和定义位图 ...