综合架构网站架构(LNMP)

综合架构网站架构(LNMP)

00. 说明

1 LNMP架构的组成

1
2
3
4
5
6
7
8
9
L: linux系统

selinux 必须关闭 防火墙关闭
mysql服务无法启动 #/tmp 1777

nginx服务部署:作用 处理用户静态请求 html jpg
php服务部署: --- 处理动态的页面请求 和数据库建立关系
mysql服务部署 --- yum安装很慢 编译安装也很慢
mariadb 服务部署: 存储用户的字符串信息

2 LNMP架构的部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
nginx服务   ---ansible一键化部署   修改yum源
mysql服务部署:
1、安装数据库软件
yum install mariadb-server mariadb

2、数据库初始化过程
mysql_install_db #进行数据库初始化
--basedir=path The path to the MariaDB installation directory.
#指定mysql程序目录
--datadir=path The path to the MariaDB data directory.
#指定数据信息保存的目录
--user=user_name #让user_name管理数据目录 700

初始化信息输出内容:
创建数据库密码信息:
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/application/mysql/bin/mysqladmin -u root password 'new-password' --- 给本地数据库设置密码
/application/mysql/bin/mysqladmin -u root -h web01 password 'new-password' --- 给远程数据库设置密码

3、启动数据库服务
systemctl start mariadb.service
systemctl enable mariadb.service

4、给mysql数据库服务设置密码
mysqladmin -u root password '1' ---设置密码
mysql -u root -p1

PHP服务部署:
1、更新yum源/卸载系统自带的PHP软件
yum remove php-fpm php php-common php-mysql
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

2、安装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

3、编写配置文件
vim /etc/php-fpm.d/www.conf
user = www nginx---www
group = www # 要和nginx服务的管理用户一致
#保证nginx进程的管理用户和php服务进程的管理用户保持一致

4、启动php服务
systemctl restart php-fpm.service
systemctl enable php-fpm.service

3 LNMP架构通信原理

1
用户访问网站--->nginx(调用fastcgi_pass接口)--FastCGI-->(php-fpm  -- wrapper) php (php解析器)--->  mysql(读取或写入)

4 LNMP服务之间如何建立管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
nginx + php  运维负责
php + mysql 开发负责
1、实现nginx和php建立关系
a、编写nginx配置文件
location ~ \.php$ {
root /usr/share/nginx/bbb;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
}
b、重启nginx服务
systemctl restart nginx
c、编写php测试文件
[root@web01 bbb]# cat test.php
<?php
phpinfo();
?>
d、 实现php + mysql 建立关系
编写php代码文件
[root@web01 blog]# vim test_mysql.php
<?php
$servername = "localhost";
$username = "root";
$password = "oldboy123";
//$link_id=mysql_connect('主机名','用户','密码');
//mysql -u用户 -p密码 -h 主机
$conn = mysqli_connect($servername, $username, $password);
if ($conn) {
echo "mysql successful by root !\n";
}else{
die("Connection failed: " . mysqli_connect_error());
}
?>


5 运维人员代码上线

1
2
3
4
5
1、获取代码信息(git)---使用开源的网站代码
www网站页面: http://www.dedecms.com/
bbs网站页面: http://www.discuz.net/forum.php
blog网站页面: https://cn.wordpress.org/
wecenter网站页面: http://www.wecenter.com/?copyright

6 NFS和WEB服务

1
mysql服务和web服务 (企业案例:数据库迁移方法)

01.课程回顾

1) nginx服务的企业应用(nginx模块)

1 实现网站页面目录索引功能 (yum仓库搭建)

2 实现网站访问别名功能 server_name

3 实现网站页面用户访问监控 keepalived_timeout

1
2
3
HTTP请求报文: 请求头---connection: keepalived.../closed 短连接
HTTP响应报文: 响应头---connection: closed 短连接
VPN---无法访问外网/xshell无法远程连接

4 实现网站服务日志功能配置

1
2
错误日志: 错误日志级别 
访问日志: 日志的格式信息 自动化分析日志(ELK 三个软件)

5 根据用户访问的url进行匹配

1
2
3
4
5
6
7
8
9
10
11
12
13
location = xxx    精确匹配			  优先级01
location ^~ xxx 优先匹配 优先级02
location ~ 区分大小写匹配 优先级03
location ~* 不区分大小写 优先级03
location uri 根据uri进行匹配 优先级03
location / 默认匹配 优先级最低
企业应用:
京东网站location应用 --- 11.11 12.12 6.18 --- 页面信息和平常不一样
有两个站点目录:
平常网站的站点目录 /html/jd-normal
节日网站的站点目录 /html/jd-teshu
location / { root /html/jd-normal }
location /特殊 { root /html/jd-teshu }

6 网站页面跳转功能

1
2
rewrite  匹配地址(url uri)   跳转成什么地址(url uri)
return 301 http://xxxx #访问直接跳301

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!