Abp aspnet-core项目部署到Centos7.2

绝地灬酷狼 2021-07-27 00:17 630阅读 0赞

Abp aspnet-core项目部署到Centos7.2全流程攻略

前言

鉴于跨平台趋势潮流,小试一把微软东家的跨平台体验。 期间坑多多,依次记录,与君共勉。

流程简单记录

  • 在官方aspnetboilerplate生成项目架构
  • 还原项目并修改配置添加数据库支持
  • 本地生成并且打包成文件
  • linux系统选择的Centos7.2测试,其他版本请相应修改,环境以及服务的搭建
  • 打包文件部署到服务器并部署调试
  • 安装supervisor守护程序守护项目

具体步骤

1 前期准备

1. 在官方下载项目模板

format_png

版本选择ASPNET Core版本 至于前端展示取决于业务需求。反正我用的是前后端分离,所以这块是用不到的。

2. 下载的项目结构如图所示

format_png 1

具体工程的功能请自寻解释在此不再展开。 修改XXX.Migrator 和XXX.Web.Host下appsetings.json的链接字符串,此处由于我用的是mysql数据库。关于如何修改配置 请参考博客园此篇文章。

https://www.cnblogs.com/stulzq/p/7242581.html

3. 文件打包

format_png 2

选择打包到文件夹位置指定。最终在/bin/debug/netcoreapp2.0/publish下会生成打包好的文件。本地调试

dotnet xxx.Web.Host.dll

可以看到是成功的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b9ublXSV-1588131590987)(https://img2020.cnblogs.com/blog/740100/202004/740100-20200429113207613-719495257.png)\]
至此打包准备工序完成。

4. linux环境准备

安装.Net Core SDK 2.0
首先安装依赖包

  1. yum install libunwind libicu

获取dotnet-sdk最新版本

https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.0.0-download.md

  1. wget https://download.microsoft.com/download/1/B/4/1B4DE605-8378-47A5-B01B-2C79D6C55519/dotnet-sdk-2.0.0-linux-x64.tar.gz

解压到制定目录

  1. mkdir -p /usr/local/dotnet
  2. tar zxf dotnet-sdk-2.0.0-linux-x64.tar.gz -C /usr/local/dotnet

添加链接文件。

  1. ln -s /usr/local/dotnet/dotnet /usr/local/bin

考虑到部署服务的情况 此处可以先将nginx安装好.
下载对应当前系统版本的nginx包(package),
具体版本根据自己情况 nginx在此选择

  1. wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

建立nginx的yum仓库

  1. rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm

下载并安装nginx

  1. yum install nginx

启动nginx服务

  1. systemctl start nginx
  2. service nginx start

可以通过命令whereis 或find查找nginx的配置文件
并加以修改

  1. user nginx;
  2. worker_processes 1;
  3. error_log /var/log/nginx/error.log warn;
  4. pid /var/run/nginx.pid;
  5. events {
  6. worker_connections 1024;
  7. }
  8. http {
  9. include /etc/nginx/mime.types;
  10. default_type application/octet-stream;
  11. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  12. '$status $body_bytes_sent "$http_referer" '
  13. '"$http_user_agent" "$http_x_forwarded_for"';
  14. access_log /var/log/nginx/access.log main;
  15. sendfile on;
  16. #tcp_nopush on;
  17. keepalive_timeout 65;
  18. #gzip on;
  19. #如果是多站点配置,需要启用这个配置,然后在conf.d文件夹下,创建多个配置文件即可。比如www.a.com.conf、www.b.com.conf
  20. #include /etc/nginx/conf.d/*.conf;
  21. server {
  22. listen 80;
  23. #root /usr/share/nginx/html;
  24. #index index.html index.htm;
  25. # Make site accessible from http://localhost/
  26. server_name hwapp.netcore.cn;
  27. location / {
  28. proxy_pass http://localhost:5000;
  29. proxy_http_version 1.1;
  30. proxy_set_header Upgrade $http_upgrade;
  31. proxy_set_header Connection keep-alive;
  32. proxy_set_header Host $host;
  33. proxy_cache_bypass $http_upgrade;
  34. proxy_set_header X-Real-IP $remote_addr;
  35. proxy_set_header REMOTE-HOST $remote_addr;
  36. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  37. }
  38. }
  39. }

5. 将打包好的文件拷贝到服务器指定目录

可以使用WinScp.exe 和putty.exe 操作centos

6. 安装supersivor守护程序

  1. yum install supersivor

配置supervisor

在etc下创建目录,并赋权限

  1. mkdir -m 700 -p /etc/supervisor

在目录“ /etc/supervisor”下创建配置文件

  1. echo_supervisord_conf > /etc/supervisor/supervisord.conf

修改配置文件

  1. vim /etc/supervisor/supervisord.conf

在文件末尾添加,注意首尾需无空格,需顶格

  1. [include]
  2. files=/etc/supervisor/conf.d/*.conf

复制代码在目录“/etc/supervisor”下创建dotnet core 进程配置文件存放目录“conf.d”

  1. mkdir -m 700 /etc/supervisor/conf.d

创建进程配置文件

  1. vim /etc/supervisor/conf.d/MyDotNetName.conf

“MyDotNetName”可以为dotnet core 入口dll文件名字 ,插入内容,注意首尾需无空格,需顶格:

  1. [program:MyDotNetName]
  2. command=/bin/bash -c "dotnet MyDotNetName.dll"
  3. directory=/usr/PublishOutput/
  4. stderr_logfile=/var/log/MyDotNetName.error.log
  5. stdout_logfile=/var/log/MyDotNetName.stdout.log
  6. environment=ASPNETCORE_ENVIRONMENT=Production
  7. user=root
  8. stopsignal=INT
  9. autostart=true
  10. autorestart=true
  11. startsecs=3
  12. [program:MyDotNetName] ;显示名称
  13. command=/bin/bash -c "dotnet MyDotNetName.dll" ;运行命令,启动dotnet进程
  14. directory=/usr/PublishOutput/ ;MyDotNetName目录
  15. stderr_logfile=/var/log/MyDotNetName.error.log ;错误日志文件
  16. stdout_logfile=/var/log/MyDotNetName.stdout.log ;日志文件
  17. environment=ASPNETCORE_ENVIRONMENT=Production ;进程环境变量
  18. user=root ;进程执行用户
  19. autostart=true;自动启动
  20. autorestart=true ;是否自动重启
  21. startsecs=3 ;自动重启间隔时间

创建supervisor 自启动服务

  1. vim /etc/systemd/system/supervisor.service

贴入配置

  1. [Unit]
  2. Description=supervisor
  3. [Service]
  4. Type=forking
  5. ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
  6. ExecStop=/usr/bin/supervisorctl shutdown
  7. ExecReload=/usr/bin/supervisorctl reload
  8. KillMode=process
  9. Restart=on-failure
  10. RestartSec=42s
  11. [Install]
  12. WantedBy=multi-user.target

使配置生效

  1. systemctl daemon-reload

设置服务开机启动,即设置enable

  1. systemctl enable supervisor.service

启动服务

  1. systemctl start supervisor.service

验证dotnet进程是否启动
使用命令“ps -ef | grep dotnet”查看dotnet 是否运行

  1. [root@machine ~]# ps -ef | grep dotnet
  2. root 2281 2280 0 15:27 ? 00:00:00 dotnet MyDotNetName.dll
  3. root 2302 2217 0 15:30 pts/0 00:00:00 grep --color=auto dotnet

最终可以通过http://ip 访问到部署的服务

format_png 3

作者:zhaohejing
链接:https://juejin.im/post/5a4f20edf265da3e2d333cf9
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

发表评论

表情:
评论列表 (有 0 条评论,630人围观)

还没有评论,来说两句吧...

相关阅读