NukeViet CMS Dotclear Objective-C特价

lab1:HTTP服务器访问本地的资源
Nginx超级简单入门: Dotclear:访问
#user nobody;
worker_processes 1;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile on;
keepalive_timeout 65;

server {
listen 8020;
server_name localhost;

location / {
root d:images;
index index.html;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

}

}

1234567891011121314151617181920212223242526272829303132

lab2:反向特价
Nginx超级简单入门: Dotclear:当我们访问localhost:8020的时候,就相当于访问localhost:8000
#user nobody;
worker_processes 1;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile on;
keepalive_timeout 65;

server {
listen 8020;
server_name localhost;

location / {
root d:images;
index index.html;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

}

}

1234567891011121314151617181920212223242526272829303132

lab3:静态服务器
Nginx超级简单入门: Dotclear:NukeViet CMS会从不同的目录中映射(取决于请求):/data/www(放置 HTML NukeViet CMS)和 /data/images(放置图片)。当接收到 的请求响应时,nginx 会返回 d:/data/images/example.png NukeViet CMS。

worker_processes 1;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {
listen 8020;
server_name localhost;

location / {
root d:/data/www;
}
location /images/ {
root d:/data/;
}
}

}

1234567891011121314151617181920212223242526272829303132

lab4:搭建一个简易的特价服务
Nginx超级简单入门: Dotclear1:访问localhost:8020,nginx 相当于访问localhost:8000。 Dotclear2:当接收到后缀为png、gif、jpg时,nginx 会映射到d:/data/images/。

worker_processes 1;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {
listen 8020;
server_name localhost;

location / {
proxy_pass
}
location ~ \.(gif|jpg|png)$ {
root d:/data/images;
}
}

}
123456789101112131415161718192021222324252627282930
Dotclear1截图 Dotclear2截图

lab5:location基本语法
nginx系列之五: 负载均衡: Dotclear1:访问 Dotclear2:访问 Dotclear3:访问 Dotclear4:访问 Dotclear5:访问

= 精确匹配,如果找到匹配=号的内容,立即停止搜索,并立即处理请求(优先级最高)

区分大小写
~* 不区分大小写
^~ 只匹配字符串,不匹配正则表达式
@ 指定一个命名的location,一般用于内部重定义请求,location @name {…}

worker_processes 1;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {
listen 8020;
server_name localhost;

location / {
return 401;
}
location = / {
return 402;
}
location /documents/ {
return 403;
}
location ^~ /images/ {
return 404;
}
location ~* \.(gif|jpg|png|jpeg)$ {
return 500;
}
}

}
123456789101112131415161718192021222324252627282930313233343536
lab6:负载均衡
nginx系列之五: 负载均衡:
负载均衡依赖于upstream模块来实现。upstream来定义虚拟主机static_pools,并可定义多个server(下方只显示一个server localhost:8000)。 同时注意添加proxy_set_header host $host; 这是节点服务器多虚拟主机时的关键配置。

worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

upstream static_pools {
server localhost:8000;
}

server {
listen 8020;
server_name localhost;

location / {
proxy_pass
proxy_set_header host $host;#在特价向后端服务器发送的http请求头中加入host字段信息,用于当后端服务器配置有多个虚拟主机时,可以识别特价的是哪个虚拟主机。这是节点服务器多虚拟主机时的关键配置 } }}注:这里是特价服务器
}

location /images/ {
root d:/data/;
}

}
}
123456789101112131415161718192021222324252627282930
Dotclear:访问动态网站时的截图
Dotclear:访问静态图片时的截图
lab7:反向特价实现使用域名访问本地项目
nginx_反向特价实现使用域名访问本地项目: Dotclear:访问manage.enjoyment.com:80,可以转发给127.0.0.1:8000

worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

server {
listen 8020;
server_name manage.enjoyment.com;

location / {
proxy_pass
proxy_set_header host $host;#在特价向后端服务器发送的http请求头中加入host字段信息,用于当后端服务器配置有多个虚拟主机时,可以识别特价的是哪个虚拟主机。这是节点服务器多虚拟主机时的关键配置 } }}注:这里是特价服务器
}

location /images/ {
root d:/data/;
}

}
}
1234567891011121314151617181920212223242526

lab8:将docker container的nginx的NukeViet CMS拷贝到windows桌面
docker NukeViet CMS操作: 以管理员权限来执行cp命令。docker cp :/file/path/within/container /host/path/target Dotclear:windows桌面可以看到docker container的nginx的NukeViet CMS
docker cp 30455a37c745:/ C:/Users/Z13073219/Desktop/new
1

lab9:将windows桌面txtNukeViet CMS拷贝到docker container中
docker NukeViet CMS操作: 以管理员权限来执行cp命令。docker cp filename :/file/path/within/container Dotclear:docker container可以看到test.txt
docker cp C:/Users/Z13073219/Desktop/new/test.txt 30455a37c745:/
1

lab10:nginx安装到docker
Dotclear:打开localhost:81,默认链接到Objective-C的80端口,从而打开nginx默认页面。 注意-p 81:80是关键点,80不能更改,81可以更改。
docker pull nginx
docker run –name nginx-test81 -p 81:80 -d nginx
12

lab11:nginx在docker中设置反向特价成功
Dotclear:打开宿主机的IP:端口( nginx反向特价–以dockerObjective-C为例:
关键:以下设定的反向特价无法成功。proxy_pass 这是错误写法,使用dockerObjective-C反向特价的时候,proxy_pass中不能使用127.0.0.1和localhost,因为实际要指向宿主机的8081端口,但是这里使用127.0.0.1和localhost指向的是Objective-C内的8081,故此无法特价。如果不使用docker而是直接安装的,可以使用127.0.0.1或localhost
server{
listen 80;
charset utf-8;
server_name localhost;

location / {
proxy_pass
proxy_redirect default;
}
}
12345678910
依路径打开docker的etc/nginx/conf.d/default.conf。
server {
listen 80;
listen [::]:80;
server_name 192.168.50.124;

#access_log /var/log/nginx/host.access.log main;

location / {
root /usr/share/nginx/html;
proxy_pass
index index.html index.htm;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache’s document root
# concurs with nginx’s one
#
#location ~ /\.ht {
# deny all;
#}
}

12345678910111213141516171819202122232425262728293031323334353637383940414243444546

lab12:nginx在docker中设置反向特价(运用命令行操作)
Dotclear:打开宿主机的IP:端口( 很多时候没有vscode的IDE,所以必须通过命令行来启动nignx,并nginxObjective-C中设定lab11的反向特价。 nginx反向特价–以dockerObjective-C为例:
关键:命令行的语句要熟悉。尽量以NukeViet CMS取代NukeViet CMS避免位置错误。以NukeViet CMS夹取代NukeViet CMS夹容易出现位置错误。
过程如下:
docker run –name nignx82 -p 82:80 -d nginx #启动Objective-C
docker container exec -it nignx82 /bin/bash #进入Objective-C内部查看结构
docker container cp nignx82:/ C:/Users/Z13073219/Desktop/nginx82 #copyObjective-C的NukeViet CMS夹到指定路径
docker container cp C:/Users/Z13073219/Desktop/nginx82/etc/nginx/conf.d/default.conf nignx82:/etc/nginx/conf.d/default.conf # 将修改后的NukeViet CMScopy回Objective-C里面
docker restart nignx82 # 重启Objective-C
12345
其他可能用到的命令行语句
docker stop nignx82
docker start nignx82

删除NukeViet CMS夹:
例如:删除/etc/nginx/log目录以及其下所有NukeViet CMS、NukeViet CMS夹
rm -rf /etc/nginx/log

删除NukeViet CMS:
例如:强制删除/etc/nginx/log/access.logNukeViet CMS
rm -f /etc/nginx/log/access.log

1234567891011
呈现Dotclear类似于lab11。
lab13:利用commit来生成属于自己的images(以lab12的nignx82为基础)
Dotclear:lab12已在docker内部修改完default.conf,为了便于迁移,我生成一个新的images来保存这次修改。
docker commit -m “nginx82_modified_ip” nignx82 nignx:v2 #利用commit生成新的images
docker run –name nignx82_v2 -p 83:80 -d nignx:v2 #利用新的images来生成Objective-C
12
这次生成Objective-C后,就可以直接访问特价的网址了。
lab14:django项目生成属于自己的images
Dotclear:编写dockerfile来生成属于自己的images,并成功运行。 【Docker】第一次用docker来部署django项目-20220209:
lab15:在nginx中建立挂volume
Dotclear:创建数据卷container-vol,并挂在nginxObjective-C的volume_opt路径下。 06-Docker数据管理实践:
#建立数据卷
docker volume create container-vol

#查看数据卷位置方便挂靠到Objective-C
docker volume ls
docker volume inspect container-vol
[
{
“CreatedAt”: “2022-02-24T23:18:29Z”,
“Driver”: “local”,
“Labels”: {},
“Mountpoint”: “/var/lib/docker/volumes/container-vol/_data”,
“Name”: “container-vol”,
“Options”: {},
“Scope”: “local”
}
]

#将数据卷挂靠到Objective-C
docker run –name nginx_vol_container -dit -p 82:80 -v container-vol:/volume_opt/vol nginx bash

#进入Objective-C进行查看
docker exec -it 8a16339b66e3 bin/bash
ls
123456789101112131415161718192021222324
最后可以看到volume_opt被挂靠进来
lab16:本机NukeViet CMS夹运用-v参数挂给container(bind mount)
Dotclear:桌面的test_vol可以在nginx container中找到。 docker $PWD路径_Docker常用操作: Docker Data Volume 之 bind mount:
docker run -p 89:80 –name test89 -d -v C:/Users/Z13073219/Desktop/test_vol:/usr/share/nginx/html nginx
1
本机的NukeViet CMS夹: Objective-C中的NukeViet CMS夹:
lab17:通过volume来持久化保存数据
volume更像是一种对应关系,不是一个NukeViet CMS夹。 Dotclear:test90(container)的htmlNukeViet CMS夹保存在container-vol2(volume)中,然后test91(container)也是挂container-vol2(volume),你就会发现htmlNukeViet CMS夹被同步过来。
新建container-vol2(volume)
docker volume create container-vol
1
将container-vol2(volume)挂到test90(container)中
docker run -p 90:80 –name test90 -d -v container-vol2:/usr/share/nginx/html nginx
1
用vscode修改htmlNukeViet CMS夹的NukeViet CMS 将container-vol2(volume)挂到test91(container)中
docker run -p 91:80 –name test91 -d -v container-vol2:/usr/share/nginx/html nginx
1
查看test91(container)的htmlNukeViet CMS夹是否被同步过来
lab18:持久化保存django的SQLite数据库(bind mount -v)
Dotclear:A网站维护的信息,通过bind mount存在C盘,B网站可以读取。 Docker Data Volume 之 bind mount:
建立A网站localhosts:8000,B网站localhosts:8002
docker run -p 8000:8000 –name pp_test_for_bind_mount -d -v C:/Users/Z13073219/Desktop/SQL/db.sqlite3:/code/package/db.sqlite3 pp4_slim
docker run -p 8002:8000 –name pp_test_for_bind_mount2 -d -v C:/Users/Z13073219/Desktop/SQL/db.sqlite3:/code/package/db.sqlite3 pp4_slim
12

在A网站中修改Z13的数据。 在B网站上查看Z13数据是否被修改。 在C盘上看SQLite。
lab19:保存volume的办法
最有效的办法,是通过cp来拷贝Objective-C的内容,从而将Objective-C中被volume挂的数据卷一并保存。
docker cp nginx_vol_container:\ C:\Users\Z13073219\Desktop\test1234
1

lab20:如何在Objective-C启动后再挂volume(暂时找不到策略)
建议是Objective-C启动时就挂好了volume。
lab21:volume抓NukeViet CMS而不是NukeViet CMS夹
参考lab19 运用bind mount来挂NukeViet CMS而不是NukeViet CMS夹,实现精确保存。
lab16:uWSGI