真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

在CentOS上部署Asp.netCore應(yīng)用程序-創(chuàng)新互聯(lián)

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

成都創(chuàng)新互聯(lián)是工信部頒發(fā)資質(zhì)IDC服務(wù)器商,為用戶提供優(yōu)質(zhì)的棕樹(shù)數(shù)據(jù)中心服務(wù)

過(guò)程很不順利,但最終經(jīng)過(guò)一天摸索已摸清個(gè)七八成,應(yīng)用總算能運(yùn)行了。

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

1.安裝.NET Core SDK。四個(gè)命令,依次執(zhí)行:

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.上傳應(yīng)用程序。使用工具不限,在Windows上可以用MobaXterm,這個(gè)東西不錯(cuò),既能登錄系統(tǒng),也能傳送和下載文件,還可以可視化地瀏覽服務(wù)器上的目錄、打開(kāi)文件進(jìn)行編輯。

4. 配置nginx。打開(kāi)/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;

      }

此時(shí),應(yīng)用內(nèi)部的Kestrel監(jiān)聽(tīng)的端口是5000,而外部用戶訪問(wèn)應(yīng)用仍然使用80端口。

注意找到“user XXX;”這句,"XXX"可以為任何字串,這個(gè)東西要記住,稍后把.net Core應(yīng)用監(jiān)聽(tīng)服務(wù)設(shè)置為系統(tǒng)服務(wù)時(shí)需要它。

5.經(jīng)過(guò)第4步配置后,進(jìn)入應(yīng)用程序所在目錄,執(zhí)行

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

一切安好的話,此時(shí)應(yīng)用應(yīng)該可以訪問(wèn)了,打開(kāi)瀏覽器去試一下。

到此為止,應(yīng)用程序已經(jīng)部署好了。但是,你發(fā)現(xiàn)了,有個(gè)命令窗口一直開(kāi)著,它就是執(zhí)行dotnet xxxx.dll那個(gè)窗口,如果這個(gè)窗口關(guān)閉了,那么應(yīng)用程序也隨即不能訪問(wèn)了。作為完美型的程序猿,肯定不希望這個(gè)窗口總趴在屏幕上,這時(shí)就用到了系統(tǒng)服務(wù),讓應(yīng)用程序監(jiān)聽(tīng)服務(wù)在系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng),省去了每次啟動(dòng)都需要再次執(zhí)行dotnet命令去運(yùn)行服務(wù)。

6.將應(yīng)用程序的監(jiān)聽(tīng)服務(wù)設(shè)置為系統(tǒng)服務(wù)。這一步中,許多介紹部署.net core應(yīng)用的文章都使用一個(gè)叫“Supervisor”的東西,這個(gè)東西我不熟,當(dāng)然,其實(shí)我對(duì)整個(gè)Linux就不熟,通過(guò)參考資料,我使用系統(tǒng)自帶的systemd(據(jù)說(shuō)以前的版本沒(méi)有這個(gè)東西,我用的是CentOS 7)來(lái)制作守護(hù)進(jìn)程。

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

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

上面“#”號(hào)后面的是注釋,我加了些說(shuō)明,實(shí)際使用時(shí)可以移除這些注釋。

在這步中遇到個(gè)問(wèn)題,一開(kāi)始,在“ExecStart ……“后面有個(gè)注釋,在執(zhí)行
    systemctl enable xxxx.service
時(shí)老是報(bào)錯(cuò)。后來(lái)把注釋移除,并且把這句后面的空格刪除后就正常了。

7.將服務(wù)設(shè)置為開(kāi)機(jī)自啟,這樣每當(dāng)機(jī)器重啟就不需要再執(zhí)行dotnet命令來(lái)啟動(dòng)應(yīng)用程序監(jiān)聽(tīng)了,那個(gè)礙眼的dotnet監(jiān)聽(tīng)窗口也可以關(guān)閉了。

設(shè)置服務(wù)開(kāi)機(jī)自啟:

systemctl enable xxxx.service

啟動(dòng)服務(wù):

systemctl start xxxx.service

查看服務(wù)狀態(tài):

systemctl status xxxx.service

如果服務(wù)沒(méi)能正常啟動(dòng),這個(gè)命令可以顯示哪里出錯(cuò)。如果有錯(cuò)誤,修改錯(cuò)誤。

到此,部署完成,應(yīng)該能訪問(wèn)應(yīng)用了。

第二天,我想起了已經(jīng)把監(jiān)聽(tīng)服務(wù)設(shè)置成了系統(tǒng)服務(wù),可以在重啟后不需要執(zhí)行dotnet命令,于是我就想測(cè)一測(cè)到底靠不靠譜,就把機(jī)器重啟了。結(jié)果瀏覽器給我回饋了個(gè)“Bad Gateway”,真是不靠譜啊,說(shuō)好的Linux強(qiáng)大呢?

我用systemctl status檢查了服務(wù),顯示運(yùn)行中,不是服務(wù)沒(méi)啟動(dòng),說(shuō)明系統(tǒng)服務(wù)還是靠譜的。那怎么不能訪問(wèn)了呢?網(wǎng)上找了半天沒(méi)找到想要的答案,突然想到,是不是nginx這玩意掛了,因?yàn)樵诎惭b、配置nginx時(shí)這貨就曾經(jīng)癱過(guò),使用nginx -s reload命令想重啟一下nginx,結(jié)果發(fā)現(xiàn)它提示nginx.pid文件出了問(wèn)題。關(guān)于這個(gè)問(wèn)題的解決辦法,我在《Nginx在CentOS中丟失nginx.pid文件的處理》中提到過(guò)。

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

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買多久送多久。


網(wǎng)站題目:在CentOS上部署Asp.netCore應(yīng)用程序-創(chuàng)新互聯(lián)
文章出自:http://weahome.cn/article/dpepoh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部