將地端原先在IIS跑的 .net6 mvc專案給deploy到ec2 linux Apache主機上
假設你已經完成上一篇介紹的諸多處理前置流程後
通常你應用程式中的appsettings.json一些資料庫連線配置
要注意需要微調
- Server: 將 .\\SQLEXPRESS 更改為您的EC2實例的公共IP或DNS名稱。
- Database: 如果您的資料庫名稱仍然是 BingoDb,則不需要更改。
- Trusted_Connection: 由於您正在使用SQL Server身份驗證(User ID和Password),您可能需要從連接字符串中刪除 Trusted_Connection=True;。
- TrustServerCertificate: 如果您的EC2 SQL Server使用的是自簽名證書,則保留此選項。如果不是,您可能想刪除它。
- User ID 和 Password: 確保這些是您在EC2 SQL Server上設定的憑證。
"ConnectionStrings": {
"MyDbConn": "Server=YOUR_EC2_PUBLIC_IP_OR_DNS;Database=BingoDb;TrustServerCertificate=true;MultipleActiveResultSets=true;User ID=xxx;Password=YOUR_PASSWORD"
}
請將 YOUR_EC2_PUBLIC_IP_OR_DNS 替換為您EC2實例的實際公共IP或DNS,並將 YOUR_PASSWORD 替換為實際的 xxx 密碼。
實際拿地端專案整合連線看看會發現出現錯誤
Microsoft.Data.SqlClient.SqlException: 'Login failed. The login is from an untrusted domain and cannot be used with Integrated authentication.'
可能原因在於從一個不同的域連接到SQL Server有關。當在本地開發時,集成身份驗證很好用,因為您的開發機器和SQL Server通常位於同一域或工作組中。
但是,當您將SQL Server移到遠程主機(如EC2實例)時,事情就變得複雜了。
檢查連接字符串:
確保您的連接字符串沒有 Integrated Security=True 或 Trusted_Connection=True。如果有,請將其刪除或更改為使用SQL Server身份驗證。
使用SQL Server身份驗證
"Server=your_server_address;Database=YourDatabase;TrustServerCertificate=true;User Id=YourUsername;Password=YourPassword;"
最後,由於現在將從外部連接到資料庫,請確保您的EC2安全組允許來自您Web應用伺服器的IP的入站SQL Server連接(默認port是1433),若用mariadb(mysql)預設port是3306。
一般會用LAMP(linux、apache、mysql、php)架站
不過這邊就改一下在Linux上我要用Apache
至於其他的就暫時先pass
安裝 apache
yum -y install httpd
這裡遇到離奇問題就是
netstat 輸出再次確認了 Apache 仍然只在 IPv6 上的端口 80 上監聽。
不曉得為何會有這麼怪異情形
修改 Apache 配置
替換 Listen 80 為 Listen 0.0.0.0:80。
sudo systemctl restart httpd
檢查 Apache 監聽的地址和端口
sudo netstat -tuln | grep 80
安裝asp.net core6.0
需要先配置Microsoft的存放庫
rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
yum -y install aspnetcore-runtime-6.0
若有報錯
Error downloading packages:
dotnet-runtime-deps-6.0-6.0.21-1.x86_64: [Errno 256] No more mirrors to try.
通常表示在嘗試安裝或更新包時,yum無法從當前配置的存放庫中找到所需的包,或者存放庫是不可達的。
清除yum快取:
sudo yum clean all
再重新執行一次就可以了
sudo yum install aspnetcore-runtime-6.0
透過Win SCP上傳
nohup dotnet 你發佈出來的專案名.dll &
讓其在背景運行
netstat -tln
查看監聽的port
要記得將所需要的port防火牆開啟
這邊示範5000
如此一來才能透過在public ip後面多加:5000
這個port指引到對應網站應用
讓他更改成80 port
先停用該web應用服務
改讓dotnetcore跑在80 這個port
好此時這個公用IP18.182.39.31
預設http訪問會直接到asp.net core 動態網站
這時候可以去透過NameCheap或Godaddy域名設置
或是暫時先用NoIp也是可以
可參考之前文章
要想讓 Apache 能夠掛接我們的 ASP.NET Core Web 應用程序,還需要對 Apache 進行配置,以實現將 Apache 監聽過來的請求轉到Kestrel 伺服器上。
留言
張貼留言