Node服务端极速搭建 -- nvmhome
> 本文意在让你掌握极速搭建Node服务端(任何Project)
```
$ whoami
name: kelvin
email: kelvv@outlook.com
homepage: www.kelvv.com
github: https://github.com/kelvv
```
****
本文利用Docker搭建一个预安装好:
* pm2 -- Node应用的进程管理器
* git -- 代码管理
* ssh -- 远程登录
* nvm -- node版本管理
* npm -- node包安装
* node -- So,you know
**本项目github:[Here](https://github.com/kelvv/nvmhome-docker)** , 欢迎Start
**> 当然可直接使用该镜像:**
```
$ docker pull kelvv/nvmhome-docker
```
****
该项目由一份Dockerfile和.bashrc组成:
```
#Dockerfile
FROM ubuntu:14.04
RUN apt-get update
#安装git ssh
RUN apt-get install -y curl git-all openssh-server
ADD .bashrc /root/.bashrc
#nvm安装
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
RUN . /root/.bashrc;nvm install 4.3.1;nvm use 4.3.1;npm install pm2 -g;pm2 startup ubuntu
RUN mkdir /var/run/sshd
RUN echo 'root:myssh' | chpasswd
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# SSH登录
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile
#对外开放端口
EXPOSE 22
EXPOSE 80
#启动ssh服务
CMD ["/usr/sbin/sshd", "-D"]
```
上面给出了简单的注释,下面补充说明一下
1. ADD .bashrc /root/.bashrc 为什么需要把.bashrc添加进去呢?因为里面把**互动**去掉,这样pm2环境变量才能生效。
2. 默认ssh的密码为:'myssh',如有需要,自行添加ssh无密登录,我对该技术有文章:[传送门](http://www.jianshu.com/p/27d8b8d1d571)
3. 该镜像对外开放两个端口,
* **22: ssh端口**
* **80: 默认网站端口**
4. 大家可以以该Dockerfile为基础,继续写属于自己应用的Dockerfile。Happy Node
##使用
* 使用该镜像
连接到服务器,执行以下命令
```
$ docker pull kelvv/nvmhome-docker
$ docker run -p 0.0.0.0:3000:22 -p 0.0.0.0:80:80 -d kelvv/nvmhome-docker
```
你可以回到自己的电脑,使用ssh root@xxx.xxx.xxx.xxx连接到刚创建的应用服务端,自由发挥。
* 对该镜像有改进,需重新构建
连接到服务器,下载Dockerfile,修改后执行以下命令
```
$ docker build -t name .
$ docker run -p 0.0.0.0:3000:22 -p 0.0.0.0:80:80 -d name
```
##总结
以上已经建立好基础,下一篇文章会说说:如何使用nvmhome+pm2,一键发布、管理自己的应用,,是一个很简单的个人主页,希望你们喜欢!
我的个人主页就是这样部署的:[Homepage传送门](http://www.kelvv.com/)
Node服务端极速搭建 -- nvmhome的更多相关文章
- Node服务端极速搭建 - nvmhome
本文意在让你掌握极速搭建Node服务端(任何Project) $ whoami name: kelvin email: kelvv@outlook.com homepage: www.kelvv.co ...
- node服务端搭建学习笔记
咳咳,终于迈出这一步了...这篇文章将是边学边写的真正笔记...用于mark下学习过程中的点滴~ 开篇先把我学习参考的文章来源给出,以表示对前人的尊敬: https://github.com/nswb ...
- spring-oauth-server实践:客户端和服务端环境搭建
客户端:http://localhost:8080/spring-oauth-client/index.jsp 服务端:http://localhost:8080/spring-oauth-serve ...
- GraphQL-- 使用Apollo Server搭建Node服务端
一.关于Apollo Server Apollo Server是一种使用JS创建GraphQL服务端的一个方案.它的兼容性比较好,可以很好地和GraphQL客户端进行兼容.同时它可以 独立作为服务端进 ...
- Vue+koa2开发一款全栈小程序(5.服务端环境搭建和项目初始化)
1.微信公众平台小程序关联腾讯云 腾讯云的开发环境是给免费的一个后台,但是只能够用于开发,如果用于生产是需要花钱的,我们先用开发环境吧 1.用小程序开发邮箱账号登录微信公众平台 2.[设置]→[开发者 ...
- node服务端渲染(完整demo)
简介 nodejs搭建多页面服务端渲染 技术点 koa 搭建服务 koa-router 创建页面路由 nunjucks 模板引擎组合html webpack打包多页面 node端异步请求 服务端日志打 ...
- Android中直播视频技术探究之---视频直播服务端环境搭建(Nginx+RTMP)
一.前言 前面介绍了Android中视频直播中的一个重要类ByteBuffer,不了解的同学可以 点击查看 到这里开始,我们开始动手开发了,因为我们后续肯定是需要直播视频功能,然后把视频推流到服务端, ...
- Redis服务端的搭建(初级)
前方低能,仅适合入门级菜鸟阅读,大神大牛通通闪开! 前言:redis经常被用来做缓存(原因自行科普),基于学习的需要自己搭建了一个redis服务器,考虑到项目的分布式部署,所以前期开始的时候,redi ...
- Netty入门一:服务端应用搭建 & 启动过程源码分析
最近周末也没啥事就学学Netty,同时打算写一些博客记录一下(写的过程理解更加深刻了) 本文主要从三个方法来呈现:Netty核心组件简介.Netty服务端创建.Netty启动过程源码分析 如果你对Ne ...
随机推荐
- 实验一 c++简单程序设计
一.实验内容 1.ex 2_28 (1) 用if...else判断 #include<iostream> using namespace std; int main() { char i; ...
- 生成allure测试报告之后,服务器端口无法访问查看生成的report,可能是这样引起的。
1. 检查防火墙 2. 如果机器有安装ADsafe,请关闭adsafe后重试
- 达人篇:6.3)试验设计DOE,Design of Experiments
本章目的:了解DOE,结构工程师为什么学习DOE. 1.前言:结构工程师为什么要学DOE 作者作为一名结构工程师,为什么要学习DOE. 很简单,在第四版FMEA手册中,DOE是重要的探测控制手段.如图 ...
- 【算法笔记】A1054 The Dominant Color
1054 The Dominant Color (20 分) Behind the scenes in the computer's memory, color is always talked ...
- javascript语言使用技巧及注意事项总结
1.首次为变量赋值时务必使用var关键字 变量没有声明而直接赋值得话,默认会作为一个新的全局变量,要尽量避免使用全局变量. var a=b=10;//其中a是局部变量,b是全局变量 2.使用===比= ...
- Java网络编程(一)
Java网络编程: 1.1: 网络编程:对于我这个“研究不深”的网络菜鸟来说,我觉得网络编程就是实现计算机与计算机之间通信的编程.写些能够实现计算机与计算机之间的通信就行了(目前来说). 1.2:一台 ...
- Types方法之isCastable-isConvertible
5. Conversions and Promotions 5.1. Kinds of Conversion 5.1.1. Identity Conversion 5.1.2. Widening Pr ...
- class对象存储
当加载一个类完成后,会在内存中实例化一个java.lang.Class类的对象,也就是该类的类对象.但是并没有明确规定必须在java堆中存放该类对象,对于HotSpot虚拟机而言,类对象存放在方法区里 ...
- 剑指offer(36-40)编程题
两个链表的第一个公共结点 数字在排序数组中出现的次数 二叉树的深度 平衡二叉树 数组中只出现一次的数字 36.输入两个链表,找出它们的第一个公共结点. class Solution1 { public ...
- SQL脚本添加删除修改字段
1.增加字段 alter table docdsp add dspcodechar(200)2.删除字段 ALTER TABLE table_NAME DROP COLUMNc ...