资讯专栏INFORMATION COLUMN

NodeJS项目迁移兼Ubuntu下NodeJS环境部署

jlanglang / 2931人阅读

摘要:前言之前做的几个项目都托管在阿里云服务器,但是最近要到期了。环境部署折腾了一天,其中也遇到几个坑。项目迁移历时一天,两台服务器的系统都是位。

前言

之前做的几个项目都托管在阿里云服务器,但是最近要到期了。想着到底要不要续期,毕竟100/月。后面看着阿里云有个活动,800/三年。果断买下。环境部署折腾了一天,其中也遇到几个坑。

目录
一、安装环境
  1.1 安装NodeJS环境
  1.2 安装版本控制软件Git
  1.3 安装MongoDB数据库
  1.4 安装Nginx

二、导入数据

三、安装项目

四、部署项目
  4.1 Nginx配置
  4.2 启用HTTPS
  4.3 使用PM2部署项目
  4.4 开启阿里云外网访问

五、踩坑记录
  5.1 数据库导入失败
  5.2 PM2部署失败
一、安装环境

为了保证项目运行不出问题,在新服务器安装和原服务器一致的环境。项目迁移历时一天,两台服务器的系统都是Ubuntu 16.04 64位。

1.1 安装NodeJS环境

自带的NodeJS版本是4.2.6,版本有点低,使用npm的n模块更新到最新版。

安装NPM

sudo apt-get install npm

使用淘宝源

阿里云访问npm的速度非常慢,这里通过设置,让NPM从淘宝镜像更新模块

npm set registry https://registry.npm.taobao.org  // 设置从淘宝镜像更新
npm set disturl https://npm.taobao.org/dist
npm cache clean  // 清除缓存

更新NodeJS

npm install n  // 更新NodeJS的模块
n stable  // 更新到最新稳定版
node -v  // v8.2.1
1.2 安装版本控制软件Git
sudo apt-get install git
1.3 安装MongoDB数据库
sudo apt-get install mongodb  // 安装MongoDB
service mongodb start  // 启动服务
mongod  // 进入交互式控制台,能加入说明启动成功,ctrl+c退出
1.4 安装Nginx
sudo apt-get install nginx  // 安装Nginx
二、导入数据

把以前的数据库完整的迁移过来

从源服务器导出数据库

mongodump -h localhost --port 27017 -d test -o database_dump

导入MongoDB数据库

mongorestore -d test database_dump/test
三、安装项目

项目是在Github开源,直接拉取就行。

git clone https://github.com/bergwhite/nchat.git  // 克隆项目
cd nchat  // 进入目录
npm install 安装模块
npm run build
四、部署项目 4.1 Nginx配置
vim /etc/nginx/nginx.conf  // 编辑Nginx的配置

http {

        server {

            listen 80;
            server_name hostName;
            rewrite ^(.*) https://$server_name$1 permanent;
        }

        server {

            listen    443 ssl;
            server_name hostName;
            ssl on;
            # SSL证书会插入到这里

            # 完整根目录
            location / {

                root   /*/*/*;
                index  index.html;

            }

            # 反向代理V2EX API到本地,解决跨域问题
            location /api/ {

                proxy_set_header  X-Real-IP  $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass https://www.v2ex.com/api/;

            }

        }
...
4.2 启用HTTPS
sudo apt-get update  // 更新软件源
sudo apt-get install software-properties-common  // 安装
sudo add-apt-repository ppa:certbot/certbot  // 添加仓库
sudo apt-get update  // 更新软件源
sudo apt-get install python-certbot-nginx // 安装

sudo certbot --nginx  // 生成证书(自动添加到Nginx)
sudo certbot --nginx certonly  // 生成证书(手动添加到Nginx)

4.3 使用PM2部署项目
sudo apt-get install pm2  // 安装pm2
4.4 开启阿里云外网访问

在安全组里添加需要放行的NodeJS项目端口即可。

五、踩坑记录 5.1 数据库导入失败

导入数据库的时候,有一个Collection没有导入成功

Assertion failure amt == (size_t)( size - 4 ) src/mongo/tools/tool.cpp 330

解决方案

把报错的Collection多带带导出,然后重新导入到新服务器的数据库
5.2 PM2部署失败

运行下面的代码会失败

pm2 start -i 0 --name test ./bin/www

解决方案

使用fork模式启动

pm2 start --name nchat3 ./bin/www
参考连接

让NPM从淘宝镜像更新模块

MongoDB备份和恢复

Ubuntu下的Nginx配置HTTPS

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19064.html

相关文章

  • NodeJS项目迁移UbuntuNodeJS环境部署

    摘要:前言之前做的几个项目都托管在阿里云服务器,但是最近要到期了。环境部署折腾了一天,其中也遇到几个坑。项目迁移历时一天,两台服务器的系统都是位。 前言 之前做的几个项目都托管在阿里云服务器,但是最近要到期了。想着到底要不要续期,毕竟100/月。后面看着阿里云有个活动,800/三年。果断买下。环境部署折腾了一天,其中也遇到几个坑。 目录 一、安装环境 1.1 安装NodeJS环境 ...

    source 评论0 收藏0
  • NodeJS项目迁移UbuntuNodeJS环境部署

    摘要:前言之前做的几个项目都托管在阿里云服务器,但是最近要到期了。环境部署折腾了一天,其中也遇到几个坑。项目迁移历时一天,两台服务器的系统都是位。 前言 之前做的几个项目都托管在阿里云服务器,但是最近要到期了。想着到底要不要续期,毕竟100/月。后面看着阿里云有个活动,800/三年。果断买下。环境部署折腾了一天,其中也遇到几个坑。 目录 一、安装环境 1.1 安装NodeJS环境 ...

    Jason 评论0 收藏0
  • nodejs服务器部署教程一

    摘要:第一篇教程紧紧让你输出一个环境介绍服务器环境位本地环境位连接工具安装和基本配置我的是在阿里云买的,购买的时候镜像选择,现在在搞活动比较便宜,我买的香港地区的不用备案,购买后本地打开,点击,输入确定,输入,然后输入密码,会看到下面的界面连接远 第一篇教程紧紧让你输出一个hello world 环境介绍 服务器环境:ubuntu(16.04)64位本地环境:windows10 64位连接工...

    Hegel_Gu 评论0 收藏0
  • nodejs服务器部署教程一

    摘要:第一篇教程紧紧让你输出一个环境介绍服务器环境位本地环境位连接工具安装和基本配置我的是在阿里云买的,购买的时候镜像选择,现在在搞活动比较便宜,我买的香港地区的不用备案,购买后本地打开,点击,输入确定,输入,然后输入密码,会看到下面的界面连接远 第一篇教程紧紧让你输出一个hello world 环境介绍 服务器环境:ubuntu(16.04)64位本地环境:windows10 64位连接工...

    izhuhaodev 评论0 收藏0
  • 公司项目NODEJS实践0.1[ ubuntu,nodejs,nginx...]

    摘要:创建成功后进入文件夹执行执行作用创建文件,维护项目的依赖文件解释创建文件执行作用用系统的编辑器打开文件。我的技术新群上一篇前后端分离项目实践分析下一篇公司项目实践 一、前言 前端如何独立用nodeJs实现一个简单的注册、登录功能,是不是只用nodejs+sql就可以了?其实是可以实现,但离实际应用还有距离,那要怎么做才是实际可用的。 网上有很多nodeJs的示例,包括和 sql /...

    cppprimer 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<