前 言
Linux
随着Linux越来越流行,本人一个.net程序员也多次研究linux与.net的相关产品,以及中间件的使用方式。So今天给大家演示演示一下:.net Core3.0项目,在Ubuntu16.04 Linux上的部署,有时间的话会讲讲docker的部署方式。
创建一个.net Core3.0 API的一个项目
大致如下:
【说明】:这里结合我上一篇的博客写的Swagger。请参考链接:http://www.tnblog.net/hb/article/details/3111
这里我们不难发现只有一个控制器一个接口,结果如下:
项目地址: https://github.com/AiDaShi/happy_new_year
然后我们生成项目,按照下列步骤:
然后我在这儿中途改了一下名称和路径,大家可以不用管!!!
生成完成后点击本地发布路径就可以了
然后通过Xftp上传文件到 /Home/fb 路径下啊
Ubuntu 16.04的环境搭建
由于我这里是16.04
按照官网来找到自己相对应的链接
链接:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-package-manager-ubuntu-1604
开始安装
(第一步) 安装dotnet
- wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
- sudo dpkg -i packages-microsoft-prod.deb
- sudo apt-get update
- sudo apt-get install apt-transport-https
- sudo apt-get update
- sudo apt-get install dotnet-sdk-3.1
安装完成时执行 dotnet --info 命令查看安装的SDK信息
测试运行:
路径可能稍有不对,大家指向自己上传的路径,最好不要是root文件夹下
然后我们可以看到报了一个错,是因为 没有nginx做外网代理但本地可以通过命令 curl http://localhost:5000/WeatherForecast 获取数据
(第二步) Nginx的安装
安装命令
- sudo apt-get install nginx
启动命令
- sudo service nginx start
安装成功后直接访问服务器地址,若出现下图则nginx安装成功
(第三步) 进程守护 因情况而定
Ubuntu 用: Supervisor
CentOS 用: PM2
Supervisor
Supervisor是采用 Python(2.4+) 开发的,它是一个允许用户管理 基于 Unix 系统进程的 Client/Server 系统,提供了大量功能来实现对进程的管理。
安装Supervisor
- apt-get install supervisor
然后到这个文件夹下面添加配置
- cd /etc/supervisor/conf.d/
- vim api.conf
内容如下
- [program:api]
- command=dotnet api.dll #要执行的命令
- directory=/home/fb #命令执行的目录
- environment=ASPNETCORE__ENVIRONMENT=Production #环境变量
- user=www-data #进程执行的用户身份
- stopsignal=INT
- autostart=true #是否自动启动
- autorestart=true #是否自动重启
- startsecs=1 #自动重启间隔
- stderr_logfile=/var/log/HelloWebApp.err.log #标准错误日志
- stdout_logfile=/var/log/HelloWebApp.out.log #标准输出日志
配置好以后 (
:wq
保存退出),需要重新加载一下配置
启动进程保护
- service supervisor stop
- sudo service supervisor start
相关参考链接:
PM2
pm2 从名字上和我们平时在生活中接触到的 pm2.5 有点像,不过他们可不是一个东西。做 nodejs 开发的童鞋可能对 pm2 比较熟悉,pm2 是一个高级nodejs进程管理工具。
更新apt-get
- apt-get update
安装node.js
- apt-get install nodejs
安装npm
- apt-get install npm
安装PM2
- npm install -g pm2
设置开机启动
- pm2 startup
安装成功以后使用
pm2 --help
命令来检查是否安装成功,出现下图则安装成功
相关参考链接:
然后测试一下
- curl http://localhost:5000/WeatherForecast
(第四布)配置Nginx
打开nginx配置文件并修改
- vim /etc/nginx/sites-available/default
- server {
- listen 80;
- listen [::]:80;
- location / {
- proxy_pass http://localhost:5000; //刚才发布项目的端口
- 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;
- }
- }
使用
nginx -s reload
命令来优雅重启nginx,并重新载入配置文件。
OK!完成!
使用 Docker 部署项目
给docker安装 .netcore(完整版)
- sudo docker pull microsoft/dotnet
或只安装运行时
- sudo docker pull mcr.microsoft.com/dotnet/core/runtime
在目录 /home/fb (发布文件根目录)创建一个文件 Dockerfile 添加如下内容
- FROM microsoft/dotnet:latest
- COPY . /app
- WORKDIR /app
- EXPOSE 5000/tcp
- ENTRYPOINT ["dotnet", "api.dll"] # enterpoint 第二个参数的dll,就是项目生成的dll文件名,根据自己项目情况替换
然后退出按一下 ESC 建 ,输入
:wq
保存
然后执行如下命令
- docker build -t hager:api .
【注意】一切都是在你的项目路径下
ok!可以看见镜像创建完成了。。。
下面我们停止一下守护进程
- sudo service supervisor stop
运行docker
- docker run --name myapi -v /home/fb:/app -d -p 5000:5000 aidasi/api
未完更新中...。。。