WEB集群搭建下载站与动态网站架构
WEB集群搭建下载站与动态网站架构
1.一个高清视频下载站
1.1.搭建要求
名字: 一个高清视频下载站。
网站初衷: 做1个人人看得起的大片网站。
目录结构(目标)

要求:
1.浏览器打开后,显示目录结构(如上图)。
2.增加svip功能。
3.增加统计功能,统计nginx服务的状态,访问情况
1.2.下载站基本要求
- 域名:v.oldboylinux.cn
- 站点目录: /app/code/v/
- touch 几个文件即可
- 自动索引功能(列表站点目录的内容),首页文件不存在.
- autoindex模块

[root@myvps ~]# cat /etc/nginx/conf.d/v.oldboy.linux.cn.conf
server {
listen 80;
server_name v.oldboylinux.cn;
root /app/code/v;
error_log /var/log/nginx/v.oldboylinux.cn-error.log notice;
access_log /var/log/nginx/v.oldboylinux.cn-access.log main;
autoindex on;
autoindex_localtime on;
autoindex_exact_size off;
charset utf8;
location /{
index index.html;
}
location /svip/ {
auth_basic "请输入密码:";
auth_basic_user_file /etc/nginx/user;
}
location /status {
stub_status;
}
}

1.3增加vip认证功能
- 增加一个svip目录,里面创建文件.
- 增加认证功能(用户名和密码).
- auth_basic模块
auth_basic "请输入密码:"; #输出提示,根据不同浏览器,可能不显示.
auth_basic_user_file conf/htpasswd; #指定用户名,密码文件
-
要求:
- 只要用户访问的路径中包含vip资源,提示输入密码
-
创建密码文件:
yum install -y httpd-tools
#创建文件
htpasswd -bc /etc/nginx/user lidao996 1
#增加用户
htpasswd -b /etc/nginx/user oldboy 1
#修改权限
chmod 600 /etc/nginx/user
chown nginx.nginx /etc/nginx/user
- 符合要求的配置
[root@myvps ~]# cat /etc/nginx/conf.d/v.oldboy.linux.cn.conf
server {
listen 80;
server_name v.oldboylinux.cn;
root /app/code/v;
error_log /var/log/nginx/v.oldboylinux.cn-error.log notice;
access_log /var/log/nginx/v.oldboylinux.cn-access.log main;
autoindex on;
autoindex_localtime on;
autoindex_exact_size off;
charset utf8;
location /{
index index.html;
}
location /svip/ {
auth_basic "请输入密码:";
auth_basic_user_file /etc/nginx/user;
}
location /status {
stub_status;
}
}
1.4.增加统计功能
-
显示ngx当前状态(显示ngx状态信息),未来用于监控ngx
-
熟练使用状态模块.
-
stub_status模块/指令,显示nginx服务的状态,用户访问的状态.
location /status {
stub_status;
}
Active connections: 2
server accepts handled requests
18 18 48
Reading: 0 Writing: 1 Waiting: 1
ngx模块是众多ngx指令的集合

# 并发50,10万请求 测试
ab -n 100000 -c 50 -H Host:v.oldboylinux.cn http://10.0.0.200/
2.动态网站架构(部署一份开发的php代码)
开发书写了一个php代码发给我们部署下。
1.测试能否直接部署到nginx中?
2.需要什么服务,是什么原理?
3.准备服务并测试。
4.部署代码。
2.1.概述

- 如何区分静态资源和动态资源
- 通过url简单/初步判断,网站的类型
- url中包含&或?一般都是动态网站.
2.2.常见动态网站的架构
-
PHP: LNMP(LEMP), LAMP, WNMP/WAMP (P→PHP, W→Windows, A→Apache)
-
Java: LNMT(Tomcat,Jetty,Weblogic,Jboss)
-
Python: LNMP(Python,uwsgi)
-
Golang: LNMG(Golang)
-
C/C++: LNM?........
LNM?
Nginx Web服务 Engine X
MySQL/MariaDB 数据库
LAMP A ===> apache 目前很少使用.
WNMP/WAMP W === >Windows 一般开发使用
2.3.LNMP架构细节
LNMP原理
- Nginx处理动态请求与静态请求流程概述。

- LNMP处理动态请求流程概述

3.LNMP

1.数据库
- db01数据库服务器, 10.0.0.51/172.16.1.51
- mariadb
yum install -y mariadb-server
#mariadb-server 服务端
#mariadb 客户端
systemctl enable mariadb
systemctl start mariadb
#检查
ss -lntup |grep mysql
ps -ef |grep mysql
- 数据库安全配置(SQL语句实现,现在他通过脚本命令实现)
mysql_secure_installation #仅仅刚安装的时候运行.仅首次
运行即可.
用于设置root密码,清理用户和清理临时库
Enter current password for root (enter for none):回
车
Set root password? [Y/n] Y设置密码
New password: 输入密码
Re-enter new password: 再次输入
Password updated successfully!
Reloading privilege tablesՎʡ
... Success!
Remove anonymous users? [Y/n] Y 删除数据库中的匿名用
户(没有用户名的用户,容易导致安全问题)
Disallow root login remotely? [Y/n] Y 是否禁止root远
程登录
Remove test database and access to it? [Y/n] Y 是否删
除test测试用的数据库
Reload privilege tables now? [Y/n] Y 是否更新权限信息
表
Linux系统的root与数据库的root
2个独立的用户.
Linux的root用户用于进入和管理整个Linux系统.
数据库的root用户仅仅用于管理MySQL数据库.
- 进入数据库
mysql -uroot -p1
数据库基本概念: 库,表,字段,记录 知晓所属关系即可.
库:database, 相当于是1个excel文件
表:table, 相当于是1个excel文件的1个sheet(表格)
字段: 列 某列的名字,字段名字
记录: 行,某个人的数据.
库:
表:
字段:
- 查看
查看系统所有的数据库.(熟练)
show databases;
查看库里的表(了解)
show tables from mysql;
显示mysql库的user表的user列和host列 (列==字段),查看数据库的
用户信息. (熟练)
select 字段1,字段2 from 库.表;
select user,host from mysql.user;
- 创建
创建数据库(熟练)
create database lidao;
创建用户(会用,会改) 未来通过用户管理数据库.
#创建用户,进行授权
grant all on lidao.* to 'lidao'@'localhost' identified by '1';
grant all on lidao.* to 'lidao'@'172.16.1.%' identified by '1';
grant 所有权限 on 数据库.* to '用户名'@'白名单'
数据库白名单说明:
白名单表示用户可以从哪里进行登录与使用数据库.
一般localhost表示只能在数据库本地使用.
可以通过172.16.1.% 进行授权局域网访问. 其他局域网机器可以访问数据库.
只给个%表示所有人可以访问(不安全). %不包含localhost.
- 删除(极其危险)
删除数据库
drop database lidao;
删除用户
drop user 'lidao'@'172.16.1.%' ;
drop user 'lidao'@'localhost' ;
-
wordpress 库
-
wordperss 库 密码1
-
测试
#测试本地连接
mysql -uwordpress -p1
#测试远程连接
mysql -uwordpress -p1 -h 172.16.1.51
程序代码连接数据库:连接数据的配置文件
2.php
https://php.watch/versions 官网下载
生产环境选择,根据开发书写代码环境准备即可
php 7.x
# 仅供参考 /etc/yum.repos.d/php.repo [webtatic-php] name = php Repository baseurl = http:Վˌuseast.repo.webtatic.com/yum/el7/x86_64 enabled = 1 gpgcheck = 0 yum isntall -y php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mcrypt php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache php72w-pecl-memcached php72w-pecl-redis php72w-pecl-mongodb # 仅供参考
- 启动服务nginx,php-fpm
systemctl enable nginx php-fpm
systemctl start nginx php-fpm
- 检查端口与进程
ss -lntup |grep php
ps -ef |grep php
php用户与nginx统一: 统一为nginx
- 统一nginx与php用户,需要修改php配置文件
egrep -n '^user|^group' /etc/php-fpm/www.conf
8:user = ngx
10:group = nginx
3.nginx
ngx配置文件
站点目录
server {
listen 80;
server_name blog.oldboylinux.cn;
root /app/code/blog;
error_log /var/log/nginx/blog-error.log notice;
access_log /var/log/nginx/blog-access.log main;
location / {
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
}
}
4.部署代码与设置权限
- 下载,解压,部署代码
- 页面安装




5.排错与调试
- 测试ngx静态页面
cat /app/code/kodexp/info.php
<?php
phpinfo();
?>

- 测试php+mysq
<?php
//数据库地址
$db_host='10.0.0.51';
//数据库用户名
$db_user='wordpress';
$db_pass='1';
$link_id=mysqli_connect($db_host,$db_user,$db_pass);
if($link_id){
echo "mysql successful by oldboy lidao996!\n";
}else{
echo "connection failed!\n";
}
?>

4.常见故障
权限问题

数据库连接问题

总结





浙公网安备 33010602011771号