砍掉重練 ec2 的粗略筆記,launch 的 instance 是 ubuntu 18.04 ver。
在操作 nginx 和部署第十八週餐廳作業碰到的一些問題也記錄在此。
主機 PART
ssh 連進去後先更新 ubuntu:(也可以利用 puTTy 連)
(apt
是 ubuntu 用來管理套件的管理工具,如果是用 amazon linus 就會是使用 yum
)
$ sudo apt update && sudo apt upgrade && sudo apt dist-upgrade
安裝 tasksel
用來安裝其他軟體:
$ sudo apt install tasksel
安裝 lamp 的 server:
$ sudo tasksel install lamp-server
測試看看有沒有裝好:
$ curl http://locahost // 有東西代表有裝好
$ telnet <ec2 IP> 80 // 有 connect 就是有開
資料庫 PART
安裝 phpmyadmin:
$ sudo apt install phpmyadmin
在網址列輸入 <ec2 IP>/phpmyadmin
,如果有 phpmyadmin 的登入畫面就代表有裝成功。
用指令登入 mySQL:
$ sudo mysql -u root mysql
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES; // 更新權限
mysql> exit
設定 root 的密碼:
- disallow 遠端選 no,因為之後會要從遠端連
(輸入密碼的時候不會顯示,不要懷疑其實是有輸入的)$ sudo mysql_secure_installation
資料庫 PART 2:從 mysql workbench 連
- 開 ec2 防火牆權限(3306 port)
- 改設定檔
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf ># bind-address = 127.0.0.1 // 註解掉這行 $ sudo service mysql restart // 重跑新的設定才會生效
- 確認資料庫帳號的權限,把本機改為 %。
nginx
安裝 nginx:
$ sudo apt update
$ sudo apt install nginx
看 nginx 的狀態:
$ sudo systemctl status nginx
啟動 nginx:
$ sudo systemctl start nginx
nginx 啟動錯誤解決方法:
$ sudo netstat -tulpn // 可以看 Active Internet connections
$ sudo fuser -k 80/tcp // 把佔領 80 port 的 connection 刪掉
$ sudo kill <PID> // 如果 sudo fuser 沒用的話可以試試看用 kill
$ sudo systemctl restart nginx
開啟要連接的防火牆:(也可以去 ec2 直接 security group 中改 inbounds rule)
sudo ufw allow 'Nginx HTTP'
在 site-available 下新增設定檔(子網域要連到哪個 port 去):
設定檔案內容:
server {
listen 80;
server_name <要導到其他 port 的網域>;
location / {
proxy_pass http://127.0.0.1:<指定的 port>;
}
}
連接 sites-available 和 site-enabled:
$ sudo ln -s /etc/nginx/sites/available/example.com /etc/nginx/sites-enabled/
(nginx 設定檔當中引用的是 sites-enabled 下的檔案,當今天要暫時關閉其中一個子網域,就可以刪掉 sites-enabled 下的設定檔,但不影響 sites-available 下的檔案。要啟用的時候再將檔案連進 sites-enabled 即可)
都設定好之後重跑 nginx:
$ sudo systemctl reload nginx
去網址列輸入指定的子網域,如果有顯示即連結成功。
參考:
部署餐廳
設定 config:
要改成在 sudo mysql_secure_installation
的帳密。
檔案上傳後再用 migrate 自動設置相關資料庫:
$ npx sequelize-cli db:migrate
如果沒有 npx,輸入以下指令安裝:
sudo npm i -g npx
在 npm install 時可能會碰到 node 或是 npm 版本不夠的錯誤:
$ sudo npm cache clean -f
$ sudo npm install -g n
$ sudo n stable
刪掉 node_modules
再重新跑 npm install
。
參考:
其他
查看權限
$ ls -al
設定 folder 權限,讓 ubuntu 可以操作指定 folder:
$ sudo chown ubuntu /var/www/html
全部都要靠 command line 真是件不容易的事~