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

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

前言

鑑於跨平臺趨勢潮流,小試一把微軟東家的跨平臺體驗。 期間坑多多,依次記錄,與君共勉。html

流程簡單記錄

  1. 在官方aspnetboilerplate生成項目架構
  2. 還原項目並修改配置添加數據庫支持
  3. 本地生成而且打包成文件
  4. linux系統選擇的Centos7.2測試,其餘版本請相應修改,環境以及服務的搭建
  5. 打包文件部署到服務器並部署調試
  6. 安裝supervisor守護程序守護項目

具體步驟

1 前期準備

1. 在官方下載項目模板

模板下載
版本選擇ASPNET Core版本 至於前端展現取決於業務需求。反正我用的是先後端分離,因此這塊是用不到的。

2. 下載的項目結構如圖所示

具體工程的功能請自尋解釋在此再也不展開。 修改XXX.Migrator 和XXX.Web.Host下appsetings.json的連接字符串,此處因爲我用的是mysql數據庫。關於如何修改配置 請參考 博客園此篇文章。

3. 文件打包

vs2017換了新打包皮膚 前端

選擇打包到文件夾位置指定。最終在/bin/debug/netcoreapp2.0/publish下會生成打包好的文件。本地調試

dotnet xxx.Web.Host.dllmysql

能夠看到是成功的 linux

至此打包準備工序完成。

4. linux環境準備

  1. 安裝.Net Core SDK 2.0 首先安裝依賴包

yum install libunwind libicunginx

獲取dotnet-sdk最新版本git

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

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

解壓到制定目錄數據庫

mkdir -p /usr/local/dotnetjson

tar zxf dotnet-sdk-2.0.0-linux-x64.tar.gz -C /usr/local/dotnet

添加連接文件。

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

  1. 考慮到部署服務的狀況 此處能夠先將nginx安裝好.

    下載對應當前系統版本的nginx包(package), 具體版本根據本身狀況 nginx在此選擇

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

創建nginx的yum倉庫

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

下載並安裝nginx

 yum install nginx

啓動nginx服務

systemctl start nginx

service nginx start

能夠經過命令whereis 或find查找nginx的配置文件 並加以修改

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush on;
    keepalive_timeout  65;
    #gzip on;
#若是是多站點配置,須要啓用這個配置,而後在conf.d文件夾下,建立多個配置文件便可。好比www.a.com.conf、www.b.com.conf
    #include /etc/nginx/conf.d/*.conf;
server {
    listen 80;
    #root /usr/share/nginx/html;
    #index index.html index.htm;
    # Make site accessible from http://localhost/
    server_name hwapp.netcore.cn;
    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-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
} 
複製代碼

5. 將打包好的文件拷貝到服務器指定目錄

可使用WinScp.exe 和putty.exe 操做centos

6. 安裝supersivor守護程序

yum install supersivor

配置supervisor

在etc下建立目錄,並賦權限

mkdir -m 700 -p /etc/supervisor

在目錄「 /etc/supervisor」下建立配置文件

echo_supervisord_conf > /etc/supervisor/supervisord.conf

修改配置文件

vim /etc/supervisor/supervisord.conf

在文件末尾添加,注意首尾需無空格,需頂格

[include]
files=/etc/supervisor/conf.d/*.conf
複製代碼

在目錄「/etc/supervisor」下建立dotnet core 進程配置文件存放目錄「conf.d」

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

建立進程配置文件

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

"MyDotNetName"能夠爲dotnet core 入口dll文件名字 ,插入內容,注意首尾需無空格,需頂格:

[program:MyDotNetName]
command=/bin/bash -c "dotnet MyDotNetName.dll"
directory=/usr/PublishOutput/
stderr_logfile=/var/log/MyDotNetName.error.log
stdout_logfile=/var/log/MyDotNetName.stdout.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=3
複製代碼
[program:MyDotNetName] ;顯示名稱
command=/bin/bash -c "dotnet MyDotNetName.dll"  ;運行命令,啓動dotnet進程
directory=/usr/PublishOutput/   ;MyDotNetName目錄
stderr_logfile=/var/log/MyDotNetName.error.log  ;錯誤日誌文件
stdout_logfile=/var/log/MyDotNetName.stdout.log  ;日誌文件
environment=ASPNETCORE_ENVIRONMENT=Production  ;進程環境變量
user=root   ;進程執行用戶
autostart=true;自動啓動 
autorestart=true ;是否自動重啓
startsecs=3 ;自動重啓間隔時間
複製代碼

建立supervisor 自啓動服務

vim /etc/systemd/system/supervisor.service

貼入配置

[Unit]
Description=supervisor

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
複製代碼

使配置生效

systemctl daemon-reload

設置服務開機啓動,即設置enable

systemctl enable supervisor.service

啓動服務

systemctl start supervisor.service

驗證dotnet進程是否啓動

使用命令「ps -ef | grep dotnet」查看dotnet 是否運行

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

最終能夠經過http://ip 訪問到部署的服務

相關文章
相關標籤/搜索