鑑於跨平臺趨勢潮流,小試一把微軟東家的跨平臺體驗。 期間坑多多,依次記錄,與君共勉。html
vs2017換了新打包皮膚 前端
dotnet xxx.Web.Host.dllmysql
能夠看到是成功的 linux
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
考慮到部署服務的狀況 此處能夠先將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;
}
}
}
複製代碼
可使用WinScp.exe 和putty.exe 操做centos
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 訪問到部署的服務