LNMP架构基础搭建

LNMP基础架构

LNMP架构作用可以使用架构处理动态网站页面

LAMP架构: Linux系统 apache服务 mysql数据库 php

常见的LNMP架构为

(1) Linux系统 nginx服务 mysql数据库 php

(2) Linux系统 nginx服务 mysql数据库 python

LNMP架构访问流程

分为三种情况

情况一: 静态页面

用户通过浏览器访问网站 nginx服务直接进行处理响应静态页面

情况二:动态页面

当用户通过浏览器进行访问动态页面时 nginx服务收到请求 发现是动态页面请求无法处理时 会通过fastcgi_pass指令调用FostCGI接口 发送出php服务 php_fpm收到会查看是否能够处理这个请求(是否要调用数据库数据).

(1) 能够处理时 会将处理后的信息通过nginx显示给用户

(2) 不能响应时 这时会由wrapper线程通过PHP解析器处理 (转换成数据库能理解的指令) 传输给数据库 数据库处理后在发出响应 php --> nginx --> 用户



Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。
FastCGI接口在Linux下是socket(这个socket可以是文件socket,也可以是ip socket)。
为了调用CGI程序,还需要一个FastCGI的wrapper,这个wrapper绑定在某个固定socket上,如端口或者文件socket。
当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接收到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端。

LNMP架构部署

架构是由Linux nginx MySQL php组成

第一步安装服务

(1) Linux系统 注意事项:
(1) 系统安全服务是否关闭/优化 (selinux iptables)
(2) 确认系统 /tmp 目录权限是否为1777 (若不是1777 php服务可能会报错)

(2) nginx服务

注意事项:
(1) 更新nginx官方源后进行下载安装 (yum install -y nginx)

MySQL数据库服务

数据库服务使用的是特殊语句 SQL语句

mysqladmin -u[用户名] password “123456” 为指定用户设置进入数据库密码
-u                                  指定用户
password " "                        指定密码

mysql -e flush privileges           不进入MySQL进行刷新数据库内用户信息


数据库命令
flush privileges                    刷新数据库内的用户信息

mysql                               进入数据库
mysql -uroot -p123456               通过验证用户/密码进入数据库

show databases;                     查看MySQL服务所有库信息

use xxxx;                           切换到指定表

show tables;                        查看库中所有表信息

create database xxx;                创建数据库

select .* from user;                查看指定表的某一行
select [行头] from [数据表]


update                               修改数据库表内容信息
UPDATE 表名称 SET 列名称 = 新值  WHERE 列名称 = 某值
set                                   指定列
where                                 指定行

grant all on xxx.* to 'xxx'@'localhost(ip白名单)' identified by '密码'
设置指定数据库管理用户及权限,密码  放行白名单信息
grant           指定权限
on              指定管理的库
to              指定用户名@白名单
identified by   指定密码

php解析动态访问请求服务

(1) 解决冲突 : yum remove php-mysql php php-fpm php-common

(2) 准备yum安装软件扩展源信息

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

更新yum源之后,新生成的文件信息:

webtatic-archive.repo / webtatic.repo / webtatic-testing.repo

epel.repo.rpmnew / epel-testing.repo

yum clean al 更新缓存

(3) 利用yum安装PHP相关软件信息

yum install -y 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

(4) 修改php服务进程管理用户信息(建议修改的用户和nginx worker进程用户一致)

 vim /etc/php-fpm.d/www.conf

 user = nginx           在第8行进行修改

 group = nginx          在第10行进行修改   

启动运行php-fpm程序

systemctl start php-fpm

第二步 编写动态页面 测试架构

建立nginx和php的通讯

(1) 编写nginx扩展配置文件

server {

 listen 80;

 server_name blog.oldboy.com;

 location / {

 root /html/blog;

 index index.php index.html;

 }

 location ~ \.php$ {                 指定匹配 .php结尾访问

 root /html/blog;                    指定php解析的站点目录

 fastcgi_pass 127.0.0.1:9000;        指定php服务地址 : 端口

 fastcgi_index index.php;            指定php解析的默认网页文件

 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

  (将站点目录和网页文件传输信息给PHP服务)

 include fastcgi_params;             指定解析变量使php服务识别

 }

}

(2) 编写动态网页

vim xxx.php

<? php

  phpinfo()

?>
测试页面不用理会其内容 

读取服务器信息 显示到网页上

(3) 访问网页查看结果

第3章 部署搭建动态网站

第一步 下载获取动态网站代码

博客网站开源代码: wordpress --- blog.oldboy.com
代码下载地址: [https://cn.wordpress.org/download/](https://cn.wordpress.org/download/)

论坛网站开源代码: discuz --- bbs.oldboy.com
代码下载地址:[https://www.discuz.net/thread-3796882-1-1.html](https://www.discuz.net/thread-3796882-1-1.html)

导航网站开源代码: dedecms / phpcms --- www.oldboy.com
phpcms V9 http://www.phpcms.cn/html/download/phpcms/#content

知乎网站开源代码: wecenter --- zhihu.oldboy.com

第二步 将代码信息进行上传

(1) 上传代码 进行解压

(2) 修改代码目录属主属组 修改为nginx服务woaker进程用户

chmod -R xxx.xxx 目录

(3) 将原站点目录删除 将有index.html的目录修改为站点目录

(4) 创建管理数据库用户信息

在数据库中输入

grant all on 库名.* to '管理用户'@'白名单IP' identified by '密码'; 用户最好和库名一致

select user,host from mysql.user; 查看是否创建成功

(5) 访问动态页面初始化配置

第4章 数据库迁移

(1) 将数据库数据进行备份

mysqldump -uroot -p123456 -A >/tmp/mysql_bak.sql
-A 将数据库所有信息信息打印

(2) 将数据传输到对应远程MySQL服务器上

rsync -avz /tmp/mysql_bak.sql 172.16.1.51:/tmp/

(3) 将备份数据进行还原

mysql -uroot -p123456 </tmp/mysql_bak.sql

将数据输入数据库服务中

(4) 修改web服务器连接数据库地址信息

(1) 对站点目录中连接数据库文件进行修改

(2) 修改数据库 管理库文件用户信息 数据库中输入
grant all on xxx.* to ‘xxx’@‘172.16.1.%’ identified by ‘123456’;

(3) 数据库服务dns反向解析问题处理:
修改/etc/my.cnf
在数据库报错修改地址 [mysqld] 下添加skip-name-resolve 取消反向代理

image.png

(5) 访问网站进行测试

数据库备份恢复后, root用户密码失效了

mysql数据库:
备份数据库过程: 所有数据信息转换为 命令信息(SQL语句)

恢复数据库过程: 执行SQL语句 包括但不限于: 创建库 创建表 添加没有信息

正常创建用户用: grant命令 代表: 授权操作 会立即生效

备份恢复时使用: insert 代表: 插入操作 不会立即生效 这时要是使用: flush privileges(刷新权限)

恢复完数据之后 --->mysql -e flush privileges(刷新权限) --> 识别到root用户的密码信息

phpcmsV9 mysql配置文件

caches/configs/database.php

Discuz x3数据库迁移修改路径

修改数据库配置信息,需要修改几处如下

   bbs/config/config_global.php

   config/config_global_default.php

   config/config_ucenter.php

   config/config_ucenter_default.php

   uc_server/data/config.inc.php

用编程软件打开修改修改以上几个文件的数据库信息即可。
例如:

$_config['db']['1']['dbuser'] = 'root'; /数据库用户名

$_config['db']['1']['dbpw'] = 'root';    /数据库密码

$_config['db']['1']['dbname'] = 'shepo'; /数据库名

define('UC_DBUSER', 'root'); /Ucenter数据库用户名

define('UC_DBPW', 'root');     /Ucenter数据库密码

define('UC_DBNAME', 'shepo'); /Ucenter数据库名

以上几个都是要修改的,用编程软件打开修改

wordpress数据迁移

实现数据库数据迁移操作

https跳转配置

在后台修改URL为https访问 再把nginx配置文件修改

image.png

wordpress数据库配置路径
vim /html/blog/wp-config.php

第5章 网站数据共享存储

将web服务器中的数据进行共享 实现数据同步 统一管理
(1) 找到web服务器上存储网站用户数据信息的目录

(2) 将web服务器上存储目录内数据暂时移动到别的目录
挂载会导致挂载期间无法找到挂载点原有数据 所以要先将数据移走

(3) 进行挂载 挂载到nfs共享存储服务器 nfs存储目录
mount -t nfs 172.16.1.1:/data/xxx /xxx

(4) 将数据进行还原
注意事项
(1) 挂载时注意挂载点数据会被暂时覆盖
(2) web实现共享存储需要有nfs服务
(3) nfs服务器服务是否开启 否则挂载时会卡死
(4) 恢复数据到站点目录时需要注意 nfs默认对root用户进行映射 映射成为nfs默认用户(nfsnobody) 所以无法存储
解决 暂时设置root用户不做映射 数据导回结束后再改回来

第6章 动态网站页面修改域名

动态页面修改域名会涉及到数据库内容信息 只修改配置文件无法做到要求 (页面扩展功能会无法使用)

第一步: 修改配置文件域名信息写入新的域名信息

第二步: 修改网站代码or数据库信息 一般网站后台进行修改

第三步: 做DNS解析 解析到新的域名

第四步: 重启nginx服务

注意 老域名更换时不要直接删除 设置跳转 让用户平滑接受新域名

第7章 网站传输超过1M数据配置方法

在nginx主配置文件内输入
client_max_body_size 100M; 指定传输数据限制最大100M
官方解释:

Syntax:     client_max_body_size size;
Default:    client_max_body_size 1m;
Context:    http, server, location
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容