资讯专栏INFORMATION COLUMN

【新手向 · 一站式教程】利用DigitalOcean云服务器,部署Nodejs服务

用户83 / 809人阅读

摘要:前言关于此教程作为一名业余开发者,因为公司都是做和的。。。建议采用的方式下载,可参考官方教程。但是服务的进程管理,即便对于初学者来说,也是必不可少的一课。

前言 关于此教程

作为一名业余Nodejs开发者,因为公司都是做JavaC++的。。。我是在没有任何人可请教的情况下,一个坑一个坑坚(ku)实(bi)地踩过来的。作为对segmentdefault社区的回报,把自己微不足道的经验分享给其他初学者。

本教程的目的,就是帮助刚上手Nodejs的开发者童鞋尽快搭建好自己的第一个Nodejs服务器。即使是没有编程经验的新手,也希望能读下来,也会对整个服务器搭建有个基本的概念。

Why DigitalOcean?

官网: https://www.digitalocean.com/

相信Nodejs的初学者都知道 CNode 网站,作为国内最活跃的Nodejs社区,她官方推荐的也是DigitalOcean的服务。优点主要有2点:

无需备案。

便宜:每月几十块钱的套餐,基本满足大部分个人开发者的需求(我会告诉你我买的最便宜的咩...)。

缺点也很明显,就是机房都在国外,访问速度因为众所周知的原因可能会较慢。网上有很多帖子讨论哪个机房的速度快,反正我是脑子一抽筋就选了旧金山的机房,有的时候确实慢成狗,大部分时候还好。。。论穷人的耐受力。

价位和配置大家可以上官网自行查看,我简单截个图:

一、创建Digital Ocean账户,准备CentOS系统

整体步骤如下:

1. 创建Droplet

上官网,注册账户,选择套餐(关于套餐选择,可以自行Google下,各种大神分析各种套餐使用方式。当然除非你跟我一样毫不犹豫地选了5刀的乞丐版,一小时0.7美分~~~还是资本主义好!),最后创建droplet。

2. 系统初始配置

创建好droplet之后,就是要对CentOS(当然你也可以选别的,新手建议选CentOS)进行初始配置。可参考DigitalOcean的官方文档 initial-server-setup-with-centos-7。

为了照顾英语不好的同学,我把几个重要步骤翻译如下:

Step 1. 以root权限登陆

打开命令行(shell),输入ssh root@SERVER_IP_ADDRESS,其中 SERVER_IP_ADDRESS就是分配给你的droplet的公网ip地址(恭嘿你有了属于自己的ip~~~)。回车之后,会提示你输入密码,这个密码应该是邮件发你了。登陆成功之后会立即提示你修改密码。

Step 2. 创建新的用户

登陆后你相当于是在用命令行操纵服务器,所以可以直接在命令行中输入adduser yourname,就会创建一个名字叫yourname的用户,在用passwd demo设置密码。

Step 3. 给予新创建的用户sudo权限

没有sudo超级管理员权限,会各种不方便,所以可以在root账户下用gpasswd -a yourname wheel命令,赋予sudo权限。

系统初始配置基本完成了,到目前为止你已经可以在里面玩耍了,但是没有ssh key验证的话,安全性会打折扣。如何进行ssh设置就请大家参考上面链接里文章的后几节了。

二、安装NPM、MongoDB、Git 1. 安装NPM

没有npm怎么能做Node开发,所以安装npm必然是第一步。

安装的方式不止一种,可以直接下载压缩包,但是在服务器上明显不是最科学的方式。建议采用package manager的方式下载,可参考官方教程。

照例把重要步骤翻译一下:

在服务器shell里输入curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -,会将最新的Nodejs v6下载。完成后,再用yum安装:yum -y install nodejs

备注:给不知道yum是什么的同学简单科普下,它是CentOS、Fedora系统里预装的Shell前端软件包管理器,帮助开发者简便地安装一些常用软件。

2. 安装MongoDB

MongoDB作为最受欢迎的非关系数据库,十分强大。同时又轻量,部署也不难,作为入门Nodejs,或者说入门数据库的不二之选。同样,用yum来下载安装,可参考官方指导。重点部分如下。

Step 1. 准备yumrepo文件

在下载安装前,有一步准备工作不可或缺,那就是为yum设置下载MongoDB的配置文件。在/etc/yum.repos.d/路径下,存储着yum所有的repo配置文件,类似下图。你可能注意到了,里面有个mongodb-org-3.4.repo文件,就是安装mongo前需要准备好的。

接下来你懂得,在以上目录中touch一个新文件,命名为mongodb-org-3.4.repo,在其中写入以下设置信息:

 [mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
Step 2. 安装、启动MongoDB

安装命令:yum install -y mongodb-org

启动命令:service mongod start

启动完成之后,保险起见,还是看下是否成功启动运行了,可以到/var/log/mongodb/mongod.log路径下查看此log,如果有[initandlisten] waiting for connections on port 这一行,说明成功咯!同时,为了更安全的运行你的程序,最好执行此操作chkconfig mongod on,能确保MongoDB在系统重启时,也会一并重启,避免因为系统重启导致服务不可用。

备注:关于如何关闭、手动重启、卸载数据库等操作,都可以在上面的官方文档中找到。

3. 安装Git

相信大部分开发者的代码管理都是依靠git了,那么要把代码部署到服务器上,git是必不可少的。

安装git可能是最简单的一步,命令:yum install git。就这样git就装好啦。

三、安装PM2

理论上来说,完成上面的工作,你的服务就能跑起来了。但是服务的进程管理,即便对于初学者来说,也是必不可少的一课。毕竟初学者代码bug多不稳定的话,crash后能及时重启、能实时监控等就显得更加重要。在这里,推荐的也是十分流行的进程管理工具pm2

首先要会的是安装,和其他所有Nodejs的第三方包一样,用npm即可:npm install pm2@latest -g。这样,就全局安装了pm2

其次,当部署了代码之后,默认启动方式为node XXX,XXX应该是你的启动文件。有了pm2之后,你就可以pm2 start XXX了。如果要实现自动重启,那么加一个--watch就行了。

其他常用命令还包括:

结语

从写下第一行JavaScript,到发布自己写的第一个网站,编程菜鸟的我踩了无数的坑。即便一个小问题可能困扰我一个星期,希望此文能帮到同是初学者的你。填坑的成就感不就是写代码的乐趣吗~

最后,顺便安利下我自己写的一个客户信息及工单管理平台,适合初学者参考~~祝大家开发愉快!

参考文档

搭建Nodejs服务器

备注

文中的命令要是执行不了的话,多半是因为权限问题,在命令前面加个sudo就好。

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

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

相关文章

  • 如何在服务提供商的平台上使用Docker Machine

    摘要:大家好,今天我们来了解如何使用在各种云服务提供商的平台上部署。是一个可以帮助我们在自己的电脑云服务提供商的平台以及我们数据中心的机器上创建机器的应用程序。支持几个流行的云平台,如及其它等等,所以我们可以在不同的平台使用相同的接口来部署。 大家好,今天我们来了解如何使用Docker Machine在各种云服务提供商的平台上部署Docker。Docker Machine是一个可以帮助我们在自己的...

    noONE 评论0 收藏0
  • 服务迁移小记

    摘要:网站的迁移迁移主要用到了命令,当然网站小文件比较多的情况下例如,那么最好先打包在远程拷贝,速度会快很多。但是在服务器上安装的时候死活提示缺少依赖。 从 vultr 迁移到 digitalocean 几个月前收到 digitalocean 发来的邮件,说因为我邀请用户注册并达到他的要求,送了我50刀的额度,本来就没想到它能送,结果不久之前它又送了一次,果断让我产生了回到它的怀抱的念头,...

    Karrdy 评论0 收藏0
  • 使用LeanCloud服务站式Chrome插件开发——Favorite Image

    摘要:云存储问题,帐号系统,多端同步最开始只想做浏览器本地的存储,使用提供的存在本地就。具体解决方案云存储及帐号系统使用提供的存储服务解决。 0. 目录 要开发的是什么项目 1.1 想法开端 1.2 应该有什么功能? 开发需要解决的核心问题 具体解决方案 3.1 帐号系统 3.2 存储服务 3.3 使用`LeanEngine`做反防盗链中转接口 3.4 Chrome 插件实现 对去...

    JohnLui 评论0 收藏0

发表评论

0条评论

用户83

|高级讲师

TA的文章

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