将本地开发的Node.js应用一键部署到服务器


我的所有文章会在我的个人博客首发和更新,欢迎使用微博与我交流,一起探讨技术问题。

在开发过程中,修改完代码后部署到服务器是一件头疼的事,每一次部署都要上传代码,重启程序,这个过程最少也需要3分钟的时间,作为程序员,怎么能把时间浪费在这种重复操作上呢,我们可以通过一些现有工具的配合,实现码的自动部署,这篇文章的最终实现效果是将本地中修改完的nodejs代码一键运行在服务器端,其它语言同理,只是使用到的工具会有所不同。
一、准备工作:安装node.js和git
  我更喜欢用nvm来管理nodejs的版本,nvm需要高版本git支持,而centos yum源里的git版本太低,所以我们要先编译安装新版本的git,关于如何安装,可以看下面这篇文章:
安装新版本git: https://segmentfault.com/a/1190000007134786
1.安装nvm

yum install curl-devel   #确保curl-devel已经安装
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash #执行完后退出终端重新进入
nvm --version #可以看到nvm版本```
如果执行curl安装nvm的过程中出现如下错误:fatal: Unable to find remote helper for 'https',是因为系统找不到git-remote-https,修改下PATH就好了。

2.修改PATH:

vi ~/.bash_profile PATH=$PATH:/usr/libexec/git-core #在PATH里添加这一行source ~/.bash_profile```
3.使用nvm安装指定版本nodejs

nvm ls-remote #查看可安装版本
nvm install v6.2.0 #安装一个较为稳定的版本
nvm ls #查看已经安装的版本nvm use v4.6.0 #切换版本
nvm alias default v6.2.0 #设置默认版本node --version ```
二、使用git自动部署代码
接下来我们使用最为优秀的版本控制工具git来同步我在本地和服务器上的代码。
*先梳理一下大致流程:*
* 首先在服务器端创建一个文件夹,使用初始化指令使其成为git的中心仓库。

* 然后在本地电脑新建的项目文件夹中clong上一步在服务器中建立的中心仓库。

* 在服务器中新建一个要部署代码的目录,并clone中心仓库。

* 修改服务器中心仓库中的hook文件,实现本地电脑push代码后,自动部署到上一步建立的代码目录。

*下面是每一步的具体操作:*

1、在服务器中初始化git中心仓库

mkdir /gitRepo #新建一个文件夹作为仓库
cd /gitRepogit init --bare project.git #初始化一个名为progect的仓库
cd project.git #可以看到新仓库中的各个文件```
  执行完以上步骤,会在 /gitRepo 文件夹中创建一个名为project的裸库,这个仓库就是之后在客户端的目标仓库
2、在本地电脑克隆远程仓库
要在本地连接到仓库首先需要将本地机器的公钥复制给服务器

ssh-keygen -t rsa #如果本地还没有生成公钥和秘钥,使用此命令生成
cat .ssh/id_rsa.pub #查看生成的公钥,将此公钥复制到服务器的 ~/.ssh/authorized_keys 文件末尾
git clone 用户名@服务器地址:/gitRepo/project.git #在当前目录克隆仓库```
3、在服务器中配置代码自动部署

git clong /gitRepo/project.git #在要部署代码的文件夹里克隆仓库
cp post-receive-sample post-receive #拷贝一份示例文件post-receivevi为post-receive

在文件中加入以下指令

#!/bin/sh   unset GIT_DIR   

cd 项目路径 #就是进入刚才做克隆操作时的文件夹
git pull #执行拉取指令
chmod 775 post-receive #最后一定要将此文件的权限改为可执行

  执行完所有步骤之后,每次在本地电脑中提交代码到中心仓库,git便会自动将最新的代码pull到服务器中的代码目录。

`附:git常用命令`

git add . #添加所有文件到git索引
git commit -m "" #提交索引到的文件到缓冲区
git push origin master #客户端第一次提交时需要使用此命令提交到远程master分支
git push #提交缓冲区中的文件
git rm <filename> #在git索引中移除文件git rm -r . #在索引中移除所有文件```
三、node程序自动运行
  现在通过git提交的代码可以自动部署到服务器的代码目录了,接下来通过使用pm2,在代码变更后让程序自动重启。

npm install -g pm2 #服务器中全局安装pm2
pm2 start helloworld.js #使用pm2启动nodejs程序

四、编写push脚本,一键将本地程序运行在服务器
现在每次使用git提交代码后,服务器会自动部署代码并重启程序,已经不需要我们再对服务器做任何操作了,是不是已经简化了百分之七十的工作量了?但是我们的目标不仅于此,毕竟每次push还需要三条指令呢,作为新时代的程序员,能让电脑做的决不自己去做。所以我们要通过一个脚本,在每次更改完代码之后一键把本地的代码运行在服务器上。

# 以下为shell脚本,在mac上可以原生执行,使用Windows的同学可以自行搜索bat脚本写法,类推一下。
touch push.sh #在本地的代码目录新建一个脚本文件。
chmod +x push.sh #设置脚本权限为可执行
vim push.sh #打开脚本,并写入以下命令   
    git add ./   
    read commitMessage    
    git commit -m commitMessage    
    git push   echo Wow! 代码一键部署完成!

** 最后,激动人心的时刻到了,以后每次修改完代码,执行这个命令:./push.sh,然后输入提交信息,好了,你的代码已经在服务器上飞起来了!**

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容