服務器運行的系統是Ubuntu16.04.2 x64
node.js
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential
Nginx
sudo apt-get update
sudo apt-get install nginx
sudo ufw allow 'Nginx HTTP' #防火牆允許Nginx HTTP服務
Command | Description |
---|---|
sudo systemctl stop nginx | stop your web server |
systemctl start nginx | start web server |
systemctl restart nginx | restart |
systemctl reload nginx | make configuration changes, Nginx can often reload without dropping connections |
sudo systemctl disable nginx | disable auto running when VPS boots |
sudo systemctl enable nginx | enable auto running when VPS boots |
OpenVPN
由於這款軟件的安裝分爲服務器端和客戶端,而且還涉及到文件加密等等細節上的東西,所以單獨寫在一篇博文當中。
GitLab-CE社區版本
它的情況和OpenVPN類似,安裝過程稍顯繁瑣,單獨寫在一篇博文當中,請看這裏。
更新Linux內核
sudo apt-get update
apt-cache search --names-only linux-image
更新軟件源,在軟件列表當中查找可用的linux-image。2017年7月,它返回的可用的內核有:只列出第一個和最後一個以及我這次安裝的(4.10.0-26)。
> linux-image-4.4.0-21-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
> ...
> linux-image-4.10.0-26-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
> ...
> linux-image-joule - Linux kernel image for Intel Joule
一般安裝image的同時需要安裝它的headers,所以運行下面兩個語句去安裝,一般安裝後bootloader會自動將最新的內核文件進行開機引入,不過爲了確認是否已經是最新的內核,需要看第三條語句。然後重啓。
sudo apt-get install linux-image-4.10.0-26-generic
sudo apt-get install linux-headers-4.10.0-26-generic
grep menuentry /boot/grub/grub.cfg
sudo reboot
Go語言安裝
按照官方的原文來的,主要的代碼是:
wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
sudo tar -C /usr/local/ -xzf go1.8.3.linux-amd64.tar.gz
sudo vim /etc/profile
# add this line into /etc/profile export PATH=$PATH:/usr/local/go/bin
source /etc/profile
ngrok
具體的安裝步驟請看這篇1號博文,以及這篇2號博文其中需要注意的是:
- go的安裝請參照我上面寫的官方方式。
- 另外git基本所有VPS都有裝,不用額外裝辣。
- 1號博文第五節當中的
export GOPATH=/usr/local/ngrok/
這部分以及重複出現在客戶端服務器端的這段代碼
cd /usr/local/go/src
GOOS=windows GOARCH=amd64 ./make.bash
並不需要,第五節當中生成服務器端程序默認是linux版本的,所以如果你的服務器跑得是linux發行版系統,就不需要另外給加上GOOS=linux GOARCH=amd64
了,直接make release-server
。 - 1號博文第六節運行服務器的時候千萬不要用$NGROK_DOMAIN去代替真正的域名,老老實實把自己綁定的域名打上去。因爲重啓linux系統之後我們之前運行的export命令就失效了。所以如果在重啓之後還
./ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":80"
這麼跑的話,$NGROK_DOMAIN返回給這個命令的是空的!所以老老實實把自己的域名打上去。 - 爲了方便起見,我把生產的ngrokd這個服務器程序放置在環境變量中的目錄下比如/usr/bin/,並且在/etc/rc.local文件當中添加了
ngrokd -domain="我的域名" -httpAddr=":端口號1" -tunnelAddr=":端口號2"
這行命令,實現VPS開機自啓動,ngrok服務。 - 最最最重要的一點!在VPS防火牆裏面打開端口號1和端口號2,不然客戶端是連不進來的。具體命令是
sudo ufw allow 端口號1
,sudo ufw allow 端口號2
。
mongodb
這裏是一篇官網英文說明,解釋的很多,但是實際操作中發現官方的說明在安裝好之後不能啓動mongodb服務,於是在這篇裏面找到了答案。大概是因爲ubuntu系統的默認開機啓動進程的方式已經變爲了systemd這個,而不是原先的init方式。而mongodb官方可能沒有針對systemd做配置,所以需要我們手工配置。關於systemd的一寫資料可以在這個簡介博客和官方文檔中看到。
下面只是列出全部所需要的步驟(only for Ubuntu 16.04),不加說明。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo nano /etc/systemd/system/mongodb.service
"
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
[Install]
WantedBy=multi-user.target
"
sudo systemctl start mongodb
sudo systemctl enable mongodb
另外,mongodb的配置文件是/etc/mongod.conf,裏面設置了運行起來之後mongo是默認只接受本地的數據請求,以及部署在27017端口上。
LAMP(Linux, Apache, MySQL, PHP)
具體的安裝方法在這篇英文博文和它的中文翻譯。這個英文版中在數據庫上提供了MariaDB和MySQL兩種,所以按需所取。另外注意的是,ubuntu下用
sudo apt-get -y install phpmyadmin
安裝phpmyadmin後,默認的安裝目錄在/usr/share/phpmyadmin。所以apache服務器是不能直接找到它的。因此需要在/var/www/html/這個apache網站目錄下創建一個linux軟連接指向/usr/share/phpmyadmin。代碼如下:
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
之後瀏覽器裏輸入localhost/phpmyadmin就會挑出我們熟悉的控制界面了!