摘要:發布項目到IIS或者.Net Core 項目發布到IIS服務器或者CentOS記錄一下,后面忘了又來看看。
1、服務器安裝IIS
1.1、不管你是本地的電腦還是網上購買的服務器,只要是能通過遠程桌面登錄進去的。裝的系統是Windows的。打開控制面板找到程序,點擊《啟動或關閉Windows》功能
1.2、遠程服務器還可以打開服務器管理器打開,在這里安裝IIS需要的一些功能本地服務器跟遠程都在下面展示
1.3、選擇完點擊下一步,從互聯網選擇更新等待安裝,安裝好了最好重啟一下。重啟好了。打開控制面板----管理工具--------IIS管理器 看圖是下一個不是上一個 建議右擊保存到開始屏幕后面好找
1.5、 打開右擊網站,添加網站,如下圖所示,網站名字就是一個命名,應用程序可以共用一個也可以新建,后面還要配置應用程序池,一般選擇集成的類型,.Net 項目(除了Core)選擇.NET CLR v4.xxx的版本,如果沒有,就是安裝功能的時候你沒有添加。
運行起來就算只有一個Index.html文件都能訪問。如果沒有出來考慮一下錯誤
1、網站沒有權限,你要點擊網站下面你建立的那個網站授權。授予IIS的權利;
2、.Net CRL版本過低了現在有的.Netfarnwork都用了4.8了IIS上面不支持了那么高的,還要自行安裝;
3、端口沒有開放,遠程服務器的端口要去控制台自己開的,我的是阿里雲,就要上控制台管理出站入站規則里面添加出站、進站規則;
4、防火牆的問題,關了試試;
5、目錄瀏覽打開了,需要關閉
我遇到的問題暫時只能想到這幾個,萬事開頭難,建議還是用一個靜態網頁先試試慢慢排查。
2、.Net Core3.1發布IIS
.2.1、Net Core3.1 發布到IIS要安裝兩個工具 aspnetcore-runtime 跟 dotnet-hosing
SDK下載也是在這里開發環境用的。我用的VS2019 發布的發布為文件夾的格式然后拷貝到服務器上面一樣的 右擊網站---添加網站:
注意:
1、這里的應用程序池要改為.NET CLR版本選擇無托管代碼;
2、如果安裝了dotnet-hosing其他的項目啟動503 就安裝這個 https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145
3、https訪問
個人的話建議申請一個免費的,我的是阿里雲的 一年申請一次,然后下載證書綁定在網站上。一般都是80默認的端口才加證書用https訪問的右擊網站下面的端口80的網站名稱 -------編輯綁定-------類型選擇https 下面就有SSL證書添加進去。
一般這里寫小程序的API就需要這種https的安全連接 哈哈。要把443端口映射到80端口上自行度娘就不在累贅了。
4、Core 3.1 WebApi 部署到CentOS 8.x上
我的是CentOS8的系統,首先要連接linux就要有工具 下載xsheel《 http://www.yijianlan.com:8040/Home/Down?id=6025 》我自己的服務器有點慢哦;或者去官方下載我就不找鏈接了
4.2、安裝Core3.1 運行環境.net core runtime 如果服務器只是用來運行core 程序安裝這個就可以了。如果要做開發和編譯工作,則需要安裝.net core sdk.net core sdk包含了.net core runtime,所以這里就直接安裝.net core skd了 。
執行命令: sudo yum install dotnet-sdk-3.1 安裝.net core 3.1 sdk
4.3、用VS2019創建一個Core3.1 發布到文件夾,然后打開xftp或者點擊這個新建文件傳輸吧編譯好的文件上傳
一般我都是在這個里面新建一個文件吧發布好的直接粘貼進去 我這里是打開api進去粘貼的
運行命令 找打項目的目錄 並找到 項目名.dll這個文件 用dotnet 運行
默認就是5000端口打開 是打不開的 報錯Unable to bind to http://localhost:5000 on the IPv6 loopback interface: 'Cannot assign requested address'.” 這沒必要擔心也不用糾結5000端口用不了指定另一個端口就行了
打開項目的Program。cs文件編輯 我這里改了8020端口 當然改了端口要在系統里面開放端口,還有在服務器控制台開啟端口不要忘了
public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseUrls("http://*:8020") .UseStartup<Startup>(); }); }
補充一點命令 后面用到直接來拿:
firewall-cmd --zone=public --add-port=8020/tcp --permanent # 開放8020端口
firewall-cmd --zone=public --list-ports #查看防火牆所有開放的端口
firewall-cmd --reload # 配置立即生效
sudo systemctl start firewalld #打開防火牆
systemctl stop firewalld.service #關閉防火牆
firewall-cmd --state #查看防火牆狀態
shutdown -r now #立刻重啟(root用戶使用)
4.4 添加nginx做反向代理
1 使用命令 sudo yum install epel-release
添加nginx包存儲庫
2 使用命令 sudo yum install nginx
安裝nginx
3 使用命令 sudo systemctl start nginx
啟動nginx
4 使用命令 ps -ef |grep nginx
驗證nginx是否啟動成功
5 可以使用命令 sudo systemctl enable nginx
設置nginx開機啟動
6 使用命令 sudo systemctl start nginx重啟nginx
4.5 配置nginx,設置代理端口
訪問 8020 端口是可以的
4.6 添加守護進程
為什么要添加守護進程,有以下原因
1 asp.net core程序運行在shell中,shell關閉會導致該web應用關閉
2 應用程序意外終止的話需要在shell里重新啟動
3 服務器宕機或者意外重啟的話,需要重新啟動shell,然后重新啟動web程序
4.7使用守護進程supervisor
1)相關命令
1 使用命令 yum install epel-release 和 yum install supervisor 安裝supervisor
2 使用命令 systemctl start supervisord.service
啟動服務
3 使用命令 systemctl status supervisord.service 查看服務狀態
4 設置開機啟動 systemctl enable supervisord.service
5 重啟 supervisorctl reload
2)文件配置
1 在 /etc/supervisord.d
創建文件 WebApplication1.ini
2 配置 WebApplication1.ini 如下
4.8 備注
1) nginx.conf配置
server {
listen 8081;
location / {
proxy_pass http://localhost:8090;
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;
}
}
1) MyBuy.Api.ini配置
[program: MyBuy.Api] ;程序的名稱
command = dotnet MyBuy.Api.dll ;執行的命令
directory = /root/api/ ;命令執行的目錄
environment = ASPNETCORE__ENVIRONMENT=Production ;環境變量
user = root ;執行進程的用戶
stopsignal = INT
autostart = true ;是否自動啟動
autorestart = true ;是否自動重啟
startsecs = 1 ;自動重啟間隔
stderr_logfile = /var/log/WebApplication1.err.log ;標准錯誤日志
stdout_logfile = /var/log/WebApplication1.out.log ;標准輸出日志
5、總結
折騰了半天,服務器換了好幾個系統了哈哈重要折騰出來了,雖然用的少,多得都在擼碼,記錄一下長點記憶。知識就是慢慢積累起來只有一步一步的來。離三十歲又近了一步哈哈。
每日一句:千里煙雲,是誰留下的孤寂年華?誰人在他的盡頭畫上愛的符號,聆聽千古不變的亘古傳情佳話?流水無情,落花有意,你輕快的步伐,帶走了多少人間絕美佳話?任相思成河,從此流盡迢迢山水,走遍氤氳天下。
本文鏈接:https://www.cnblogs.com/w5942066/p/13411646.html