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,期間還不停感冒,真難受,攢錢買空調!!!
 
相關文章
相關標籤/搜索