NodeJS+Express+MySQL开发小记(2):服务器部署
2017-08-30 09:10
495 查看
http://borninsummer.com/2015/06/17/notes-on-developing-nodejs-webapp/
NodeJS+Express+MySQL开发小记(1)里讲过在本地搭建 NodeJS 网站的若干细节。本人最近在阿里云服务器上面按最低配租了4个月的云服务器,所以想试着把这个项目部署到云上。云服务器操作系统是Ubuntu 14.04 LTS。之前一直在Windows下做开发,对于Linux下的环境搭建、配置还不是很熟悉,搭建的过程中学到很多东西。
本文简单记录对服务器进行部署的一些细节方面与解决方案。
安装过程会提示
安装完成后,运行
输入密码,即可进入MySQL的终端了。
后来发现了国内的业界良心 Git@OSC ,其宣布永久开放git公有库和私有库。相关新闻:
Git@OSC 欢迎你!
OSC 全面永久开放 git 公有库和私有库
此货的功能与Github并无太大区别,考虑到私有仓库的免费,便果断迁移了过来。
以后如果代码发生变动,可以这样更新代码:
后来远程代码仓库迁移到git@osc,那么可以添加这个新的remote,命名为osc,然后以后就只从osc进行代码获取了。以后提交代码,也就只往git@osc提交,就一切OK了。
如果要删除Github那个remote,可以这样:
Generating SSH keys | GithubHelp
注意,如果是 Windows &/8 + Git Bash 环境,那么在将你的key添加到
在用于开发的电脑上,修改本地代码库的remote url
参考
Changing a remote’s URL | GithubHelp
以及一个中文的 Pro Git:
4.3 服务器上的 Git - 生成 SSH 公钥
安装好所有依赖后,如下启动服务器:
使用阿里云给的IP加上端口号,即可访问到开启了的网站。
Linux 技巧:让进程在后台可靠运行的几种方法 | IBM Developerworks
因此,在
其官网的描述是这样的:
Node Supervisor is used to restart programs when they crash.
It can also be used to restart programs when a *.js file changes.
务必要全局安装:
对于express 4.*版本,启动服务时是这样的:
它其实上会到
因此执行的实际上是
如此一来,当更新代码时,就不必手动去重启NodeJS服务了。
只要杀死
###使用进程名+脚本来停止服务
使用80端口后,访问服务就不必加端口号了。
NodeJS+Express+MySQL开发小记(1)里讲过在本地搭建 NodeJS 网站的若干细节。本人最近在阿里云服务器上面按最低配租了4个月的云服务器,所以想试着把这个项目部署到云上。云服务器操作系统是Ubuntu 14.04 LTS。之前一直在Windows下做开发,对于Linux下的环境搭建、配置还不是很熟悉,搭建的过程中学到很多东西。
本文简单记录对服务器进行部署的一些细节方面与解决方案。
安装MySQL Server
直接通过apt-get就可以:
1 | sudo apt-get install mysql-server |
After this operation, 96.4 MB of additional disk space will be used.。MySQL的版本为
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)。
安装完成后,运行
1 | mysql -u root -p |
用Git进行版本控制
出于跟风,以及提高技术的目的,毫不犹豫地选择了Git而不是SVN来进行代码版本控制。最初是使用Github来作为远程服务器,用了大概两个月,感觉对于开发这种业务性太强的项目(尤其要在代码里使用数据库的),使用开源的Github仓库来托管并不让人放心。后来发现了国内的业界良心 Git@OSC ,其宣布永久开放git公有库和私有库。相关新闻:
Git@OSC 欢迎你!
OSC 全面永久开放 git 公有库和私有库
此货的功能与Github并无太大区别,考虑到私有仓库的免费,便果断迁移了过来。
用Git部署代码
最开始是从Github上获取代码的:1 2 3 4 | cd /var mkdir www cd www git clone https://github.com/zilong-thu/d.git debate |
1 2 | cd debate git pull origin master |
1 2 3 | git remote add osc https://git.oschina.net/zilong-thu/d.git git pull osc master |
1 | git remote rm origin |
使用SSH而非HTTPS
先生成一个SSH公钥,方法:Generating SSH keys | GithubHelp
注意,如果是 Windows &/8 + Git Bash 环境,那么在将你的key添加到
ssh-agent中时应该使用这个命令(参考 Stack Overflow : Could not open a connection to your authentication agent):
1 | eval $(ssh-agent -s) |
1 | git remote set-url origin git@github.com:USERNAME/OTHERREPOSITORY.git |
Changing a remote’s URL | GithubHelp
以及一个中文的 Pro Git:
4.3 服务器上的 Git - 生成 SSH 公钥
运行服务
安装依赖
在debate目录下,安装node模块,执行
1 | npm install |
1 | npm start |
使NodeJS服务在后台运行
目前是使用putty使用ssh远程登录来操作服务器的,如果关闭这个putty,即会话终止,则服务也随即停止。解决思路自然是让程序在后台不间断地运行。解决方案可以参考:Linux 技巧:让进程在后台可靠运行的几种方法 | IBM Developerworks
因此,在
/var/www/debate目录下新建一个shell脚本
start.sh,内容为:
1 2 | # Debate server start shell script nohup npm start & |
&是为了让程序能够在后台运行。这时候
ctrl+c,或者关闭putty会话,就都不会杀死这个服务进程了。
用supervisor自动重启服务
NodeJS代码发生变化时,一般是必须重启Node程序才可以生效的。每次手动重启的话太麻烦,可以使用专为NodeJS打造的node-supervisor模块来实现代码变动时自动重启,以及服务崩溃时自动重启的功能。其官网的描述是这样的:
Node Supervisor is used to restart programs when they crash.
It can also be used to restart programs when a *.js file changes.
务必要全局安装:
1 | npm install -g supervisor |
1 | npm start |
package.json里面寻找这个:
1 2 3 | "scripts": { "start": "node ./bin/www" } |
node ./bin/www。那么使用
supervisor来代替
npm start的话就应该是
supervisor ./bin/www。因此,在shell脚本里可以这样写:
1 | nohup supervisor ./bin/www & |
停止服务
使用kill
先列出所有进程,找到Node服务的进程ID,将其杀死,即可停止服务了。1 2 3 4 5 6 | ps aux root 11200 1.1 4.0 898452 20436 ? Sl Jun19 75:13 node /usr/local root 11387 0.0 15.4 923264 77080 ? Sl Jun19 0:03 node ./bin/www kill 11200 |
node /usr/local开启的进程,
node ./bin/www进程也随之死掉了。
###使用进程名+脚本来停止服务
端口
如果运行在未被占用的非80端口上,服务器一声不吭就给开了。但是如果用80端口,可能要注意一下权限的问题。最近都是使用root用户来开启Node服务并运行于80端口上,没有碰到什么问题。使用80端口后,访问服务就不必加端口号了。
用shell实现自动化管理
相关文章推荐
- (原创)node.js入门之一:express简单服务器搭建-Mac环境开发
- 零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
- vue2.0+nodejs+mysql 从开发到部署
- NodeJS+Express+mySQL服务端开发详解
- 零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
- NideShop:基于Node.js+MySQL开发的微信小程序商城开源啦
- Ubuntu 16.04 下部署Node.js+MySQL微信小程序商城
- ExpressJS for NodeJS 开发(草稿)
- 阿里云部署,ubuntu, 连接服务器 |更新源| 安装node |安装mysql
- (pomelo系列入门教程)深入浅出node.js游戏服务器开发——Pomelo框架的设计动机与架构介绍
- 使用 NodeJS+Express 开发服务端
- express(基于 Node.js 平台,快速、开放、极简的 web 开发框架)
- 用Node.js开发memcache协议的反向代理服务器
- 使用artTemplate模板开发网站(node.js + express环境)
- 深入浅出Node.js游戏服务器开发--分布式聊天服务器搭建
- 第8章-使用Express.js和Hapi构建Node.js-REST-API服务-8.4.重构:使用Hapi搭建REST API服务器
- 使用node.js + express开发web应用笔记(2) - vash视图引擎
- CentOS7 + node.js + nginx + MySQL搭建服务器全过程
- node开发后将本地mysql数据导入到服务器mysql
- 使用 NodeJS+Express+MySQL 实现简单的增删改查