diff --git "a/\351\231\210\346\200\235\347\235\277/20241118-(\351\203\250\347\275\262\351\241\271\347\233\256).md" "b/\351\231\210\346\200\235\347\235\277/20241118-(\351\203\250\347\275\262\351\241\271\347\233\256).md" new file mode 100644 index 0000000000000000000000000000000000000000..17c9966462553024010cdb2646e8936753b63092 --- /dev/null +++ "b/\351\231\210\346\200\235\347\235\277/20241118-(\351\203\250\347\275\262\351\241\271\347\233\256).md" @@ -0,0 +1,23 @@ +# 项目组织结构与部署指南 + +## 1. 项目组织结构 +### 解决方案和项目的架构 +- **MVC模式**:模型(Model)- 视图(View)- 控制器(Controller) +- **项目结构解读**:了解如何组织代码,包括模型、视图、控制器的位置及其作用。 + +## 2. 在Linux上部署MVC项目 +### ① 创建模板ASP.Net Core Web应用 +- 使用命令行工具或Visual Studio来创建一个新的ASP.Net Core Web应用项目。 + +### ② 在控制器和视图中写入相应文件 +- 编写业务逻辑的控制器类。 +- 设计用户界面的视图文件。 + +### ③ 安装sdk运行环境 +- 根据目标Linux发行版,选择合适的.NET Core SDK版本进行安装。 +- 确保所有依赖项都已正确安装,以便应用程序能够顺利运行。 + +### ④ 打包上传程序 +- 使用`dotnet publish`命令将应用程序发布为可执行文件。 +- 将生成的文件上传到Linux服务器上的目标位置。 +- 配置服务器以允许HTTP/HTTPS访问,并确保防火墙规则允许相应的端口。 \ No newline at end of file diff --git "a/\351\231\210\346\200\235\347\235\277/20241120-(\351\203\250\347\275\262MVC).md" "b/\351\231\210\346\200\235\347\235\277/20241120-(\351\203\250\347\275\262MVC).md" new file mode 100644 index 0000000000000000000000000000000000000000..6df6ec2dcf4123249462122f810ed8c74eb91eed --- /dev/null +++ "b/\351\231\210\346\200\235\347\235\277/20241120-(\351\203\250\347\275\262MVC).md" @@ -0,0 +1,84 @@ +# Debian部署MVC(Asp.Net Core)的先决条件 + +## 1. 在服务器上安装运行环境或者调试环境 +### 1.1 安装SDK包管理器 +- **下载文件** + ```bash + wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb + ``` +- **注册文件** + ```bash + sudo dpkg -i packages-microsoft-prod.deb + ``` +- **删除刚才注册的文件** + ```bash + rm packages-microsoft-prod.deb + ``` +- **更新软件源** + ```bash + sudo apt update + ``` +- **安装SDK** + ```bash + sudo apt install dotnet-sdk-8.0 + ``` +### 1.2 在Linux上安装软件或者应用,常用方式如下: +- **包管理器(相对于用户来说最简单)** +- **使用二进制文件安装(次简单)** +- **编译安装(最难)** + +## 2. 将打包好的程序上传到指定目录 +### 2.1 创建模板(模型-视图-控制器) +```bash +dotnet new mvc -n MyApp +cd MyApp +``` +### 2.2 写程序(网页) +编辑 `Views/Home/Index.cshtml` 文件以添加一些内容。 +### 2.3 打包上传,以下两种方式: +#### 2.3.1 使用scp工具 +```bash +dotnet publish -c Release +scp -r ./* root@XXXX.XXX:var/www/XXXX.XXX +``` +测试是否完成 +```bash +dotnet .\bin\Release +et8.0\publish\MyApp.dll +``` +#### 2.3.2 xftp +- 使用xftp客户端上传发布的内容到服务器。 +### 2.4 跑一下上面上传的程序,测试是否成功 +```bash +dotnet /var/www/XXXX.XXX/MyApp.dll +``` +如果成功,则在后续工作中不能停止运行。 + +## 3. 一般建议使用Nginx做反向代理 +### 3.1 看一下上面的程序是否在网站当中 +```bash +curl http://localhost:5000; +``` +### 3.2 为该网站配置文件(反向代理) +切换目录: +```bash +cd /etc/nginx/conf.d +``` +反向代理配置文件: +```nginx +server { + listen 80; + server_name XXX.lcann.cn; + location / { + proxy_pass http://localhost:5000; + } +} +``` +检查是否有语法错误: +```bash +nginx -t +``` +重新加载配置: +```bash +nginx -s reload +``` \ No newline at end of file diff --git "a/\351\231\210\346\200\235\347\235\277/20241122-(\344\274\240\345\217\202).md" "b/\351\231\210\346\200\235\347\235\277/20241122-(\344\274\240\345\217\202).md" new file mode 100644 index 0000000000000000000000000000000000000000..438a391f9f5a01a6b37592476c63ac23b1ae1bb0 --- /dev/null +++ "b/\351\231\210\346\200\235\347\235\277/20241122-(\344\274\240\345\217\202).md" @@ -0,0 +1,74 @@ +# 修复安全漏洞 + +## 准备软件包升级 +- **安装可用更新** +- **自动解决依赖关系** +- **提高系统安全性** +- **保持系统稳定** +- **自动化和一致性** +- **维护软件的兼容性** +- **获取新功能和改进** + +## 更新软件和补丁 +执行命令:`apt upgrade -y` +- **了解这一步的实际用处意义**:确保系统和软件包是最新的,以修复已知的安全漏洞和提升性能。 + +## 传参 + +### 简单传参(单个) +```csharp +public IActionResult Edit(int id){ + return Content(id.ToString()); +} +``` +- 如有多个简单传参形式,则需修改`Program.cs`中的pattern里的值,例如: + ```plaintext + pattern: "{controller=Home}/{action=Index}/{age?}"; + ``` + ```csharp + public IActionResult Edit(int age){ + return Content(age.ToString()); + } + ``` + +### 复杂传参 +#### 第一步 +```csharp +[HttpPost] +public IActionResult Create([FromBody]Students students){ + return Content(JsonSerializer.Serialize(students)); +} +``` +- 该方式需创建视图中创建一个与控制器相对应对视图文件(书写样式时可用),但还是在Postman软件中查看(前提要运行该程序F5)。 + +#### 第二步 +```csharp +// [HttpPost] +public IActionResult Create([FromBody]Students students){ + return View(students); +} +``` +- 需创建一个类,这个类里有属性: + ```csharp + public class Students{ + public string Name{get;set;}=null!; + public string Age{get;set;}=null!; + public string Weight{get;set;}=null!; + public string Height{get;set;}=null!; + } + ``` + +#### 第三步 +- 因该方法在浏览器中无法查看,需到Postman这个软件中查看结果。 + +## 在控制器中构造对象并传递给视图 +```csharp +public IActionResult Index(){ + var students=new Students{ + Name="零零", + Age="33", + Weight="55", + Height="34" + }; + return View(students); +}