zoukankan      html  css  js  c++  java
  • 纯小白nodejs+mongdb项目在云服务器部署初体验

    关于服务器部署方面完全小白,最近也想整一个服务器摸索一下,顺便搞个小项目练练手,于是整了一个服务器,小白日常记录:

    一、小白篇

    进入腾讯云服务器--实例

    操作设备 mac

    1.1、安装nginx和httpd

    ssh -p 22 root@IP

    输入密码

    进入根目录cd  /

    安装nginx和httpd

    yum install nginx

    yum install  httpd

    进入目录/usr/share/nginx/html

    touch test2.html新建文件

    vi  test2.html编辑文件

    退出保存:wq

    然后

     

    注意一开始nginx默认放在/usr/share/nginx/html下面

    要想放在其他的目录需要修改配置文件:

    查找配置文件目录

    find path -name nginx.conf(find 目录 -name 文件名)

    nginx -t

     

     

     

    1.2、启动

    which nginx

    /usr/sbin/nginx 目录下执行./nginx  启动

    ps -ef|grep nginx 查看是否执行

    /etc/init.d/nginx status   查看状态

    /etc/init.d/nginx 启动   

    start stop reload (启动、停止、重启)

    1.3、知识补充

    文档:

    http://nginx.org/en/docs/
    Nginx教程(二) Nginx虚拟主机配置
    https://www.cnblogs.com/crazylqy/p/6891954.html

    Vim的6种基本模式及基本操作

     https://www.cnblogs.com/shiyanlou/archive/2017/09/05/7478346.html

     二、nodejs+mongdb项目在云服务器部署

    2.1、node安装

    打开官网鼠标右键复制的链接

    一种方法:

    https://nodejs.org/en/download/

    下载

     wget -c https://nodejs.org/dist/v12.16.2/node-v12.16.2.tar.gz

    解压:

    tar -zxvf  node-v12.16.2.tar.gz

    进入文件夹:

    cd node-v12.16.2

    在编译代码之前,还需要在机器上安装一些软件包,使得编译可以正常运行:

    sudo yum install gcc gcc-c++

    对源代码进行配置:

    ./configure

    进行编译:

    make

    安装:

    sudo make install
    安装完成后,可以输入命令 node -v

     然而 Nodejs 在编译的时候往往需要花费较多的时间,在配置较低的服务器上编译则需要更久。所以对于配置较低的服务器,我更推荐下面的方法,利用已编译的二进制文件安装 Nodejs 。

    第二种方法:

    直接使用已编译好的包
    Node 官网已经把 linux 下载版本更改为已编译好的版本了,我们可以直接下载解压后使用

    打开https://nodejs.org/dist/latest-v12.x/

    tar -xvf node-v12.16.2-linux-x64.tar.zx

    进入解压的node文件夹

    cd  node-v12.16.2-linux-x64

    创建链接

    ln -s /root/node-v12.16.2-linux-x64/bin/node /usr/local/bin/node
    ln -s /root/node-v12.16.2-linux-x64/bin/npm /usr/local/bin/npm

    查看 node, npm 版本

    node -v
    npm -v

    安装node.js本版管理工具

    npm install -g n

    参考https://github.com/tj/n

    2.2、mongdb安装

    打开这个链接选择你需要的本版

     https://www.mongodb.com/download-center/community

    下载安装包

    cd /usr/local
    wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.4.tgz

    解压安装包,重命名文件夹为 mongodb

    tar -zxvf mongodb-linux-x86_64-4.0.4.tgz
    mv  mongodb-linux-x86_64-3.0.6    mongodb 

    建立日志文件夹

    mkdir /var/mongodb
    mkdir /var/mongodb/data
    mkdir /var/mongodb/logs

     cd   usr/local/mongodb/bin

      启动 ./mongod

    如果报错server版本与shell2版本不一致,需要退出再重新进来

    然后又会报错,如下

    MongoDB shell version v4.0.4 connecting to: mongodb://127.0.0.1:27017 [js] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: No connection could be made because the target machine actively refused it. : connect@src/mongo/shell/mongo.js:257:13 @(connect):1:6 exception: connect failed

    如下解决:

    设备 Mac 
    
    1 - first open the terminal as root.
    
    sudo bash
    2 - make db folder
    
    mkdir -p /data/db
    3 - give the chmod 777 to the directory.
    
    chmod 777 /data
    chmod 777 /data/db
    4 - confirm the /data/db is 777
    
    ls -ld /data/db
    5 - exit the root shell
    
    6 - run the mongod cmd at mongodb_path/bin directory.
    
    mongod
    make sure it is listing port. By default, it listens to the 27017 port.
    
    7- open the new terminal window and run the mongo cmd at mongodb_path/bin directory.
    
    mongo

    在bin如果启动mongod报错的话用./mongod试试

     在/etc/rc.local文件里配置我们需要开机启动的服务rc.local 文件,添加 CentOS 开机启动项

    /usr/local/mongodb/bin/mongod --dbpath=/var/mongodb/data --logpath /var/mongodb/logs/log.log -fork

    启动 mongodb

    /usr/local/mongodb/bin/mongod --dbpath=/var/mongodb/data --logpath /var/mongodb/logs/log.log -fork

    链接参考文档:

    https://stackoverflow.com/questions/13312358/mongo-couldnt-connect-to-server-127-0-0-127017

    https://stackoverflow.com/questions/51812931/does-not-start-mongodb-4?answertab=votes#tab-top

    2.3、安装git

    使用 yum 安装(推荐。这个安装方便),安装后可直接使用

    yum install git

    安装同node,版本链接如下

    https://mirrors.edge.kernel.org/pub/software/scm/git/

    安装 git 的时候你可能还需要安装 curl-devel

    yum install curl-devel

    你还需要生成一个 key 用于git的识别
    生成 sshkey,敲三次回车即可

    ssh-keygen -t rsa -C"xxxxx@xxxxx.com"

    查看你的 public key,并把他添加到github

    cat ~/.ssh/id_rsa.pub

    直接 建一个文件夹

    git clone  https://github.com/你的地址.git.

    启动你的项目别忘了npm install

     效果如下:

     

    2.4、安装pm2  通过pm2配置文件来自动部署项目

    这个依赖是可以在服务器上面运行node项目的,相比于原生的node启动的文件

    npm install -g pm2

    设置软链

    # 设置软链
    ln -s node的具体路径/bin/pm2 /usr/local/bin/pm2

    在项目根目录下新建一个 deploy.yaml 文件

    # deploy.yaml
    apps:
      - script: ./start.js       # 入口文件
        name: 'app'              # 程序名称
        env:                     # 环境变量
          COMMON_VARIABLE: true
        env_production:
          NODE_ENV: production
    
    deploy:                     # 部署脚本
      production:               # 生产环境
        user: lentoo            # 服务器的用户名
        host: 192.168.2.166     # 服务器的ip地址
        port: 22                # ssh端口
        ref: origin/master      # 要拉取的git分支
        ssh_options: StrictHostKeyChecking=no # SSH 公钥检查
        repo: https://github.com/**.git # 远程仓库地址
        path: /home              # 拉取到服务器某个目录下
        pre-deploy: git fetch --all # 部署前执行
        post-deploy: npm install &&  pm2 reload deploy.yaml --env production # 部署后执行
        env:
          NODE_ENV: production

    使用pm2部署项目

    每次部署前先将本地的代码提交到远程git仓库
    首次部署

    pm2 deploy deploy.yaml production setup

    再次部署

    pm2 deploy deploy.yaml production update

    该部署流程同样适用前端项目

    如vue-cli的项目,自动部署到服务器,自动执行npm run build 命令,生成的dist目录,指定到nginx的静态文件目录下。

    PM2 的主要特性

    内建负载均衡(使用 Node cluster 集群模块)
    后台运行
    0 秒停机重载,我理解大概意思是维护升级的时候不需要停机.
    具有 Ubuntu 和 CentOS 的启动脚本
    停止不稳定的进程(避免无限循环)
    控制台检测
    提供 HTTP API
    远程控制和实时的接口 API ( Nodejs 模块,允许和 PM2 进程管理器交互 )

    #启动
    pm2 start xxx.js
    
    #停止 (AppName|id) 如下放图
    pm2 stop (AppName|id)

    2.5、解决ssh登录后闲置时间过长而断开连接

    修改sshd_config配置文件

    cd /
    vim /etc/ssh/ssh_config

    找到下面两行打开注释,并修改你想要的时间

    ClientAliveInterval 30   #客户端每隔多少秒向服务发送一个心跳数据
    ClientAliveCountMax 69120 #客户端多少秒没有相应,服务器自动断掉连接

    重启sshd服务

    service sshd restart(service sshd reload )

    其他的解决方案

    2.6、安装Tmux,即使服务断了,网站还是可以访问的

    2.6.1、Tmux是什么?

    Tmux是一个终端多用复用器,可以替代GNU屏幕。启动一个Ymux会话,然后在该会话中打开多个窗口。每个窗口占据整个屏幕可以分割成矩形窗格。

    2.6.2、Tmux主要是用处

    1、使用Tmux可以轻松的在一个终端的多个程序进行切换将他们分离链接到不同的的终端
    2、Tmux会话是持久性的,即使断开连接,在TMux运行的程序也将继续运行

    2.6.3、安装Tmux

    你可以使用发行版的包管理器轻松安装TMux:

    Installing Tmux on Ubuntu and Debian

    sudo apt install tmux

    Installing Tmux on CentOS and Fedora

    sudo yum install tmux

    Installing Tmux on macOS

    brew install tmux

    我用的是 CentOS系统所以

    sudo yum install tmux -y

    启动Tmux

    tmux


    Tmux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是Ctrl+b,即先按下Ctrl+b,快捷键才会生效。

    举例来说,帮助命令的快捷键是Ctrl+b ?。它的用法是,在 Tmux 窗口中,先按下Ctrl+b,再按下?,就会显示帮助信息。

    然后,按下 ESC 键或q键,就可以退出帮助。

    会话管理命令

    #新建会话-第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是1,以此类推
    tmux new -s <session-name>
    #分离会话-在Tmux 窗口中,按下Ctrl+b d或者输入tmux detach命令,就会将当前会话与窗口分离。
    tmux detach
    #tmux ls命令可以查看当前所有的 Tmux 会话。
    tmux ls 或者  tmux list-session
    #接入会话
       # 使用会话编号
       tmux attach -t 0
       # 使用会话名称
       tmux attach -t <session-name>
    #杀死会话
    tmux kill-session命令用于杀死某个会话。
       # 使用会话编号
       tmux kill-session -t 0
       # 使用会话名称
       tmux kill-session -t <session-name>
    #切换会话  tmux switch命令用于切换会话
       # 使用会话编号
       tmux switch -t 0
       # 使用会话名称
       tmux switch -t <session-name>
    #重命名会话-tmux rename-session命令用于重命名会话
       tmux rename-session -t 0 <new-name>

    窗口操作命令查询

    #划分窗格- tmux split-window命令用来划分窗格
       # 划分上下两个窗格
       tmux split-window
       # 划分左右两个窗格
       tmux split-window -h
    #移动光标-tmux select-pane命令用来移动光标位置。
    # 光标切换到上方窗格
     tmux select-pane -U
    # 光标切换到下方窗格
     tmux select-pane -D
    # 光标切换到左边窗格
     tmux select-pane -L
    # 光标切换到右边窗格
     tmux select-pane -R
    # 交换窗格位置-tmux swap-pane命令用来交换窗格位置。
      # 当前窗格上移
      $ tmux swap-pane -U
      # 当前窗格下移
      $ tmux swap-pane -D

     了解更多:

    https://linuxize.com/post/getting-started-with-tmux/

    https://www.youtube.com/watch?v=BHhA_ZKjyxo&feature=youtu.be

    待更新

     

  • 相关阅读:
    股指期货高频数据机器学习预测
    如何使用TradingView(TV)回测数字货币交易策略
    使用EXCEL计算并绘制MACD指标
    使用EXCEL计算并绘制EMA指标
    使用EXCEL计算并绘制MFI指标
    使用EXCEL计算并绘制KDJ指标
    使用EXCEL计算并绘制OBV指标
    如何使用Excel绘制砖型图Renko Charts
    简约主义的市场分析图表--砖型图Renko Charts
    教你一步一步使用Excel获取API接口的金融数据
  • 原文地址:https://www.cnblogs.com/pikachuworld/p/12568958.html
Copyright © 2011-2022 走看看