首页 > Web开发 > 详细

.net core3.1+angular+is4 项目记录:部署篇

时间:2020-04-04 13:23:42      阅读:79      评论:0      收藏:0      [点我收藏+]

.net core3.1+angular+is4 项目记录:部署篇

??项目本来年前就可以结束的,可是前几个月一直在忙别的事情所以就耽搁了。原本打算边做边写,后来感觉在做的过程中想怎么写容易分心,所以写完了再写,之后有空的话应该会补充几篇,如果没有的话。。就算了吧。毕竟毕业事情还是挺多的。文末给出源码。

整体思路

??整理代码(包含数据库字符串,代理头等),上传 github,准备阿里云服务器(安装 git,.net core sdk,nginx,数据库可选等),发布项目,设置代理,守护进程。大约就这么多,全文根据官方文档来,官方文档没有的来自...

整理代码

??这部分根据个人需求,我没有用 https,所以只需要配置代理头部,和修改字符串。修改字符串不做过多解释,连接到你想要的数据库就可以了。配置代理头部,在 startup 的 Configure 中添加:

app.UseForwardedHeaders(new ForwardedHeadersOptions

{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});

??注意这部分在开发的时候是用不到。

上传 github,准备阿里云

??上传 github,不做解释。准备阿里云,我是用 Ubuntu 18.04。各种工具的安装各个官网都有文档请自行查阅,需要 git,.net core sdk,nginx,iptables,iptables-persistent。

发布项目

??创建一个文件夹使用 git 把源码 clone 下来,然后执行

dotnet publish --configuration Release

??接下来我们切换到 bin/Release/netcoreapp3.0/目录下,这里有发布完成的文件,将文件复制到网站根目录下。

配置代理

我们需要修改 nginx 的配置文件(/etc/nginx/sites-available/default )

server {
listen 80;//外部访问的端口
server_name example.com \*.example.com;
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;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto \$scheme;
    }
}

??接下来我们需要验证配置文件有没有写对,执行:sudo nginx -t,如果显示成功则执行:sudo nginx -s reload 重启 nginx,这样才会读到我们修改之后的配置文件。

??执行完之后我们切回到网站根目录执行 dotnet xxx.dll 运行文件。此时在浏览器中输入 公网地址:80/controllers/action 你会发现访问不到。

开启端口

??开启对外端口分两步,第一步开启 ubuntu 中的端口,第二部开启阿里云的安全组。
??开启 ubuntu 的端口非常简单,请保证成功安装 iptables,iptables-persistent。

  1. iptables -I INPUT -p tcp --dport 开启的端口号 -j ACCEPT
  2. iptables-save
  3. sudo netfilter-persistent save
  4. sudo netfilter-persistent reload

??开启阿里云的安全组。请在实例列表中点击 更多-网络和安全组-安全组配置-配置规则-快速创建规则。只需要填写端口和授权对象,没有特殊要求的话授权对象填 0.0.0.0/0 即可。

守护进程

??就是为了防止程序出错的时候挂掉,如果挂掉就重启,目前我是这么理解的。首先创建一个服务文件。

sudo vim /etc/systemd/system/kestrel-helloapp.service

??编写文件内容

[Unit]
Description=描述信息

[Service]
WorkingDirectory=/var/www/helloapp 网站根目录
ExecStart=/usr/bin/dotnet 执行的命令 /var/www/helloapp/helloapp.dll 执行命令的目标
可以理解为 dotnet /var/www/helloapp/helloapp.dll
Restart=always

RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target
  1. 对服务进行保存 sudo systemctl enable kestrel-helloapp.service
  2. 使服务执行 sudo systemctl start kestrel-helloapp.service
  3. 查看服务的状态 sudo systemctl status kestrel-helloapp.service

??这样我们就不用再网站根目录下执行 dotnet xxx.dll 了服务会自动帮我们执行,还有许多大佬用 PM2,可以学习一下。

总结

??总体来说官方文档还是非常好用的,中途虽然出现过问题但都是粗心出的。一切比较顺利,希望未来能找个好工作,加油!源码:https://github.com/netLearner7/graduation_API

.net core3.1+angular+is4 项目记录:部署篇

原文:https://www.cnblogs.com/zyz-Notes/p/12631160.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!