zoukankan      html  css  js  c++  java
  • 阿里云服务器+ubantu+nodejs 服务器基本配置流程

    所有步骤在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!
    ');
    });
    
    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

  • 相关阅读:
    单例模式
    堆排序--leetcode 215
    二叉树--路径问题
    二叉树--前中后序两两结合构建二叉树
    CglibProxy
    JdkProxy
    git config --global http.sslVerify false
    PdfUtil
    idea中创建的文件类型无法识别
    sql优化
  • 原文地址:https://www.cnblogs.com/wjw-blog/p/10963327.html
Copyright © 2011-2022 走看看