1. 程式人生 > >AWS免費套餐伺服器部署NETCORE網站

AWS免費套餐伺服器部署NETCORE網站

之前的linode充了5美元,一個月就用完了,還是建立的最便宜的伺服器的!!! 以前一直想用用aws的所謂的免費套餐伺服器的,現在linode過期了,可以試著用用了 下面是我的操作流程,包含錯誤及解決方法: 1. 登入aws.amazon.com,註冊個賬號,註冊後登入,彈出介面需要輸入信用卡來驗證,(用於後面的扣費 ,又說是免費,NND!!!) 2. 信用卡驗證後,一會手機簡訊收到信用卡扣費1美元,摺合6.85RMB,鬱悶,又說是免費...... 3. 登入後進入aws管理控制檯,我是廣西南寧電信20M,開啟頁面有點慢,重新整理了幾次才能開啟,選擇計算下的EC2   4. 按提示建立例項,我這裡選擇的是帶有.NET CORE環境的不知道是上面那個還是下面那個了   5. 上圖第六步中的配置安全組 那裡,加個80埠的規則 6. 建立好後有個地方是讓你下載pem金鑰檔案的,需要用這個檔案來登入伺服器 7. 我本地用的xshell登入,登入的時候使用者名稱寫ec2-user,這是他預設的登入名,好像也不能改,登入後執行dotnet -V命令,可以看到dotnet是已經裝上的了     8. 用命令which nginx 檢查nginx有沒有安裝,這命令剛剛學會的,覺得還蠻好用 9. 用命令apt-get install nginx 安裝nginx,發現錯誤,原來是沒有apt-get命令的,看來第四步那裡我選擇的是上面那個,apt-get命令應該是ubuntu的 10. 用命令yum install nginx 安裝nginx,結果還是出錯,原來預設是ec2-user登入的,沒有許可權的,得sudo提升許可權 11. 用命令sudo yum install nginx 安裝, 成功安裝上了nginx,可以which nginx看下在哪裡  
12. 切換到上一步nginx的目錄/etc/sbin/, 執行sudo nginx 命令啟動 13. 執行命令curl http://localhost 檢查nginx是否成功啟動,一般都是成功了,返回預設頁面的HTML   14. nginx的配置檔案在/etc/nginx目錄下的nginx.conf裡,可以看到網站預設目錄又是在/usr/share/nginx/html下   15. 切換到上一步目錄裡,vi index.html,按insert鍵進入編輯模式,編輯完成後按ESC鍵,再輸入:wq 進行儲存並退出,結果提示出錯,原因還是在許可權上  
16. 在上一步中輸入:q 先直接退出vi編輯器,再重新輸入命令sudo vi index.html進入編輯 ,編輯完成後再:wq 的時候就可以成功儲存並退出了 17. 到www.freenom.com申請免費域名,域名解析到AWS的伺服器的外部IP上       18. 第十四步裡的nginx配置檔案裡看到我已經繫結上了www.niunan.cf域名了,第十七步域名解析好後,直接在外部瀏覽器輸入www.niunan.cf成功開啟nginx的頁面了  
19. 上面已經把nginx的示例網站都繫結上域名了,接下來執行命令sudo yum install mysql 進行MYSQL的安裝 20. 安裝完MYSQL後,然後怎麼都啟動不了,看了下還得裝mysql-server,執行命令sudo yum install mysql-server出錯   21. 最後不知道怎麼搞的,突然輸入命令sudo yum install maridb-server, 然後就可以安裝上了... 22. 裝完後啟動服務service start mysql 又不行,鬱悶。 23. 弄了好久,最後才找到官方文件 https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2.html 按文件來,用命令 sudo systemctl start mariadb就可以了。然後再執行sudo mysql_secure_installation 來設定root使用者密碼就行了,就能以 mysql -u root -p ,再輸入密碼來登入上去了 24. 在本地電腦把mysql資料庫匯出成sql,命令mysqldump -B niunan -u root -p > c:/temp/niunandb.sql , 其中niunan是資料庫名稱,c:/temp/niunandb.sql是備份 的路徑名稱檔案 25. 用winscp軟體傳到伺服器上,我傳到/tmp/下,伺服器上完整路徑是/tmp/niunandb.sql, 注意如果是傳到其他目錄像是/etc/等目錄下是沒有許可權的,winscp登入的還是用的ec2-user賬號的 26. 伺服器上登入進mysql,輸入source /tmp/niunandb.sql匯入資料庫,一般都是會成功的 27. 本地VS開啟NET CORE專案,釋出出來,用winscp軟體傳到伺服器目錄/home/ec2-user/wwwroot/niunannet 下,在伺服器上執行dotnet Niunan.Core.Web.dll,執行成功,會顯示http://localhost:5004, 這時再開啟另一個xshell連線上伺服器,輸入curl http://localhost:5004 ,正確的話就會顯示html出來了,我第一次執行這命令啥 都不顯示,但是在第一個視窗那裡報錯了,資料庫連線字串出錯,傳到伺服器上後應該先在那個網站目錄下sudo vi appsetting.json 修改為正確的資料庫連線字串的 28. 上面修改完後再執行dotnet Niunan.Core.Web.dll, 在另一個視窗再輸入curl http://localhost:5004,就成功返回HTML了 29. 把第一個xshell視窗關了,下面來配置nginx執行net core網站,可按官網文件配置 https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-2.2 30. 切換到nginx的配置目錄下 cd /etc/nginx/conf.d , 執行命令sudo touch niunannet.conf 配置檔案,再sudo vi niunannet.conf , 內容改為: server { listen 80; server_name web.niunan.cf; location / { proxy_pass http://localhost:5004; 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; } } 其中那個http://localhost:5004就是之前我們執行dotnet Niunan.Core.Web.dll顯示的那個路徑,web.niunan.cf這個域名 我們已經解析到這個伺服器IP上了的,然後 ESC → :wq 儲存退出 31. 執行命令sudo nginx -s reload,重新載入nginx的配置檔案 32. 接下來配置service服務程序執行dotnet Niunan.Core.Web.dll , 切換到目錄下,cd /etc/systemd/system/, 執行命令sudo touch niunannet.service, 再執行命令sudo vi niunannet.service編輯檔案,內容: [Unit] Description=Example .NET Web API App running on Ubuntu
[Service] WorkingDirectory=/home/ec2-user/wwwroot/niunannet ExecStart=/usr/bin/dotnet /home/ec2-user/wwwroot/niunannet/Niunan.NetCore.Net.Web.dll Restart=always # Restart service after 10 seconds if the dotnet service crashes: RestartSec=10 KillSignal=SIGINT SyslogIdentifier=dotnet-example User=root Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install] WantedBy=multi-user.target 以上檔案內容都可以在第二十九步的官網文件中看到的,其中那個user=root 是伺服器的登入使用者,編輯好檔案內容後儲存退出 33. 執行命令 sudo systemctl enable niunannet.service, 再執行命令 sudo systemctl start niunannet.service, 再執行命令 systemctl status niunannet.service檢視服務執行狀態,一切順利的話就應該可以看到running正在運行了   在這臺aws的伺服器上我試一次就正常運行了,但是之前在阿里雲伺服器上試都是fail執行失敗的,那時不知道怎麼弄啊弄的就弄好了,反正就是把fail出來的錯誤資訊往百度上貼,然後把網上的解決方案一個一個試,然後就running了,百度不行就bing,再不行就FQ上google,最後好像是在google上搜索到的stack overflow上的貼子解決問題了.... 34. 服務執行後再試試curl http://localhost:5004 , 成功返回頁面HTML,再試試 curl http://web.niunan.cf(第三十步裡繫結上的域名), 也是成功返回HTML, 在外部瀏覽器輸入http://web.niunan.cf, 成功開啟網頁了   35. 至此,整個部署流程結束!!!
尾聲:想寫篇圖文並茂的部落格好麻煩,這篇文章從 2019年01月09日 20:00:00 寫到 2019年01月10日 00:37:21,期間還不停感冒,真難受,攢錢買空調!!!