所有步骤在MAC 电脑环境下操作

一、配置环境

1、连接到远程服务器

1、购买阿里云ECS服务器,我选用的 ubantu 14.0.4 (64位),购买的时候输入的密码记录下来,没有设置的话可以随后在ECS控制台修改

2、浏览器进入阿里云平台 -> ECS控制台 -> 实例列表

3、查看实例的信息:记录下自己的IP(公) 47.xxx.xxx.xxx

4、点击管理,可以修改一下实例名称什么的,默认是一串不好识别的乱码,可以改成自己好好记的。

5、在本地的打开终端: 输入 $ ssh root@47.xxx.xxx.xxx ECS服务器公网 IP远程连接,输入自己的远程ubantu 服务器密码

可能会提示以下信息 选yes 然后再输入远程服务器密码密码即可。看到Welcome to Ubuntu。。。证明连接成功

wjw$ ssh root@47.xxx.xxx.xxx
The authenticity of host '47.xxx.xxx.xxx (47.xxx.xxx.xxx)' can't be established.
ECDSA key fingerprint is SHA256:Nq44XG9TtdnZ7yNE6P0k0S2FOGmiz/sdSkmu2j7ze2k.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '47.xxx.xxx.xxx' (ECDSA) to the list of known hosts.
root@47.103.101.102's password: Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-93-generic x86_64) * Documentation: https://help.ubuntu.com/ Welcome to Alibaba Cloud Elastic Compute Service ! Last login: Sun Jun 2 15:22:59 2019

2、给服务器安装升级工具包

1、用$ sudo apt-get update 命令

# sudo apt-get update

。。。
Reading package lists... Done

2、安装必备的工作包

$ sudo apt-get install git vim openssl build-essential libssh-dev wget curl

中间会提示你,安装包会占用多少磁盘空间,选择输入yes就好

3、安装nvm (node version manager), 帮助我们管理 node 版本

到github 上搜索nvm

https://github.com/nvm-sh/nvm

找到安装命令,第二步我们已经安装了 curl, 直接按照 网页命令安装就好

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 13226 100 13226 0 0 7074 0 0:00:01 0:00:01 --:--:-- 7076
=> Downloading nvm from git to '/root/.nvm'
=> Cloning into '/root/.nvm'...
remote: Enumerating objects: 278, done.
remote: Counting objects: 100% (278/278), done.
remote: Compressing objects: 100% (249/249), done.
remote: Total 278 (delta 33), reused 88 (delta 16), pack-reused 0
Receiving objects: 100% (278/278), 142.36 KiB | 0 bytes/s, done.
Resolving deltas: 100% (33/33), done.
Checking connectivity... done.
=> Compressing and cleaning up git repository => Appending nvm source string to /root/.bashrc
=> Appending bash_completion source string to /root/.bashrc
=> Close and reopen your terminal to start using nvm or run the following to use it now: export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion

安装好之后 需要重新连一下服务器,使我们的nvm命令生效.

用 # nvm ls 命令查看nodeJS的版本情况

$ root@47.x.x.x 

...

root@Jarvis:~# nvm ls
N/A
iojs -> N/A (default)
node -> stable (-> N/A) (default)
unstable -> N/A (default)

3、安装nodeJS

$ nvm install node
#或者
$ nvm use v12.3.1
# 也可以用 以下命令 来指定默认版本
$ nvm alias default v112.3.1
# 最后 查看版本情况
$ nvm ls root@Jarvis:~# nvm ls
-> v12.3.1
default -> node (-> v12.3.1)
node -> stable (-> v12.3.1) (default)
stable -> 12.3 (-> v12.3.1) (default)
iojs -> N/A (default)
unstable -> N/A (default)
lts/* -> lts/dubnium (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.16.0 (-> N/A)
lts/dubnium -> v10.16.0 (-> N/A)
root@Jarvis:~#

4、创建一个node服务

1、在 nodeJS 官网的文档里 拷贝示例代码,修改 端口号 为3010

2、在 服务端的根目录下创建 server.js 文件

$ vim server.js

粘贴示例代码:

const http = require('http');

const hostname = '127.0.0.1';
const port = 3010; const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World!\n');
}); server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});

3、保存运行

$ node server.js

//配置ubantu 防火墙

$ sudo vi /etc/iptables.up.rules

在vim下输入

-A INPUT -s 127.0.0.1 -p tcp --destination-port 3010 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -s 127.0.0.1 -p tcp --soruce-port 3010 -m state --state ESTABL
ISHED -j ACCEPT
~

由于服务器之前没有配置过任何 iptables ,打开的 /etc/iptables.up.rules 是空文件,所以,可以先在 命令行执行以下命令

先停用iptables

$sudo iptalbes -F
$sudo iptables -X
$sudo iptables -Z
$sudo iptables -P INPUT ACCEPT
v$sudo iptables -P OUTPUT ACCEPT
$sudo iptables -P FORWARD ACCEPT
$sudo modprobe -r ip_tables

再启用

# 本地进程 lo 的 INPUT 和 OUTPUT 链接,eth0 的 INPUT 链
$sudo iptables -A INPUT -i lo -j ACCEPT
$sudo iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -jACCEPT
$sudo iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j LOG
$sudo iptables -A OUTPUT -o lo -j ACCEPT
#开放SSH端口22
iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT
#开放Web端口80
iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT
#开放FTP端口21、20
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#删除FTP端口21、20
iptables -D INPUT -p tcp --dport 20 -j ACCEPT
iptables -D INPUT -p tcp --dport 21 -j ACCEPT #允许loopback(不然会导致DNS无法正常关闭等问题)
IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT (如果是OUTPUT DROP) #保存iptables规则
iptables-save > /etc/iptables.up.rules $sudo modprobe ip_tables #修改 /etc/network/interfaces ,添加下面末尾2行脚本
auto eth0
iface eth0 inet dhcp
pre-up iptables-restore < /etc/network/iptables.up.rules
post-down iptables-save > /etc/network/iptables.up.rules

在 iptables.up.rules 文件中 ,可以在 COMMIT一行的上方添加自己需要的规则

# Generated by iptables-save v1.4.21 on Sun Jun  2 17:45:31 2019
*filter
:INPUT ACCEPT [1:40]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [465:67402]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -m state --state INVALID,NEW -j LOG
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT
# Completed on Sun Jun 2 17:45:31 2019

然后保存

:wq

重新加载 iptables

$sudo iptables-restore < /etc/iptables.up.rules

关闭不必要的服务

sudo ufw stop
sudo service nginx stop

用node命令打开 server.js 运行服务

root@Jarvis:~# node server.js
Server running at http://127.0.0.1:3010/

再在另一个终端里启动一个 远程服务

然后再命令行里 输入:

curl http://127.0.0.1:3010 发现服务启动成功

root@Jarvis:~# curl http://127.0.0.1:3010
Hello, World!
root@Jarvis:~#

//指定 node 版本并 设为默认使用版本

$nvm use v10.16.0 && nvm alias default v10.16.0

阿里云服务器+ubantu+nodejs 服务器基本配置流程的更多相关文章

  1. 基于Apache的阿里云部署Node.js服务器(Windows环境)

    1 前言 由于nodejs项目对方开放了多个端口,而且阿里云上的Apache服务器(windows)已经挂载了网站,此时需要把此项目也挂上去,网上查询资料,方法略少,基本是基于nginx版本的. 2  ...

  2. 阿里云RDS与ECS服务器数据库做主从

    阿里云RDS与ECS服务器数据库做主从 [精] 里云RDS(数据库)基于飞天大规模分布式计算和存储能力,提供超高性价比的单机版实例,同时利用读写分离横向扩展读能力,满足网站类的业务需求.提供稳定.高性 ...

  3. 使用Navicat或者其他数据库工具连接阿里云EDS(数据库服务器)实例过程详解

    使用Navicat或者其他数据库工具连接阿里云EDS(数据库服务器)实例过程详解 背景:这几天从阿里云上面购买了云服务器,最垃圾的那种,还送oss和EDS数据库服务器,只不过EDS数据库服务器只有一个 ...

  4. 关于阿里云专有网络搭建FTP服务器的深坑

    之前用的FTP服务器都是,随便搭建一下就能用了, 昨天因为服务器的问题,换了个服务器,搭建FTP服务器的时候发现, 搭建的服务器居然只能使用 主动模式访问,改成被动后 无法获取目录, 百度了 各大论坛 ...

  5. 阿里云ECS主机多个网站配置,是有先后顺序的

    注意:阿里云ECS主机多个网站配置,是有先后顺序的: 进入路径:/alidata/server/httpd-2.4.2/conf/vhosts/  注意这个2.4.2是自己的版本不一样,但是找到 se ...

  6. 云计算之路-阿里云上:Web服务器遭遇奇怪的“黑色30秒”问题

    今天下午访问高峰的时候,主站的Web服务器出现奇怪的问题,开始是2台8核8G的云服务器(ECS),后来又加了1台8核8G的云服务器,问题依旧. 而且3台服务器特地使用了不同的配置:1台是禁用了虚拟内存 ...

  7. 【转载】阿里云轻量应用型服务器和ECS服务器比较

    在采购阿里云服务器的时候,我们会发现阿里云服务器分好多种,如GPU服务器.ECS服务器.轻量应用型服务器等.ECS服务器和轻量应用型服务器很多人无法搞明白其中的差别,个人的观点是轻量应用型服务器适合入 ...

  8. 二步实现 远程连接 阿里云SqlServer 2012 数据库服务器

    前言:在使用 阿里云 上的一些产品时,遇到不少坑. 安装IIS 时,遇到 因买的配置过低,虚拟内存不足,而导致 IIS 总是安装失败: 现在 在上面安装了个 Sql Sever 2012,远程老是 不 ...

  9. 阿里云ubuntu 创建svn服务器

    1.SubVersion服务安装 sudo apt-get install subversion sudo apt-get install libapache2-svn 2.服务器配置 2.1相关用户 ...

随机推荐

  1. Spark-Core RDD转换算子-双Value型交互

    1.union(otherDataSet) 作用:求并集. 对源 RDD 和参数 RDD 求并集后返回一个新的 RDD scala> val rdd1 = sc.parallelize(1 to ...

  2. SI 和 MDK 添加Astyle功能

    一. 什么是Astyle 1. Astyle是一个用来对C/C++代码进行格式化的插件,可在多个环境中使用.该插件基于 Artistic Style 开发 二. 软件获取地址 1.下载地址:https ...

  3. [Luogu 5465] [LOJ 6435] [PKUSC2018]星际穿越(倍增)

    [Luogu 5465] [LOJ 6435] [PKUSC2018]星际穿越(倍增) 题面 n个点的图,点i和[l[i],i)的所有点连双向边.每次询问(l,r,x)表示x到[l,r]的所有点的最短 ...

  4. mysql低版本升级到5.7

    升级步骤 #安全的停止数据库的运行 /etc/init.d/mysql.server stop # 解压mysql tar包 tar zxf mysql-5.7.28-linux-glibc2.12- ...

  5. java int转Short

    使用short(xx) problemMultipleChoiceDO.setExamCount((short)0);//在数据库中是smallint类型

  6. Redux 关系图解

    Redux是一款状态管理库,并且提供了react-redux库来与React亲密配合, 但是总是傻傻分不清楚这2者提供的API和相应的关系.这篇文章就来理一理. Redux Redux 三大核心 Re ...

  7. 理解PHP面向对象三大特性

    一.封装性 目的:保护类里面的数据,让类更安全, protected和private只能在类中或子类访问,通过public提供有限的接口供外部访问,封装是控制访问,而不是拒绝访问 封装关键字:publ ...

  8. __bridge

    Core Foundation 框架Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能.下面列举 ...

  9. luogu P3601 签到题

    链接P3601 签到题 求\[\sum_{i=l}^{r} i-\phi_i\] \(l,r\leq 10^{12},\ r-l\leq 10^6\) 杜教筛似乎做不了. 然后再看\(l\),\(r\ ...

  10. springboot poi

    pom.xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</a ...