在我們解決了服務器本身的功能、性能和可靠性的問題后,接著我們需要考慮一下代碼部署的問題,以及服務器控制的問題。
## 設計
一般而言,程序在服務器上有一個固定的部署目錄,每次程序有更新后,都重新發布到部署目錄里。而一旦完成部署后,一般也可以通過固定的服務控制腳本啟動和停止服務。因此我們的服務器程序部署目錄可以做如下設計。
~~~
- deploy/
- bin/
startws.sh
killws.sh
+ conf/
config.json
+ lib/
daemon.js
server.js
~~~
在以上目錄結構中,我們分類存放了服務控制腳本、配置文件和服務器代碼。
## 實現
按以上目錄結構分別存放對應的文件之后,接下來我們看看控制腳本怎么寫。首先是`start.sh`。
~~~
#!/bin/sh
if [ ! -f "pid" ]
then
node ../lib/daemon.js ../conf/config.json &
echo $! > pid
fi
~~~
然后是`killws.sh`。
~~~
#!/bin/sh
if [ -f "pid" ]
then
kill $(tr -d '\r\n' < pid)
rm pid
fi
~~~
于是這樣我們就有了一個簡單的代碼部署目錄和服務控制腳本,我們的服務器程序就可以上線工作了。