首先切換到ROOT
sudo -i
一、安裝寶塔
1、安裝寶塔7.9.9
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
2、打上開心版補丁,來源於網絡,僅供測試學習(此步驟可以省略)建議購買正版
升級命令:
企業版:
curl https://io.bt.sy/install/update_panel.sh|bash
3、安裝nginx,如果有需要可再安裝Mysql、ftp等應用
4、新建網站
二、安裝.net7環境
1、#注冊 Microsoft 密鑰。注冊產品存儲庫。安裝必需的依賴項。
//SentOS 7 sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm //SentOS 8 sudo rpm -Uvh https://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm
注意,如果執時后出現如下錯誤:
package packages-microsoft-prod-1.0-1.noarch is already installed
file /etc/yum.repos.d/microsoft-prod.repo from install of packages-microsoft-prod-1.0-1.noarch conflicts with file from package packages-microsoft-prod-1.0-1.noarch
需要在執行的命令后面加上兩個參數即可解決 --nodeps --force
2、#安裝 .NET Core 運行時(此步驟可以省略,前提是發布.net core程序時,有選擇“布署模式”為“獨立”,獨立時,不需要單獨安裝環境,但發布包可能會比較大)
.net core 3.1安裝命令: sudo yum -y install aspnetcore-runtime-3.1 .net core 5安裝命令: sudo yum -y install aspnetcore-runtime-5.0 .net core 7安裝命令: sudo yum -y install aspnetcore-runtime-7.0
#查看Dotnet 版本信息
dotnet --info
其他發行版,請參考官方文檔:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos
三、發布.net程序
1、以獨立模式發布,此種方式,服務器不需要安裝.net core 環境。
2、以框架依賴模式發布,此種方式,服務器需要安裝.net core 環境,按照第二步中操作。
四、啟動程序
1、將發布的程序上傳到服務器新建的網站目錄下
2、通過終端定位到站點根目錄,並運行程序,此步驟可以不操作,看文章第六部分,使用守護進程來執行。
//方案1 cd /www/wwwroot/mySiteDir dotnet 解決方案名稱.dll //方案2(發布時生成單文件后,主程序為沒有擴展名的文件) //先安裝icu庫 yum install icu //切換到程序目錄 cd /www/wwwroot/mySiteDir //設置程序執行權限 chmod 777 ./解決方案名稱 //啟動程序 ./解決方案名稱
出現訪問地址了 http://localhost:5000 即為啟動成功。
五、設置反向代理
1、打開站點配置,反向代理,添加反向代理
填寫一個名稱,目標URL填
http://localhost:5000
發送域名這里填自己的域名(或者IP)即可,也可以填寫 $host,代表當前請求的任何域名。
六、配置守護進程。(可以讓網站持續運行)
1、安裝supervisor
2、添加守護進程,啟動用戶為root,運行目錄為對應的網站目錄,
啟動命令為【dotnet 解決方案.dll】,單文件發布時,啟動命令為【./解決方案名稱】
七、可能出現的問題
1、在第一次部署后,遇到報錯:
System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request. Your application is running in Production mode, so make sure it has been published, or that you have built your SPA manually. Alternatively you may wish to switch to the Development environment.
可能是前端項目沒有上傳服務器。需要將解決方案目錄下ClientApp/dist文件夾上傳到網站根目錄,具體根具實際情況來。
然后修改一下startup.cs中的Configure方法。
public void Configure(IApplicationBuilder app, IOptionsMonitor<Configs> configs, IHostEnvironment env) { app.UseExceptionHandler(configs.CurrentValue.ErrorHandler); app.UseStaticFiles(); app.UseWtmStaticFiles(); //app.UseSpaStaticFiles();1.第一步修改,注釋掉,新添加下面新行代碼 var spaStaticFileOptions = new StaticFileOptions { FileProvider = new Microsoft.Extensions.FileProviders.PhysicalFileProvider(System.IO.Path.Combine(env.ContentRootPath, "ClientApp/dist")) }; app.UseSpaStaticFiles(spaStaticFileOptions); app.UseWtmSwagger(); app.UseRouting(); app.UseWtmMultiLanguages(); app.UseWtmCrossDomain(); app.UseAuthentication(); app.UseAuthorization(); app.UseSession(); app.UseWtm(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "areaRoute", pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"); endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); if (env.IsDevelopment()) { endpoints.MapToVueCliProxy( "{*path}", new SpaOptions { SourcePath = "ClientApp" }, npmScript: "start", regex: "Compiled successfully"); } }); app.UseWtmContext(); //app.UseSpa(spa => //{ // spa.Options.SourcePath = "ClientApp"; //});2.第二步修改,注釋掉,新添加下面新行代碼 app.UseSpa(spa => { if (env.IsDevelopment()) spa.Options.SourcePath = "ClientApp/"; else spa.Options.DefaultPageStaticFileOptions = spaStaticFileOptions; //if (env.IsDevelopment()) //{ // spa.UseVueCli(npmScript: "serve"); //} }); }