在Ubuntu上发布.Net Core(3.1) WebApi

在Ubuntu上发布.Net Core(3.1) WebApi


安装环境

  • 系统 : Ubuntu服务器,版本Ubuntu 16.04 LTS
  • .Net Core : .Net Core 3.1
  • Nginx : nginx/1.10.3 (Ubuntu)
  • 其他 : ftp, ssh

准备工作

  • 搭建.Net Core环境:

将Microsoft程序包签名密钥添加到受信任密钥列表中

将存储库添加到包管理器

安装所需的依赖项

wget https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb> -O packages-microsoft-prod.deb

sudo dpkg -i packages-microsoft-prod.deb

  • 安装.Net Core SDK

sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install -y dotnet-sdk-3.1

  • 配置FTP服务器
    1. 创建专用的ftp用户

      假定用户名为maker
      sudo useradd -d "/home/maker" -m -g ftp maker
      sudo usermod -s /sbin/nologin maker
      sudo mkdir /home/maker/public
      sudo setfacl -m u:maker:rwx /home/maker/public
      sudo chgrp ftp /home/maker/public
      sudo setfacl -d -m u:maker:rwx /home/maker/public
      sudo chmod a-w /home/maker
      sudo passwd maker

    2. 安装vsftpd

      sudo apt-get install vsftpd

    3. 修改/etc/vsftpd.conf文件

      使用vim或者gedit编辑器修改如下条目
      a. listen=YES
      b. listen_ipv6=NO
      c. write_enable=YES
      c. chroot_local_user=YES
      d. chroot_list_enable=YES
      e. chroot_list_file=/etc/vsftpd.chroot_list

    4. 创建/etc/vsftpd.chroot_list

      使用vim或gedit
      sudo gedit /etc/vsftpd.chroot_list
      输入用户名 maker 保存

    5. 查看/etc/ftpusers文件

      cat /etc/ftpusers
      如不存在maker,则不用管,否则使用vim/gedit编辑删除maker

    6. 修改/etc/pam.d/vsftpd文件

      将 auth required pam_shells.so 改成 auth required pam_nologin.so

    7. 重新启动vsftpd服务

      sudo service vsftpd restart

  • 安装并配置nginx
    1. 安装nginx

      输入下面指令进行安装nginx
      sudo apt-get install nginx
      sudo nginx -s start
      在浏览器里输入http://localhost将显示如下图所示,说明nginx安装成功。
      在这里插入图片描述

    2. 修改nginx的默认配置文件/etc/nginx/sites-available/default

      cp default default.bak
      vim default
      修改listen 80 default_server; 为 listen 80;
      删除~listen [::]:80 default_server;~
      location / {} 段 修改为如下:
      location / {
      proxy_pass http://localhost:5000;## 请设置和项目的url一致
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection keep-alive;
      proxy_set_header Host $host;
      proxy_cache_bypass $http_upgrade;
      client_max_body_size 100m;##有文件上传功能的记得设置,否则默认只能上传传小于1m的文件
      }

    3. 保存并测试配置文件格式是否正确

      sudo nginx -t

    4. 重新启动nginx服务

      sudo nginx -s reload


发布

  • 使用VS2019进行发布
    1. 步骤如下
      在这里插入图片描述
      在这里插入图片描述
    2. 使用putty登录Ubuntu修改项目文件夹下所有文件(含子目录)的属性为777,比如项目文件夹为 webapidemo
      sudo chmod 777 webapidemo/ -R
  • 配置守护进程Supervisor
    1. 安装supervisor
      sudo apt-get install supervisor
    2. 配置supervisor,新建配置文件{项目名}.conf
      sudo touch /etc/supervisor/conf.d/webapidemo.conf
    3. 使用vim/gedit编辑webapidemo.conf文件
      [program:webapidemo]
      command=sudo dotnet webapidemo.dll #要执行的命令
      directory=/home/maker/public/webapidemo #命令执行的目录
      environment=ASPNETCORE__ENVIRONMENT=Production #环境变量
      user=maker #进程执行的用户身份(可以是root或ftp的用户)
      autostart=true #是否自动启动
      autorestart=true #是否自动重启
      startsecs=1 #自动重启间隔
      stderr_logfile=/var/log/webapidemo.err.log #标准错误日志
      stdout_logfile=/var/log/webapidemo.out.log #标准输出日志
    4. 配置文件webapidemo.conf可以直接放在项目目录下然后使用软链接到/etc/supervisor/conf.d/下
      cd /etc/supervisor/conf.d/
      sudo ln -s /home/maker/public/webapidemo/webapidemo.conf webapidemo.conf

总结

当启用Nginx进行反向代理时出现502错误时,请确保Web项目能够在本地正常运行,涉及文件系统操作时要确保文件及文件夹有足够的权限;同时可以从/var/log/nginx/error.log查看错误信息。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值