NodeJS+Express+MySQL开发小记(2):服务器部署

http://borninsummer.com/2015/06/17/notes-on-developing-nodejs-webapp/

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

输入密码,即可进入MySQL的终端了。

用Git进行版本控制

出于跟风,以及提高技术的目的,毫不犹豫地选择了Git而不是SVN来进行代码版本控制。最初是使用Github来作为远程服务器,用了大概两个月,感觉对于开发这种业务性太强的项目(尤其要在代码里使用数据库的),使用开源的Github仓库来托管并不让人放心。

后来发现了国内的业界良心 [email protected] ,其宣布永久开放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

后来远程代码仓库迁移到[email protected],那么可以添加这个新的remote,命名为osc,然后以后就只从osc进行代码获取了。以后提交代码,也就只往[email protected]提交,就一切OK了。


1

2

3


git remote add osc https://git.oschina.net/zilong-thu/d.git

git pull osc master

如果要删除Github那个remote,可以这样:


1

git remote rm origin

使用SSH而非HTTPS

先生成一个SSH公钥,方法:

注意,如果是 Windows &/8 + Git Bash 环境,那么在将你的key添加到 ssh-agent 中时应该使用这个命令(参考 Stack Overflow : Could not open a connection to your authentication agent):


1

eval $(ssh-agent -s)

在用于开发的电脑上,修改本地代码库的remote url


1

git remote set-url origin [email protected]:USERNAME/OTHERREPOSITORY.git

参考

以及一个中文的 Pro Git:

运行服务

安装依赖

debate目录下,安装node模块,执行


1

npm install

安装好所有依赖后,如下启动服务器:


1

npm start

使用阿里云给的IP加上端口号,即可访问到开启了的网站。

使NodeJS服务在后台运行

目前是使用putty使用ssh远程登录来操作服务器的,如果关闭这个putty,即会话终止,则服务也随即停止。解决思路自然是让程序在后台不间断地运行。解决方案可以参考:

因此,在/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

对于express 4.*版本,启动服务时是这样的:


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 &

如此一来,当更新代码时,就不必手动去重启NodeJS服务了。

停止服务

使用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实现自动化管理

时间: 2024-12-15 07:14:00

NodeJS+Express+MySQL开发小记(2):服务器部署的相关文章

Nodejs+express+mysql+百度BAE部署node后台

转载请注明出处:http://www.cnblogs.com/shamoyuu/p/node_bae.html 百度有一个应用引擎,价格非常便宜,Java的tomcat每天4毛钱,node每天2毛钱,我以前在上面搭建过一个JavaWeb的项目,今天来说说怎么搭建nodejs+express+mysql的后台. 首先打开console.bce.baidu.com,注册登录完成,然后新建一个应用引擎BAE如下图进行设置 目前基础版的BAE只支持node4.4.4,不过应该已经足够了.如果是用koa2

vue+nodejs+express+mysql 建立一个在线网盘程序

vue+nodejs+express+mysql 建立一个在线网盘程序 目录 vue+nodejs+express+mysql 建立一个在线网盘程序 第一章 开发环境准备 1.1 开发所用工具简介 1.2 安装 MySQL 1.2.1 下载安装 MySQL 1.2.2 可能出现的问题和解决方案 1.3 安装 vue-cli 1.4 安装 express 第二章 数据库设计和创建 2.1 数据库和表设计 2.2 user 表 2.3 file 表 2.4 创建数据库和表所用 sql 语句参考 第三

nodejs+express+mysql 增删改查

之前,一直使用的是nodejs+thinkjs来完成自己所需的项目需求,而对于nodejs中另外一中应用框架express却了解的少之又少,这两天就简单的了解了一下如何使用express来做一些数据库的增删改查. 准备工作: 所需工具:电脑上要安装好nodejs(官网https://nodejs.org/en/),下载并安装好nodejs之后,需要在cmd中再安装好express框架: npm install express-generator -g 安装完毕之后,检查一下是否安装成功: 还有一

使用nodejs+express+mongodb开发web的例子

介绍:简单的介绍下nodejs+express+mongodb这三者. nodejs:是运行在服务器端的程序语言,表面上看过去就是javascript一样的东西,实际是由c++开发是服务器语言. express:是nodejs的一种web框架,node有很多的开源框架,express是一个大神开发的(这尊神已经移驾到go语言的开发去了).express可以让你更方便的操作node(因为直接用nodejs写web比较麻烦,nodejs是事件驱动的,所以有很多异步回调,写多了就看着晕...) mon

进入全屏 nodejs+express+mysql实现restful风格的增删改查示例

首先,放上项目github地址:https://github.com/codethereforam/express-mysql-demo 一.前言 之前学的java,一直用的ssm框架写后台.前段时间接触到node.js,于是花了两天时间学了一下node.js并写了一个CRUD简单示例.由于前几天一直学用github pages搭建博客,一直没时间写README,今天有空补了上来. 下面来内容自于项目的README. 二.项目介绍 基于node.js + express + mysql实现的re

基于nodejs+express+mysql+webstorm+html的 增删改查

一.工具准备 Nodejs框架,WebStorm.Mysql服务.Navicat.此篇文章只讲项目的搭建过程,至于Nodejs,WebStorm.Mysql的下载.安装与配置网上资源很多,请自行查阅,本文重点讲述 增删改查,此文为学习笔记,我也是初学者,很多代码没有做过多解释,以免误导他人. Github 地址:https://github.com/Spqin/Nodejs_Websto_Mysql_CRUD 二.打开WebStorm创建项目-项目名称自定义,这里我按年月日做项目名称. 1.选怎

最新的chart 聊天功能( webpack2 + react + router + redux + scss + nodejs + express + mysql + es6/7)

请表明转载链接:http://www.cnblogs.com/zhangkunweb/p/6853728.html 我是一个喜欢捣腾的人,没事总喜欢学点新东西,可能现在用不到,但是不保证下一刻用不到. 我一直从事的是依赖angular.js 的web开发,但是我怎么能一直用它呢?看看最近火的一塌糊涂的reactjs ,我的天啊,不学会它,怎么能睡好觉. 今天我分享一个依赖最新版本的webpack + react + router + redux + scss + nodejs + mysql +

nodejs+express+mysql 之 简单的在线HTML编辑器

1.从原网站下载源码:http://kindeditor.net/demo.php 2.将kindeditor放到项目内,使其能够完成基本功能 1).将plugins.themes.lang.kindeditor-min.js放到public/kindeditor/下 2).在views下创建文件editor.ejs,内容为 <script src="/kindeditor/kindeditor-min.js" type="text/javascript"&g

nodejs+express中利用中间件提高代码复用

在用nodejs+express+mysql做后台时,有很多涉及到用户信息的请求都要先判断请求中的token(用户名+时间戳+随机数采用sha1加密得到的随机字符串)是否有效. 一开始是在每个请求的处理中都加入了对token的判断.(写了n遍,脑袋抽了) 代码如下: //修改项目的状态 router.post('/change-project',validToken,function(req,res,next){ var db = req.db; var token = req.query.to