阅读本文,你将从我的项目中得到:快速搭建Ubuntu server平台的傻瓜教程。
适用对象:后端初学者
搭建环境:电脑是windows10,server是ubuntu18.04
1、本地ssh免密登录
如果不需要ssh免密登录的,请忽略掉这一步。
如果需要使用ssh在本地免密登录请参考我的博文
2、创建新的用户
一般平台会自动化好这一步,如果需要自己创建的可以参考本步骤,如果不需要,请忽略掉。
下面的步骤要确保登录到root根目录下,具体的操作可以参考我之前的博文。为了账户的安全,建议根据我下面的步骤一一执行:
- 更新软件
目的:时常保证软件的更新,是网络更新的常用策略
方法:
apt update apt upgrade
- 创建新的用户
目的:网络安全铁则——不能在root下面操作,被别人劫持了root,server就算完了。创建一个新的用户,在这个账户下操作,最后在屏蔽掉root。
方法:
//用你想命名的直接替换username adduser username
- 添加sudo权限
目的:sudo的意思是超级权限,可以行使和root一样的权力,给用户添加sudo权限,它才能运行root的命令,否则会被deny掉。
方法:
//添加sudo权限 usermod -aG sudo YOUR_USERNAME //切换用户 su YOUR_USERNAME
- 给新的用户添加本地登录的权限
方法:
//这是在server端的操作 //回到home目录下 cd ~ //创建.ssh隐藏目录,ls -a查看隐藏目录 mkdir -p ~/.ssh //把ssh文件复制粘贴到authorized_keys文件下 vi ~/.ssh/authorized_keys //连续exit返回到本机的目录上输入以下命令行,看看能不能ping通 ssh -i yourkeysname username@ip_address //配置权限,只有管理员有读写权力,别的登录者只能只读 chmod 644 ~/.ssh/authorized_keyschmod是linux系统配置文件权限的命令,具体数字代表什么意思,参考命令码的cheatsheet
- 屏蔽掉root登录
目的:为了安全,防止别人获取到root的权限,随意更改你的配置和密码。
方法:
//屏蔽掉ssh的root登录 sudo vi /etc/ssh/sshd_config//重启服务 sudo service sshd restart
3、安装nginx
nginx可以粗暴的理解成比较轻的apache。
sudo apt install nginx sudo service nginx start访问ip出现上面的画面就表示安装成功了。
4、配置node环境——安装node,npm,git
sudo apt install nodejs npm
关于版本的说明:这条语句安装的node版本是v8,最好升级到v10方便使用 。server端使用life time support版本,再往上的edge版本自己开发没什么问题,作为server的架构会由于过新而遭遇未知bug的风险。
升级到v10
curl -sL https://deb.nodesource.com/setup_10.x -o nodesource_setup.sh sudo bash nodesource_setup.sh sudo apt install nodejs如果你想使用最新的稳定版本
sudo npm cache clean -f sudo npm install -g n sudo n stable安装git
sudo apt install git
5、架构后台的文件结构
这个根据每个人的个人习惯来,我下面展示的是我个人比较喜欢的逻辑架构,仅供参考。
- 创建文件夹
//把/var/www下所有文件的访问权给当前的user
sudo chrown -R $USER:$USER /var/www
//创建下列文件夹结构
mkdir /var/www/app
cd /var/www/app
mkdir -p ui/js ui/html ui/css

目前的位置要在/var/www/app下
git init //创建app.js touch app.js npm initnpm init初始化是生成package.json的配置文件,需要输入name,version等等信息,按着指示做就可以。
6、创建简单的后台——测试通没通
先安装express
npm i express --save vi app.js写一个示例demo
const express = require("express"); const app = express(); const port = 3000; app.get("/", (req, res) => { res.send("hello try try!"); }); app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`) );//启动后台 node app.js
设置nginx的proxy
重点来了,目前去访问网站的话,不会出现
hello try try!的字样,应该还是默认的nginx欢迎页。原因是因为nginx默认的route是从/var/www/html/下的index进。如果想访问3000,需要重新添加一条proxy_pass规则。 sudo vi /etc/nginx/sites-available/default按照下图修改。
//刷新重启服务 sudo service nginx reload访问网站,如出现
hello try try !表示成功。如果没有语法错误,却显示不出来,可试一下如下方法:
- 再重启一下后台
node app.js- 再次执行
sudo service nginx reload- 浏览器
disable cache,多刷新几遍。
7、保证后台一直运行
如果长时间不登陆server,server会自动关闭掉后台app.js,此时再访问会出现502 bad gate。
使用pm2来保证后台app.js的进程一直在运行。
//安装pm2 sudo npm i -g pm2 //hook住后台 pm2 start app.js pm2 save //刷新后台 pm2 reload app.js
到这步后台的环境配置全部完成。
8、创建工作流——git版本控制
以后在app.js的基础上编写我的小后台,少不了就是版本控制。配置过程如下:
- 配置server与git间的ssh免密通讯
- 在server端生成sshkey 参考我的博文
- 在github上添加sshkey
github-->用户-->settings-->ssh and GPG keys
- 在github上创建一个新的repo,注意ignore选择node,不然每次都传node_module😂。
- 在server端添加remote 复制ssh地址
git remote add origin git@YOUR_SSH_ADDRESS git add . git commit -am "your first commit comment" git push origin master
- 如果发生了git的conflict,提供一些解决手段
首次pull一下,merge一次。如果因为history的conflict,merge不动,执行下面的语句。
git pull origin master --allow-unrelated-histories
- 电脑端git基操,忽略。
- 工作流程解释
在本地编写后台app.js -->上传到github-->server获取在github上的更新。
这样就完成了边编写边更新,又有版本控制的工作流。
[注]上一步是第一次操作,同步代码,才会有server端有push,以后只执行pullgit pull origin master pm2 reload app.js
总结
本文的主要目的是记录我初创后台的实录,保证后台完成:
- 拥有后台的功能基底(ubuntu,nginx,pm2)
- 拥有后台的代码环境(node,express)
- 初步形成版本控制和工作流(git)









