.netcore 通過SCD獨立部署方式 部署到Linux(CentOS7) 另補充結(jié)合Nginx搭建

事先說明:本人是通過visual studio 2019 + 發(fā)布為文件夾的形式部署 , 通過vs部署發(fā)布的好處在于很多配置項vs會幫我們自動生成到配置文件中

1.確保你的項目是已經(jīng)通過本地測試可以正常運行的,假設(shè)你的項目名為firstapp,后方運行時要用
2.在vs中打開項目,上方菜單欄"生成", 然后點擊 '發(fā)布[你的項目名稱]',然后彈出發(fā)布配置窗口
image.png
3.點擊途中綠色圈住的"編輯"按鈕,彈出配置界面
image.png
4.發(fā)布方法我們選擇"文件系統(tǒng)",目標(biāo)位置自己設(shè)置一下,即最后打包出的文件夾放在哪
5.我們再點擊左側(cè)的"設(shè)置",得到如下界面
image.png

1.配置,表示我們是'Release'還是'Debug'的形式發(fā)布
2.目標(biāo)框架,即netcore使用的版本
3.部署模式,這里就是區(qū)分獨立部署還是依賴部署的地方了,依賴部署的話,要求你服務(wù)器上還要安裝對應(yīng)版本netcore的運行時環(huán)境,我們這里選擇的是獨立部署,即所有依賴文件都會自動打包到你的文件夾中,然后在服務(wù)器上不用安裝netcore就能跑起來了
4.目標(biāo)運行時,我們選擇自己服務(wù)器對應(yīng)的版本就好,這里是演示linux版本,具體32位還是64位服務(wù)器自己確定吧
5.然后我們點保存

6.保存之后回到第一張截圖界面,我們點擊"發(fā)布"
7.等待發(fā)布完成后,得到我們項目的文件夾,假設(shè)名為 myapp

我們可以查看一下myapp文件夾,發(fā)現(xiàn)打包了很多項目中需要用到的dll,還有一些json配置文件和一些linux下的so文件,還有幾個跟你項目名稱相關(guān)的文件...

  1. firstapp //在linux上通過./firstapp來執(zhí)行整個項目
  2. firstapp.deps.json //項目依賴文件
  3. firstapp.dll //項目程序集
  4. firstapp.pdb //項目調(diào)試文件,會協(xié)助firstapp.dll運行遇到錯誤拋出異常
  5. firstapp.runtimeconfig.json //運行時配置文件
8.登錄到我們的linux系統(tǒng),一般網(wǎng)站都放在/var/www下,沒有www目錄,我們就新建一個www目錄,如果你只是測試,你放別的地方也可以
9.通過FTP工具將剛打包出來的myapp文件夾上傳到/var/www/目錄下
10.前往對應(yīng)目錄,并執(zhí)行命令即可運行項目
cd /var/www/myapp
./firstapp           #這個firstapp是你項目的名字,參見第7條

如果無法執(zhí)行提示權(quán)限問題 Permission denied 或者 no live upstreams while connecting to upstream 錯誤時候
1.那么請嘗試給打包出來的文件夾權(quán)限,777(先嘗試是否是此問題)
2.可能是selinux導(dǎo)致的
          /usr/sbin/sestatus    先查看selinux狀態(tài)
          vim /etc/selinux/config  修改selinux狀態(tài)
          將SELINUX=enforcing 修改為 SELINUX=disabled 狀態(tài)

如果遇到"Process terminated. Couldn't find a valid ICU package installed on the system"的問題
嘗試安裝ICU庫

sudo yum install -y icu

補充,接下來基于Centos補充Nginx + supervisor 來自動啟動并守護(hù)項目進(jìn)程

安裝 Nginx

sudo yum install -y nginx

由于nginx是第一次安裝的圆凰,請通過運行以下命令來顯式啟動:

sudo service nginx start

##如果需要開機(jī)自啟動,請執(zhí)行
systemctl enable nginx.service

修改/etc/nginx/nginx.conf文件,并用以下內(nèi)容替換對應(yīng)的server節(jié)點部分:

配置Nginx

server {
    listen        80;
    server_name   myserver;
    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-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

安裝supervisor守護(hù)進(jìn)程

通過yum安裝supervisor,注意,如果使用python pip安裝,那么最好確保是python2的版本,python3現(xiàn)在可以使用supervisor,但是通過pip安裝的可能會出現(xiàn)異常

yum install -y supervisor

配置守護(hù)進(jìn)程信息

切換到supervisord.d目錄,該目錄下的ini文件都會在supervisor服務(wù)啟動時被守護(hù)執(zhí)行
cd /etc/supervisord.d

#在此新建一個supervisor的.ini配置文件
touch myserver.ini

編輯 myserver.ini 文件

[program:myserver]
directory=/var/www/這里填文件夾名稱
command=/bin/bash -c "./myserver"
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=10                
stderr_logfile=/var/log/myserver.err.log
stdout_logfile=/var/log/myserver.out.log
下面內(nèi)容為上方文件的說明
#下面所有注釋的內(nèi)容都要刪除,包括這一句
[program:myserver]                                            #配置當(dāng)前守護(hù)進(jìn)程服務(wù)的名稱,supervisord可直接通過名稱啟動服務(wù)
directory=/var/www/myapp                                 #工作目錄,即應(yīng)用程序集所在目錄
command=下方詳解                                          #執(zhí)行的命令
environment=ASPNETCORE__ENVIRONMENT=Production           #表明是生產(chǎn)環(huán)境
user=root                                                #root 權(quán)限
stopsignal=INT
autostart=true
autorestart=true
startsecs=10                                             #進(jìn)程持續(xù)運行多久才認(rèn)為是啟動成功
stderr_logfile=/var/log/myserver.err.log    
stdout_logfile=/var/log/myserver.out.log

注意,上方配置文件中command參數(shù),這個參數(shù)表示守護(hù)進(jìn)程自動替我們執(zhí)行的命令
例如 python test.py 或者sh test.sh 再或者當(dāng)你安裝了dotnet環(huán)境后,通過依賴部署時,這里會填dotnet firstapp.dll
但是,我們是獨立部署的,通過./firstapp來運行,但是如果這樣配置command =./firstapp會發(fā)現(xiàn)守護(hù)進(jìn)程無法啟動,因為不識別這個命令
解決方案:我們通過/bin/bash -c "字符串命令"這樣來執(zhí)行就可以了,即command = /bin/bash -c "./firstapp"

啟動supervisord 守護(hù)程序,啟動后會執(zhí)行supervisord.d目錄下的ini文件

supervisord -c /etc/supervisord.conf

設(shè)置開機(jī)啟動守護(hù)程序supervisord

systemctl enable supervisord.service

重啟supervisord

supervisorctl reload  

最后補充,注意,如果要使用nginx的話,那么還有一些nginx反向代理相關(guān)配置要注意設(shè)置哦,例如

//這里很重要,由于通過nginx轉(zhuǎn)發(fā)給.netcore處理,所以如果不配置此項,那么想在netcore中獲取訪問端的IP的話,導(dǎo)致無法獲取
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末杈帐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子专钉,更是在濱河造成了極大的恐慌挑童,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跃须,死亡現(xiàn)場離奇詭異站叼,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)菇民,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門尽楔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人第练,你說我怎么就攤上這事阔馋。” “怎么了复旬?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵垦缅,是天一觀的道長。 經(jīng)常有香客問我驹碍,道長壁涎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任志秃,我火速辦了婚禮怔球,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘浮还。我一直安慰自己竟坛,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布钧舌。 她就那樣靜靜地躺著担汤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪洼冻。 梳的紋絲不亂的頭發(fā)上崭歧,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機(jī)與錄音撞牢,去河邊找鬼率碾。 笑死叔营,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的所宰。 我是一名探鬼主播绒尊,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼仔粥!你這毒婦竟也來了婴谱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤件炉,失蹤者是張志新(化名)和其女友劉穎勘究,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斟冕,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡口糕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了磕蛇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片景描。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖秀撇,靈堂內(nèi)的尸體忽然破棺而出超棺,到底是詐尸還是另有隱情,我是刑警寧澤呵燕,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布棠绘,位于F島的核電站,受9級特大地震影響再扭,放射性物質(zhì)發(fā)生泄漏氧苍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一泛范、第九天 我趴在偏房一處隱蔽的房頂上張望让虐。 院中可真熱鬧,春花似錦罢荡、人聲如沸赡突。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惭缰。三九已至,卻和暖如春笼才,著一層夾襖步出監(jiān)牢的瞬間从媚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工患整, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留拜效,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓各谚,卻偏偏與公主長得像紧憾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子昌渤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容