asp.net core2.0網站的環境搭建和網站部署


使用到的軟件和硬件

1.       centos7.3服務器一台

2.       xshellxftp

3.       vs2017

4.       .NET Core

 

1. 安裝 libicu 依賴

[root@jdu4e00u53f7 ~]# yum install libunwind libicu

 

2.下載.NET Core2.0

https://www.microsoft.com/net/download/linux

下載對應操作系統的Runtime版本

使用xftp5將下載的文件上傳到opt目錄下

[root@jdu4e00u53f7 opt]# mkdir -p /opt/dotnet && tar zxf dotnet-runtime-2.0.0-linux-x64.tar.gz -C /opt/dotnet

 

3.創建連接(環境配置)

[root@jdu4e00u53f7 dotnet]# ln -s /opt/dotnet/dotnet /usr/local/bin

 

4.測試環境是否成功

[root@jdu4e00u53f7 dotnet]# dotnet --info

 

 

234也可參考官網給的操作,安裝sdk版也可以。

https://www.microsoft.com/net/download/linux

 

 

5.項目發布

.net core項目在不制定具體端口的情況下,會默認使用5000端口

Program.cs添加.UseUrls("http://*:80")

使用xftp將發布程序上傳到服務器

[root@jdu4e00u53f7 aspnetcoreapp]# dotnet aspnetcoreapp.dll

至此,就是下圖的原理。

如果只是測試服務器上是否能跑起來程序,到此結束了。如果要正式線上運行還需要下面的操作。Nginx不識別http://*:80這樣的設置。

使用nginx+ supervisor后的原理。Nginx也可以使用jexus(開發者:宇內流雲)

 

6.安裝守護進程

所在目錄(/etc/supervisor/conf.d

[root@jdu4e00u53f7 aspnetcoreapp]# yum install python-setuptools

[root@jdu4e00u53f7 aspnetcoreapp]# easy_install supervisor

#配置supervisor

[root@jdu4e00u53f7 aspnetcoreapp]# mkdir /etc/supervisor

[root@jdu4e00u53f7 aspnetcoreapp]# echo_supervisord_conf > /etc/supervisor/supervisord.conf

[root@jdu4e00u53f7 aspnetcoreapp]# cd /etc/supervisor

[root@jdu4e00u53f7 supervisor]# ls

supervisord.conf

#修改配置文件

[root@jdu4e00u53f7 supervisor]# vi supervisord.conf

#將文件最后的內容修改為

創建目錄conf.d,在目錄下創建文件aspnetcoreapp.conf,編輯vi aspnetcoreapp.conf

[program:aspnetcoreapp]

command=dotnet aspnetcoreapp.dll

directory=/var/www/html/aspnetcoreapp

autostart=true

autorestart=true

stderr_logfile=/var/log/aspnetcoreapp.err.log

stdout_logfile=/var/log/aspnetcoreapp.out.log

environment=ASPNETCORE__ENVIRONMENT=Production

user=root

stopsignal=INT

 

運行supervisord並查看進程是否生效

[root@jdu4e00u53f7 conf.d]# supervisord -c /etc/supervisor/supervisord.conf

[root@jdu4e00u53f7 conf.d]# ps -ef | grep aspnetcoreapp

重啟supervisord

[root@jdu4e00u53f7 conf.d]# supervisorctl reload

關閉

[root@jdu4e00u53f7 bin]# supervisorctl shutdown

Shut down

開啟

[root@jdu4e00u53f7 bin]# supervisord -c /etc/supervisor/supervisord.conf

禁用開機啟動命令:systemctl disable supervisord  

查看是否開機自啟動:systemctl is-enabled supervisord

 

開啟管理界面

[root@jdu4e00u53f7 supervisor]# vi /etc/supervisor/supervisord.conf

 

 

7.安裝nginx

http://dl.fedoraproject.org/pub/epel/

下載

[root@jdu4e00u53f7 opt]# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm

安裝epel

[root@jdu4e00u53f7 opt]# rpm -ivh epel-release-7-10.noarch.rpm

 

安裝nginx

[root@jdu4e00u53f7 opt]# yum install nginx

啟動nginx

[root@jdu4e00u53f7 opt]# systemctl start nginx

nginx添加至SELinux的白名單,否則會報502錯誤

[root@jdu4e00u53f7 opt]# yum install policycoreutils-python

semodule -i mynginx.pp

測試nginx是否正常

curl http://127.0.0.1

由於京東雲上面已經安裝了nginx,上面的步驟也就沒執行。

 

8.配置nginx

修改配置文件/etc/nginx/nginx.confserver部分為以下內容,配置Nginx偵聽之前的網站

nginx -s reload  :修改配置后重新加載生效

nginx -s stop  :快速停止nginx

 

 

小知識

防火牆設置

firewall-cmd --zone=public --add-port=80/tcp --permanent

命令含義:

--zone #作用域

--add-port=80/tcp  #添加端口,格式為:端口/通訊協議

--permanent  #永久生效,沒有此參數重啟后失效

重啟防火牆

firewall-cmd –reload

 

通過systemctl status firewalld查看firewalld狀態,發現當前是dead狀態,即防火牆未開啟。

通過systemctl start firewalld開啟防火牆,沒有任何提示即開啟成功。

再次通過systemctl status firewalld查看firewalld狀態,顯示running即已開啟了。

如果要關閉防火牆設置,可能通過systemctl stop firewalld這條指令來關閉該功能。

再次執行執行firewall-cmd --permanent --zone=public --add-port=3306/tcp,提示success,表示設置成功,這樣就可以繼續后面的設置了。

 

 

參考資料:

1. UseUrls的使用

https://q.cnblogs.com/q/80263/

2. 官方下載安裝說明

https://www.microsoft.com/net/download/linux

3. kestrel介紹

http://www.cnblogs.com/Wddpct/p/6123653.html

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x

https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x

 

4. self-contained(自宿主)部署方式,不推薦

http://www.cnblogs.com/dudu/p/5638172.html

https://docs.microsoft.com/zh-cn/dotnet/core/deploying/index

https://docs.microsoft.com/zh-cn/dotnet/core/deploying/deploy-with-vs

https://github.com/dotnet/corefx/blob/master/pkg/Microsoft.NETCore.Platforms/runtime.json

 

5.asp.net core遷移博客

http://www.cnblogs.com/mantgh/p/5658398.html

6.asp.net core發布到linux

http://www.cnblogs.com/smileberry/p/6878421.html

7.另一篇部署

http://www.cnblogs.com/ants/p/5732337.html

8.asp.net core啟動流程

http://www.cnblogs.com/sheng-jie/p/7640163.html

9.還是一篇部署

https://segmentfault.com/a/1190000010763523

http://www.cnblogs.com/yuangang/p/5787122.html

10.守護進程

http://www.cnblogs.com/savorboard/p/dotnetcore-supervisor.html

 

11..NET文檔

https://docs.microsoft.com/zh-cn/dotnet/

https://www.microsoft.com/net/core#windowscmd

 

 

 

 

 

總結

1.       Program.cs里設置.UseUrls("http://*:8080"),發布后使用dotnet XXXX.dll后,不使用ctrl+C退出則可以公網訪問。但是,一旦退出(關閉遠程連接)則無法訪問,需要使用守護進程+nginx,Program.cs則要設置.UseUrls("http://127.0.0.1:8080")

 

 

 

 

 

 

 

Jexus

1.安裝

curl https://jexus.org/release/x64/install.sh|sh

 

2.開啟與關閉

[root@jdu4e00u53f7 jexus-5.8.2]# cd /usr/jexus

[root@jdu4e00u53f7 jexus]# ./jws start

Starting ... OK

[root@jdu4e00u53f7 jexus]# ./jws stop

Stopping ... ... OK.

 

2.配置

先關閉nginxSupervisor

[root@jdu4e00u53f7 siteconf]# pkill -9 nginx

[root@jdu4e00u53f7 siteconf]# supervisorctl shutdown

 

[root@jdu4e00u53f7 siteconf]# vi default

port=80

root=/ /var/www/html/aspnetcoreapp

hosts=*    #OR your.com,*.your.com

 

 

# addr=0.0.0.0

# CheckQuery=false

NoLog=trueAppHost={CmdLine=dotnet /var/www/html/aspnetcoreapp/aspnetcoreapp.dll;AppRoot=/var/www/html/aspnetcoreapp;Port=8080}

# NoFile=/index.aspx

Keep_Alive=false

UseGZIP=false

OutLog=/tmp/out.txt;

ErrorLog=/tmp/err.txt;

 

[root@jdu4e00u53f7 siteconf]# cd ..

[root@jdu4e00u53f7 jexus]# ./jws start

 

2.設置自啟動

 

 

Jexus包括如下操作命令(首先 cd /usr/jexus):

啟動:sudo ./jws start

停止:sudo ./jws stop

重啟:sudo ./jws restart

 

如何部署多個網站?(jexus的版本必須是5.8.2及以上)

1.去除Program.cs里的UseUrls

2. siteconf下新建每個網站的配置文件,一個網站一個配置文件

3.配置里Port設置為0

我這邊配置了2個網站core.uoolo.comnetcore.uoolo.com 2個站點

 

參考:

http://blog.csdn.net/u010584641/article/details/73611223

https://www.jexus.org/

http://www.cnblogs.com/savorboard/p/dot-net-linux-jexus.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM