dotNet core 應用部署centos

---恢復內容開始---html

閱讀目錄python

  1.  須要安裝的插件以及支撐架構
  2.  安裝dotnetSDK
  3.  安裝jexus
  4.  安裝supervisord
  5.  遇到問題彙總
  6.  注意事項、擴展延伸

 

須要安裝的插件以及支撐架構linux

1.dotnetSDKgit

dotnet 相關命令是屬於 .NET Core command-line (CLI) 的一部分,Microsoft 爲咱們提供了這個命令行工具以供咱們在開發程序中使用,它主要用來進行對代碼的編譯、NuGet 包的管理、程序的運行、測試等等。github

2.jexusweb

Jexus 是Linux平臺上 的一款免費的ASP.NET WEB服務器。它是 Linux、Unix、FreeBSD等非Windows系統架設 ASP.NET WEB 服務器的核心程序,具有反向代理、入侵檢測等重要功能。擁有IIS和其它Web服務器所不具有的高度的安全性vim

3.supervisordcentos

supervisord 是用Python實現的一款很是實用的進程管理工具,在批量服務化管理時特別有效。能夠將非Daemon的應用轉爲Daemon程序。安全

 

安裝dotNetSDKbash

執行命令

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm sudo yum update sudo yum install libunwind libicu sudo yum install dotnet-sdk-2.1.200

安裝對應的 dotnet運行時,此次開發用到的是 2.0.6

參考地址:

https://www.microsoft.com/net/download/linux-package-manager/centos/runtime-2.0.6

執行命令

sudo yum install dotnet-runtime-2.0.6

 

安裝Jexus

curl https://jexus.org/release/x64/install.sh|sh cd /usr/jexus/siteconf cp default lottery               #lottery是配置名稱,不一樣網站名稱不一樣 vim lottery

修改的內容參考:

port=80 root=/ /dotnet/webAPP/admin1.lottery.com/ hosts=*,admin2.lottery.com    #OR your.com,*.your.com # addr=0.0.0.0 # CheckQuery=false NoLog=true AppHost={CmdLine=/dotnet/webAPP/admin1.lottery.com/Lottery.WEB.dll;AppRoot=/dotnet/webAPP/admin1.lottery.com;Port=5001}

#這一行數據能夠無論他,配置https時候用到

# UseHttps=true

# ssl.certificate=/x/xxx.crt  #or pem

# ssl.certificatekey=/x/xxx.key

# ssl.protocol=TLSv1.0    # TLSv1.1 or  TLSv1.2...

# ssl.ciphers=

 

重啓讀取配置文件

sh /usr/jexus/jws restart

 

重啓讀取配置文件以後,本地機器作好host文件映射便可經過域名方式訪問該站點

 

設置jexus開機自啓動

參考地址:http://www.bubuko.com/infodetail-1295747.html

 

cd /etc/init.d vim jws

i編輯模式,粘貼下面內容

#!/bin/bash   #chkconfig: 2345 80 05 #description:jws # . /etc/rc.d/init.d/functions case "$1" in start)  echo "Jexus Start.."  /usr/jexus/jws start  ;; stop)  echo "Jexus Stop.."  /usr/jexus/jws stop  ;; restart)  echo "Jexus Restart"  /usr/jexus/jws restart  ;; status)  /usr/jexus/jws status  ;;*)  exit 1  ;; esac    exit $RETVAL

 

添加權限

chmod 766 jws

添加服務

chkconfig --add jws

 

安裝Supervisord

參考地址:http://www.javashuo.com/article/p-kduhyqgp-z.html

yum install python-setuptools easy_install supervisor

 

配置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/lottery.conf

[program:Lottery.WEB] command=/bin/bash -c "dotnet Lottery.WEB.dll" directory=/dotnet/webAPP/admin1.lottery.com/ stderr_logfile=/var/log/Lottery.error.log stdout_logfile=/var/log/Lottery.stdout.log environment=ASPNETCORE_ENVIRONMENT=Production user=root stopsignal=INT autostart=true autorestart=true startsecs=1

備註command=/bin/bash -c "dotnet Lottery.WEB.dll"

能夠改爲 command=dotnet /dotnet/webAPP/admin1.lottery.com/dotnet Lottery.WEB.dll

[program:Lottery.WEB] ;顯示名稱

command=/bin/bash -c "dotnet MyDotNetName.dll"  ;運行命令,啓動dotnet進程

directory=/usr/PublishOutput/   ;MyDotNetName目錄

stderr_logfile=/var/log/Lottery.error.log  ;錯誤日誌文件

stdout_logfile=/var/log/Lottery.stdout.log  ;日誌文件

environment=ASPNETCORE_ENVIRONMENT=Production  ;進程環境變量

user=root   ;進程執行用戶

autostart=true  ;自動啓動 autorestart=true   ;是否自動重啓

startsecs=1     ;自動重啓間隔時間

 

建立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 是否運行

ps -ef | grep dotnet root      1549  2529  0 17:17 pts/0    00:00:00 grep --color=auto dotnet root     27795 27764  0 17:07 ?        00:00:02 dotnet Lottery.WEB.dll

 

supervisor遠程管理

使用命令「vim /etc/supervisor/supervisord.conf」修改配置文件,以下設置

;[inet_http_server]         ; inet (TCP) server disabled by default

;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)

;username=user              ; (default is no username (open server))

;password=123               ; (default is no password (open server))

;如下內容開啓http服務[inet_http_server]

[inet_http_server]

port=192.168.1.71:9001      ;ip 加端口 username=admin               ;登錄帳號,能夠不設 password=123456              ;登錄帳戶,能夠不設

 

重啓服務,就能夠訪問了

注意防火牆是否對端口9001開放

 

也能夠設置成

[inet_http_server]

port=*:9001

username=root               ;登錄帳號,能夠不設

password=123456              ;登錄帳戶,能夠不設

 

問題彙總

圖片驗證碼報錯的話安裝

解決:

yum install libgdiplus-devel

注意:

yum install libgdiplus 後,在centos7 下,程序並不能運行成功仍是報錯,查看libgdiplus安裝狀況

rpm -qa |grep libgdiplus

rpm  -ql libgdiplus-2.10-9.el7.x86_64

/usr/lib64下缺乏libgdiplus.so文件

Centos7 須要經過安裝libgdiplus-devel來解決

 

yum install autoconf automake libtool

yum install freetype-devel fontconfig libXft-devel

yum install libjpeg-turbo-devel libpng-devel giflib-devel libtiff-devel libexif-devel

yum install glib2-devel cairo-devel

git clone https://github.com/mono/libgdiplus

cd libgdiplus

./autogen.sh

make

make install

cd /usr/lib64/

ln -s /usr/local/lib/libgdiplus.so gdiplus.dll

 

錯誤一

type init 錯誤。提示找不到libgdiplus組件

Make solution 1:

ln -s /usr/local/lib/libgdiplus.so /usr/lib64/libgdiplus.so ln -s /usr/local/lib/libgdiplus.so /usr/libgdiplus.so

 

驗證碼亂碼問題:

若是驗證碼亂碼,請確認生成驗證碼的字體庫是否存在服務器中

 

注意事項、擴展延伸

關於更新應用

Dotnet程序在運行當中,若是須要更新 dotnetCore應用,將新打包的應用直接覆蓋到部署的路徑下,在從supervisord 9001端口中重啓指定的應用,或者在服務器上執行命令

supervisorctl -c /etc/supervisor/supervisord.conf restart Lottery.WEB

 關於dotnetCore WEB應用設置不一樣的端口

修改Program.cs文件

        public static IWebHost BuildWebHost(string[] args) =>

            WebHost.CreateDefaultBuilder(args)

              .UseContentRoot(Directory.GetCurrentDirectory())

              .UseKestrel()

            .UseStartup<Startup>()

            .UseUrls("http://*:5001")

            .Build();

    }

關於部署 httpsWEB應用

在部署https WEB應用的時候,我已經拿到了 一個後綴爲pem文件還有一個後綴爲key的文件

第一步:須要這兩個文件生成後綴爲pfx文件,並設置生成 pfx文件的密碼

centos系統下執行命令

openssl pkcs12 -export -out iiscert.pfx -inkey private.key -in public.pem 

而後會讓你輸入密碼(密碼不要忘記了)

 

第二步:修改jexus站點配置信息

vim /etc/supervisor/conf.d/lottery.conf

 

UseHttps=true

ssl.certificate=/dotnet/httpsKey/public.pem  #crt or pem

ssl.certificatekey=/dotnet/httpsKey/private.key

ssl.protocol=TLSv1.2    # TLSv1.1 or  TLSv1.2...

#ssl.ciphers=

 

wp! 保存

 

修改程序 Program.cs文件

  public static IWebHost BuildWebHost(string[] args) =>

            WebHost.CreateDefaultBuilder(args)

            .UseContentRoot(Directory.GetCurrentDirectory())

         .UseKestrel(options => options.Listen(IPAddress.Any, 5003, listenOptions =>

         {

             listenOptions.UseHttps(new X509Certificate2("/dotnet/httpsKey/iiscert.pfx", "123456"));             

         }))

              .UseStartup<Startup>()

             .Build();

 

從新部署到服務器,並重啓supervisor對應的進程

 

關於部署非WEB應用

若是須要部署到非WEB應用程序,則不須要執行 jexus的步驟,直接在 supervisor上新增一個進程配置文件(/etc/supervisor/conf.d/  這個目錄下一個*,conf文件表明一個進程配置)

相關文章
相關標籤/搜索