服务器运行的系统是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就会挑出我们熟悉的控制界面了!