起因
最近租了一台阿里云服务器,想把express项目部署到它上面
问题
在网上看了一圈教程都没弄好,比较失望。
主要问题是第一次将项目部署到上面后在本地更改文件之后如何修改服务器端的文件。
后来看有人说可以使用 git ,所以我又在网上看了一圈教程,还是不会….
一个想法
后来转念一想能否将那个服务器作为一个远程git仓库A,再在服务器上克隆一个仓库B作为上线的项目实例,这样子本地项目更新后 push 到远程仓库A,在根据仓库A 用B来进行 pull 操作,同步更新
开干!
- 默认本地已经安装了git并配置好了
- 默认本地已经安装了node
- 主要知识来源点此链接
服务器端操作
使用ssh远程登陆服务器
ssh root@example.com //example.com 为你的网站名或ip地址
新建一个git仓库
mkdir my_project.git // 创建仓库目录
cd my_project.git // 进入到仓库目录
git init --bare // 初始化git仓库
- 注:第三条命令为新建一个git裸仓库,其中没有项目文件供你修改,里面的文件也禁止你修改的,详细请点此
本地操作
新建项目
因为是测试的,所以我就是用 express 自带的工具快速新建一个项目框架,当然Webstorm中已经集成了这个工具,新建项目时直接选择就行了
初始化本地git
//假设项目名为 my_project
cd my_project // 进入项目根目录
git init // 初始化本地git仓库
新建 .gitignore 文件
//目的:选择不需要上传至远程仓库的文件
// 假设现在所在位置为项目根目录
// 用你最喜欢的编辑器打开此文件(.gitignore),我是用的是Webstorm
//在文件中添加如下内容
node_modules/*
.idea/* (可选,用Webstorm的可以加上去,此为Webstorm自己生成的文件)
- 注:其实最主要的还是第一个,也就是 node_modules文件夹中的内容,原因有二:
- 文件太大,不方便上传
- 有些模块,比如 node-sass 对平台有要求,服务器的Linux环境,而本地我使用的是Mac(ps:当然使用Linux作为自己操作系统的人就无所谓啦)
上传至远程仓库
git add *
git commit -m "My initial commit message"
git remote add origin root@example.com:my_project.git //example.com 和之前的相同,为你的网站名或网站IP地址
git push -u origin master
服务器端操作
git clone my_project.git // 克隆一个新仓库B
cd my_project // 进入项目根目录
npm install // 安装项目依赖模块
pm2 start bin/www // 启动项目
这时,在浏览器中输入你的网址应给可以访问到Express默认的页面了
修改测试
这时,如果我对本地的代码进行修改,是否可以实现同步呢?
本地操作
随意修改view文件夹中的文件或者public文件夹中css文件之后
git add .
git commit -m "Make some change"
git push -u origin master
服务器端操作
默认此时已经在项目my_project的根目录下
git pull origin master
注:如果遇到报错多半是因为你修改了服务器端my_project中的代码,这是输入以下命令之后再次输入以上命令可解决问题,详见点此链接:
git stash save --keep-index
pm2 restart www // 重启服务
刷新网页,我的网页画风就变成这样了:
总结
本人经验为0,此方法只是本人主观臆断,胡思乱想出来的,就酱 :-p