From 5588a97922df388d2e648959443b591bce00b07a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=A2=A6=E6=B6=B5?= <3234558314@qq.com> Date: Sun, 24 Nov 2024 21:56:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...347\275\262mvc\351\241\271\347\233\256.md" | 53 ++++++++++++++++++ ...72\346\234\215\345\212\241\345\231\250.md" | 56 +++++++++++++++++++ ...66\345\231\250\344\274\240\345\217\202.md" | 47 ++++++++++++++++ 3 files changed, 156 insertions(+) create mode 100644 "\351\231\210\346\242\246\346\266\265/20241118\351\203\250\347\275\262mvc\351\241\271\347\233\256.md" create mode 100644 "\351\231\210\346\242\246\346\266\265/20241120\346\220\255\345\273\272\346\234\215\345\212\241\345\231\250.md" create mode 100644 "\351\231\210\346\242\246\346\266\265/20241122\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" diff --git "a/\351\231\210\346\242\246\346\266\265/20241118\351\203\250\347\275\262mvc\351\241\271\347\233\256.md" "b/\351\231\210\346\242\246\346\266\265/20241118\351\203\250\347\275\262mvc\351\241\271\347\233\256.md" new file mode 100644 index 0000000..42ab138 --- /dev/null +++ "b/\351\231\210\346\242\246\346\266\265/20241118\351\203\250\347\275\262mvc\351\241\271\347\233\256.md" @@ -0,0 +1,53 @@ +@startmindmap + + * 1 项目组织结构 + * 解决方案和项目的架构 + * mvc项目的结构解读 + + * 2 在Linux上部署MVC项目 + * 创建模板ASP.Net Core Web 应用 + * 在控制器和视图中写入相应文件 + * 安装sdk运行环境 + * 打包上传程序 + +@endmindmap +### 1.Linux命令 +一.如何登录服务器 +登录服务器命令:ssh root@XXX.XXX 第一次登录会底部要不要接受:输入yes,然后回车 输入密码,输入密码过程,没有任何显示,是正常的现象,只管理密码,然后回车就可以了 + +二、部署静态网站的核心科技 +网页所放位置在如下路径:/var/www/XXX.XXX/index.html + +nginx配置文件所放的位置在如下路径:/etc/nginx/conf.d/XXX.XXX.conf + +测试nginx的配置文件有无语法错误,命令如下:nginx -t 如果返回类似ok successful之类的提示,则表明没有语法错误,反之,需要排查语法 + +强制nginx重新加载配置文件命令:nginx -s reload + + + +命令: + ls + 作用:查询指定目录下的内容(文件或者文件夹) + 语法:ls目录 + 选项:a(列出所有内容);l(以列表形式列出) + cd + 作用:切换当前目录到指定目录 + mkdir + 作用:创建文件夹 + 形式:mkdir XXX + rm + 作用:删除文件夹或目录,默认情况下只能删除空文件 + 语法:rm XXX + vim + 作用:编辑文件 + + scp + 作用:用于传输内容到指定服务器 + 语法:scp 文件 账号@服务器地址(ip或域名都可以):/xxx/xxx + cp + 作用:复制文件或文件夹 + 语法:cp 源文件 目标目录 + 常用选项:r 递归传输目录下所有的内容 + mv + 作用:移动文件或文件夹 \ No newline at end of file diff --git "a/\351\231\210\346\242\246\346\266\265/20241120\346\220\255\345\273\272\346\234\215\345\212\241\345\231\250.md" "b/\351\231\210\346\242\246\346\266\265/20241120\346\220\255\345\273\272\346\234\215\345\212\241\345\231\250.md" new file mode 100644 index 0000000..7657f64 --- /dev/null +++ "b/\351\231\210\346\242\246\346\266\265/20241120\346\220\255\345\273\272\346\234\215\345\212\241\345\231\250.md" @@ -0,0 +1,56 @@ +# Debian部署MVC(Asp.Net Core) + +## 第一步安装nginx +- 查看nginx情况(没安装的话需要先进性下一步的安装) + - systemctl status nginx +- 安装nginx + - apt install -y nginx +- 设置nginx开机启动和nginx现在启动 + - systemctl enable nginx + - systemctl start nginx +## 第二步下载.net8(跟着https://learn.microsoft.com/zh-cn/dotnet/core/install/linux-debian?tabs=dotnet8一步步来就好) +1. 在服务器上安装运行环境或者调试环境 + 1. 安装SDK 包管理器 + - 下载文件 + - 注册文件 + - 删除刚才注册的文件 rm(可有可不有) + - 更新软件源 apt update + - 安装SDK apt install dotnet-sdk-8.0 + 2. 在Linux上安装软件或者应用,常用方式如下: + - 包管理器(相对于用户来说最简单) + - 使用二进制文件安装 (次简单) + - 编译安装 (最难) +## 第三步在/var/下创建www文件夹,并在www文件夹下创建以域名为名称的文件夹 +- mkdir /var/www +- cd /var/www +- mkdir 域名名称(mycmh.cn) +- cd 域名名称 + +## 第四步将打包好的程序上传到指定目录 + 1. 创建模板(模型-视图-控制器) + 2. 写程序(网页) + 3. 打包上传,以下两种方式: + - 使用scp工具 scp -r ./* root@XXXX.XXX:var/www/XXXX.XXX + - 打包 dotnet publish + - 测试是否完成(在工作中一般建议测试) + - 在终端dotnet .\bin\Release\net8.0\publish\XXX.dll + - 在资源管理器中用(Shift+鼠标右键)打开PowerShell窗口跑文件 + - 上传 + - xftp + 4. 跑一下上面上传的程序,测试是否成功:dotnet XXX.lcann.cn/XXX.dll(如果成功,则在后续工作不能停止运行) +## 第五步一般建议使用Nginx做反向代理 + 1. 看一下上面的程序是否在网站当中:curl http://localhost:5000; + 2. 为该网站配置文件(反向代理) + - 切换目录:cd /etc/nginx/conf.d + - 反向代理配置文件: + ``` + server{ + listen 80; + server_name XXX.lcann.cn; + location / { + proxy_pass http:localhost:5000; + } + } + ``` + - 检查是否有语法错误:nginx -t + - 重新加载配置:nginx -s reload \ No newline at end of file diff --git "a/\351\231\210\346\242\246\346\266\265/20241122\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" "b/\351\231\210\346\242\246\346\266\265/20241122\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" new file mode 100644 index 0000000..dd43a22 --- /dev/null +++ "b/\351\231\210\346\242\246\346\266\265/20241122\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" @@ -0,0 +1,47 @@ +## 方法重载 +同名函数,具有相同数据类型 + +相同数据类型包含: +1. 参数个数 +2. 参数类型(包括参数的顺序) + +## 传参 + +### 简单参数传递 +在地址后面直接加上参数 +``` +http://localhost:5000/body/index/参数 +``` + +参数只能是id? +- 在项目的program.cs中,其中有串代码:`pattern: "{controller=Home}/{action=Index}/{id?}"` +- 上面的代码中{id?}就规定了参数名只能是id + +测试参数是否有被使用(传入) + +1. 在页面中直接看见参数:`return Content(id.ToString())`,id为参数 + - 使用watch热重载时,如果改变了参数[Index() ==> Index(int id)] 则在程序中会有两个函数名Index出现,结束程序重跑即可 + +2. 使用f5调试,Debug + - 在方法中添加断点,则在右边可看见参数是否被传入 + +### 复杂参数传递 +1. 在控制器中定义一个类型 +``` +public class 类名 +{ + public 数据类型 变量名; + public string Name{get;set;} = null!; +} +``` + +2. 在原本类中添加上[HttpPost],[FromBody] +``` +[HttpPost] +public IActionResult Create([FromBody] 自定义类的类名 students) +{ + return Content(JsonSerializer.Serialize(students)); + // 返回的是所写的全部内容 +} +``` +- 使用该post请求的方法,只能使用Postman软件辅助使用,在页面中是接受不到post请求的 \ No newline at end of file -- Gitee