亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在CentOS上部署Asp.net Core應用程序

發布時間:2020-06-27 09:06:23 來源:網絡 閱讀:1548 作者:落日樓臺 欄目:編程語言

作為一個Linux新手,許多人向我鼓吹說CentOS多么強大,于是我就開始把一個演示程序發布到CentOS,想試一下它到底有多強大。在此之前,我將同樣的程序已經成功發布到了Ubuntu,我覺得,既然已經有了前一次的成功經驗,不論CentOS還是Ubuntu都是Linux,道理應該差不多吧。但事實證明,還是有些差異的,某些在CentOS上頻出的問題在Ubuntu上卻沒有,所以我的感覺是Ubuntu部署Asp.net Core程序更容易些。


過程很不順利,但最終經過一天摸索已摸清個七八成,應用總算能運行了。


Asp.net Core應用需要反向代理配合才能運行,IIS、Apache和Nginx等Web服務軟件都可以作為它的反向代理。這里使用Nginx作為反向代理。


1.安裝.NET Core SDK。四個命令,依次執行:

sudo yum install libunwind libicu

curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?linkid=847103

sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet

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


2.安裝nginx。

yum install nginx


3.上傳應用程序。使用工具不限,在Windows上可以用MobaXterm,這個東西不錯,既能登錄系統,也能傳送和下載文件,還可以可視化地瀏覽服務器上的目錄、打開文件進行編輯。


4. 配置nginx。打開/etc/nginx/nginx.conf,找到“server”塊,把以前的東西刪除或注釋掉,再添加如下配置:

        listen 80;        

        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;

        }

此時,應用內部的Kestrel監聽的端口是5000,而外部用戶訪問應用仍然使用80端口。 


注意找到“user XXX;”這句,"XXX"可以為任何字串,這個東西要記住,稍后把.net Core應用監聽服務設置為系統服務時需要它。


5.經過第4步配置后,進入應用程序所在目錄,執行 

dotnet app.dll(app.dll是asp.net core應用程序發布后生成的文件,需要用你自己的應用名稱替代app.dll)


一切安好的話,此時應用應該可以訪問了,打開瀏覽器去試一下。


到此為止,應用程序已經部署好了。但是,你發現了,有個命令窗口一直開著,它就是執行dotnet xxxx.dll那個窗口,如果這個窗口關閉了,那么應用程序也隨即不能訪問了。作為完美型的程序猿,肯定不希望這個窗口總趴在屏幕上,這時就用到了系統服務,讓應用程序監聽服務在系統啟動時自動啟動,省去了每次啟動都需要再次執行dotnet命令去運行服務。


6.將應用程序的監聽服務設置為系統服務。這一步中,許多介紹部署.net core應用的文章都使用一個叫“Supervisor”的東西,這個東西我不熟,當然,其實我對整個Linux就不熟,通過參考資料,我使用系統自帶的systemd(據說以前的版本沒有這個東西,我用的是CentOS 7)來制作守護進程。


在/etc/systemd/system/目錄下建一個服務文件xxxx.service(用自己的名稱替換xxxx),然后打開,寫入:

[Unit]
    Description=應用描述
    [Service]
    WorkingDirectory=/sites/test_app   #工作目錄,合理配置
    #執行dotnet命令的地方,注意配置為自己機器上正確的dotnet所在路徑及程序所在路徑 
    ExecStart=/usr/local/bin/dotnet /sites/test_app/WebApp.dll  
    Restart=always
    RestartSec=10
    # 注意,這里User的值應該與第4步nginx.conf配置文件里user XXX的XXX相同。
    # 比如在nginx.conf中,有一句:user nginx;那么此處也為User的值就為nginx
    User=nginx
 
    Environment=ASPNETCORE_ENVIRONMENT=Production 
    [Install]
    WantedBy=multi-user.target

上面“#”號后面的是注釋,我加了些說明,實際使用時可以移除這些注釋。

在這步中遇到個問題,一開始,在“ExecStart ……“后面有個注釋,在執行
    systemctl enable xxxx.service
時老是報錯。后來把注釋移除,并且把這句后面的空格刪除后就正常了。


7.將服務設置為開機自啟,這樣每當機器重啟就不需要再執行dotnet命令來啟動應用程序監聽了,那個礙眼的dotnet監聽窗口也可以關閉了。

設置服務開機自啟:

systemctl enable xxxx.service


啟動服務:

systemctl start xxxx.service


查看服務狀態:

systemctl status xxxx.service 

如果服務沒能正常啟動,這個命令可以顯示哪里出錯。如果有錯誤,修改錯誤。

 

到此,部署完成,應該能訪問應用了。


第二天,我想起了已經把監聽服務設置成了系統服務,可以在重啟后不需要執行dotnet命令,于是我就想測一測到底靠不靠譜,就把機器重啟了。結果瀏覽器給我回饋了個“Bad Gateway”,真是不靠譜啊,說好的Linux強大呢?


我用systemctl status檢查了服務,顯示運行中,不是服務沒啟動,說明系統服務還是靠譜的。那怎么不能訪問了呢?網上找了半天沒找到想要的答案,突然想到,是不是nginx這玩意掛了,因為在安裝、配置nginx時這貨就曾經癱過,使用nginx -s reload命令想重啟一下nginx,結果發現它提示nginx.pid文件出了問題。關于這個問題的解決辦法,我在《Nginx在CentOS中丟失nginx.pid文件的處理》中提到過。

 

在Ubuntu下部署與這個差不多,某些命令不一樣。參考:https://docs.microsoft.com/zh-cn/aspnet/core/publishing/linuxproduction。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜宾市| 昌吉市| 资兴市| 开化县| 云安县| 修武县| 五大连池市| 寿光市| 陵川县| 柳林县| 崇左市| 松阳县| 雅安市| 浮山县| 黄梅县| 凌海市| 廉江市| 江城| 泰来县| 天峻县| 威海市| 盐池县| 泰州市| 三门峡市| 伊宁县| 黔南| 苍南县| 获嘉县| 元谋县| 嘉峪关市| 巴林左旗| 应城市| 都昌县| 阳泉市| 阳城县| 改则县| 中江县| 靖宇县| 民勤县| 信阳市| 麻栗坡县|