• .NET 发布,部署和运行应用程序


    .NET应用发布

    发布.Net应用有很多种方式,下面列举三种发布方式:

    • 单文件发布
    • 跨平台发布
    • Docker发布

    单文件发布

            右键工程,选择“发布”,部署模式选择“独立”,目标运行时选择自己想要部署到的系统,我这里用的是linux 64位系统,在文件发布选择项中选择“生成单个文件”,那么发布后生成的就是包含所有环境和依赖项的独立程序,在目标系统中可直接运行改文件。

    跨平台发布

            在发布选项中,部署模式选择“独立”,目标运行时选择自己想要部署到的系统,在在文件发布选择项中不选择“生成单个文件”,则是跨平台发布。

    Docker发布

            右键工程,选择“添加”,然后选择“Docker支持”,选择目标平台和Dockerfile,配置Dockerfile,发布Dockerfile,使用windows的Powershell打包docker镜像(安装Docker Desktop)。

    添加Dockerfile

    配置Dokcerfile

    Docker镜像打包

    Windows打包镜像步骤:

    1. #打开Powershell进入Dockerfile工作目录
    2. cd .../publish
    3. #打包Docker镜像
    4. docker build --tag demo:1.0 .
    5. #镜像导出
    6. docker save -o d:\demo.tar demo:1.0
    7. #将导出镜像复制到远程linux服务器目录
    8. #linux Docker镜像导入
    9. docker load -i /api/demo/demo.tar
    10. #Docker查询,镜像是否导入
    11. docker images
    12. #生成docker容器并启动
    13. docker run -d -p 9000:5000 --name demo demo:1.0

    .NET应用部署

    部署和运行.Net应用有也很多种方式,下面列举:

    • 单文件直接运行
    • 服务运行
    • Docker运行

    单文件直接运行

            将发布的.NET应用程序文件复制到目标平台目录,首先将运行文件赋权,然后输入命令直接运行程序。

    1. chmod +x demo #给文件赋权
    2. ./demo #直接运行程序

    服务运行

            通过在/etc/systemd/system/中创建一个服务,并添加配置,然后使能服务,运行服务。查询dotnet安装位置命令

    1. #创建服务
    2. cd /etc/systemd/system/
    3. vim api.service
    4. #添加服务配置
    5. [Unit]
    6. Description=Example .NET Web API App running on Ubuntu
    7. [Service]
    8. WorkingDirectory=/api/ubuntu
    9. ExecStart=/usr/bin/dotnet /api/ubuntu/ProgramShow.WebApi.dll
    10. Restart=always
    11. # Restart service after 10 seconds if the dotnet service crashes:
    12. RestartSec=10
    13. KillSignal=SIGINT
    14. SyslogIdentifier=dotnet-api
    15. User=www-data
    16. Environment=ASPNETCORE_ENVIRONMENT=Production
    17. Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
    18. [Install]
    19. WantedBy=multi-user.target
    20. #使能服务
    21. systemctl enable api.service
    22. #运行服务
    23. systemctl start api.service

    注意:ExecStart=/usr/bin/dotnet为dotnet安装文件,查询dootnet安装位置,使用命令:

    1. whereis dotnet #查询dotnet安装位置
    2. /usr/bin/dotnet /usr/lib/dotnet /etc/dotnet #查询结果

    WorkingDirectory=/api/ubuntu为应用程序路径

    Docker运行

            Docker导入制作好的服务镜像,创建容器并启动容器。

    1. #linux Docker镜像导入
    2. docker load -i /api/demo/demo.tar
    3. #Docker查询,镜像是否导入
    4. docker images
    5. #生成docker容器并启动
    6. docker run -d -p 9000:5000 --name demo demo:1.0

    Nginx反向代理

            使用Nginx反向代理,能够使用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址。如果不适用方向代理,外部电脑可能访问改服务。

    1. #安装完nginx后进入sites-available目录
    2. cd /etc/nginx/sites-available/
    3. #创建nginx服务
    4. vim api
    5. #配置服务
    6. server {
    7. listen 9000;
    8. location / {
    9. proxy_pass http://localhost:5000;
    10. proxy_http_version 1.1;
    11. proxy_set_header Upgrade $http_upgrade;
    12. proxy_set_header Connection keep-alive;
    13. proxy_set_header Host $host;
    14. proxy_cache_bypass $http_upgrade;
    15. }
    16. }
    17. #查看服务
    18. ln -s ../sites-available/api ./
    19. #重启ngnix服务
    20. nginx -s reload

    参考:

    .NETCore项目在Windows下构建Docker镜像并本地导出分发到CentOS系统下_.net程序打包成docker镜像-CSDN博客

    [ASP.NET Core] 6.5 发布和部署应用 IIS/Nginx/Docker_哔哩哔哩_bilibili

  • 相关阅读:
    大数据ClickHouse(三):客户端命令行参数
    【分布式能源的选址与定容】基于非支配排序多目标遗传优化算法求解分布式能源的选址与定容(Matlab代码实现)
    Java&C++题解与拓展——leetcode513.找树最下角的值【么的新知识】
    【Java】Servlet API
    haproxy+keepalived实战
    初识Redis
    GO微服务实战第一节 为什么说云原生重构了互联网产品开发模式?
    844. Backspace String Compare
    WPF资源了解
    分布式中的远程调用
  • 原文地址:https://blog.csdn.net/lvxingzhe3/article/details/137843866