開始碰網站之後,常覺得 deploy 是個坑。
第一次 deploy 是幫 lab 架 conference website,當初用 Byethost 用 joomla,拖拖拉拉就結束了。
後來的婚禮網站和 Site Projects,有些用 Heroku 有些放 Github Pages。
用 Heroku 可以直接寫 config + cli 做 deploy 一開始很好上手,但當後來想把 crawler, api, website 從一個 service 拆開時就慘了,得開三個 Dyno XD。
Github Pages 滿適合放 portfolio 的,但還不想 open 或沒辦法弄成 static page 的 site project 就不適合了。
所以前陣子終於從 Linode 上租了台機器
身為一位工程師有一台 VPS 也是很合理的事嘛~
什麼?為什麼不用 EC2?因為一年的 free tier 到期了呀~(茶)
其實 Linode 也買來一陣子了,但只把一個 api server 和一個 crawler 丟上去,連基本的 Get Started 都好幾次做到一半就放棄,所以到現在都還是直接用 root + ssh + password 登入,超弱。
最近又買了 Domain Name,也差不多想把 side project 的 web deploy 上去了,所以終於有動力好好來 run 一次 Get Started,至少想做到的是:
不用 root 登入 + 不用打密碼登入
想把 Domain Name 掛上去
Get Started 和 Securing Your Server 裡面有幾個大章節
- Easy~ 的
Sign Up、Provisioning Your Linode、Booting Your Linode、Connecting to Your Linode via SSH、Installing Software Updates、Setting the Timezone - 暫時不想加入的
Remove Unused Network-Facing Services、Configure a Firewall - 跟我目的有關的
Setting the Hostname、Securing Your Server
下面就只記錄下跟我目的有關的部分
環境:Ubuntu 16.04 LTS
Setting the Hostname
想把 Domain Name 掛上去(後來才發現根本不是在這設定 XD)
Note that the system’s hostname has no relationship to websites or email services hosted on it, aside from providing a name for the system itself.
You might host “www.something.com” on your server, but the system’s FQDN might be “mars.somethingelse.com.”
The value you assign as your system’s FQDN should have an “A” record in DNS pointing to your Linode’s IPv4 address. For Linodes with IPv6 enabled, you should also set up a “AAAA” record in DNS pointing to your Linode’s IPv6 address. For more information on configuring DNS, see Adding DNS Records.
這部分真的是莫名花了我好久才搞懂(好啦是我沒修過電網導的 troll),尤其是上面這三段說明,跟你說可以設定 hostname 和 FQDN 但它們又可以很隨意和你的 web service 沒關係,搞得我好亂,到底還要不要設定呀 XD。
先說結論:
- hostname 就僅僅只是個別名,end。
- /etc/hosts 就只是個給那台機器自己快速查 ip 的表,跟外面進來的 request 沒任何關係,而因為它走在 DNS 前面,所以把一些常用或已知的 domain / ip 寫進來的話可以減少一點 DNS 的負擔?
總之,花了很久的時間才終於搞懂這部分根本和掛 Domain Name 一點關係都沒有哈哈哈哈,所以設定就隨意囉~。
$ hostnamectl set-hostname yes$ vim /etc/hosts
...
123.456.78.90 portfolio.hiiamyes.com yes
Securing Your Server
不用 root 登入 + 不用打密碼登入
原本我都要這樣
$ root@123.456.78.90
來登入我的 linode 的
但只要
# create a user on linode
$ adduser yes
# Add the user to the sudo group
$ adduser yes sudo
現在就能這樣
$ ssh yes@123.456.78.90
登入 linode 了!
再接著!
# on linode
$ mkdir -p ~/.ssh && sudo chmod -R 700 ~/.ssh/# on local computer
$ scp ~/.ssh/id_rsa.pub yes@123.456.78.90:~/.ssh/authorized_keys# Set permissions for the public key directory and key file
$ sudo chmod 700 -R ~/.ssh && chmod 600 ~/.ssh/authorized_keys# on local computer
$ vim ~/.bash_profiles
...
# Yes
alias yes-linode="ssh yes@123.456.78.90"
不需要再打密碼啦~
如果要多做一點還可以去改 ssh daemon 的 options
$ vim /etc/ssh/sshd_config
...
# Authentication:
PermitRootLogin: no# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no# Make SSH daemon listens for incoming connections over IPv4 only.
AddressFamily inet$ sudo systemctl restart sshd
不過我不會想把 PasswordAuthentication 設成 no 就是,要不然哪天筆電突然死掉又沒有把 private key share 出來不就(?)。
references :