如何远程部署CentOS前后端项目的思路

1,889 阅读3分钟

个人实践操作后整理的学习笔记,

一台CentOS远程电脑, 刚刚开始不知道如何使用,登录打开后只有命令行, 没有图形化界面。如何部署vue前端项目 和 Node.js 后台服务, 通过域名访问部署的网站? 本文主要是写了完成这个功能时的思路和过程, 记录了遇到问题的解决方法。分享给大家,希望有帮助。

  • 本机电脑的操作系统为 Windows10 64位
  • 远程电脑的操作系统为 CentOS 6.10 64位

学习到的相关知识

  • 远程登录 CentOS 系统
  • 安装node、npm、nginx、pm2、xftp、
  • 使用linux常用命令
  • nginx 配置
  • node + express 开发
  • 绑定域名、域名备案

远程登录 CentOS 系统

在本机电脑打开窗口命名,输入以下命令,

ssh root@公网ip 

回车后,输入实例密码,出现Welcome to Alibaba Cloud Elastic Compute Service ! 表示登录成功。

登录成功后,初始化是没有任何图形化界面的,刚刚开始我练习了一些linux命令,如

  • 查看目录 ls
  • 新建文件夹 mkdir

更多命令在 菜鸟教程 中可以查询。

安装node环境

熟悉了一些命令后,准备完成我的任务,搭建node环境

  • 安装node命令
wget https://nodejs.org/dist/v9.3.0/node-v9.3.0-linux-x64.tar.xz

安装后输入ls发现这是个压缩包,还需要用命令进行解压

  • tar.gz.zip解压命令
tar负责打包,gzip负责压缩
tar
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
  • 解压安装包后配置node环境变量
ln -s ~/node-v9.3.0-linux-x64/bin/node /usr/bin/node
ln -s ~/node-v9.3.0-linux-x64/bin/npm /usr/bin/npm

nginx配置

安装nginx后, 输入 vim nginx.conf 命令 打开 nginx.conf 文件,进行配置, 我的文件大概是下面的样子

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

# user nginx;
user root;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
   worker_connections  1024;
}
http {
   log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                     '$status $body_bytes_sent "$http_referer" '
                     '"$http_user_agent" "$http_x_forwarded_for"';

   access_log  /var/log/nginx/access.log  main;

   sendfile            on;
   tcp_nopush          on;
   tcp_nodelay         on;
   keepalive_timeout   65;
   types_hash_max_size 2048;

   include             /etc/nginx/mime.types;
   default_type        application/octet-stream;

   # Load modular configuration files from the /etc/nginx/conf.d directory.
   # See http://nginx.org/en/docs/ngx_core_module.html#include
   # for more information.
   include /etc/nginx/conf.d/*.conf;
   server {
   # 访问端口号
   listen       80;
   # 服务器地址(访问ip)
   server_name  公网ip;
 
   include /etc/nginx/default.d/*.conf;
   # 静态资源文件
   location / { 
     # 静态资源存放路径
     root /root/nodeChatRoom/client/; 
     # 默认读取文件
     index index.html index.htm;     
   }
   # 接口代理
   location /api {
     # 后端代码接口地址,node启动地址
     proxy_pass http://公网ip:3000;
   }
   error_page 404 /404.html;
       location = /40x.html {
   } 
   }
}

配置好nginx 后,重启nginx

 nginx -s reload

安装xftp

开发环境配置好后,如何把我本机的代码上传到远程服务呢, 我选择的是xftp,这样修改文件就不需要使用linux命令了,也方便上传文件。

pm2

  • 安装pm2
sudo npm uninstall pm2
sudo npm i pm2@latest -g
sudo ln -s  /root/node-v9.3.0-linux-x64/lib/node_modules/pm2/bin/pm2 /usr/local/bin/pm2

把node项目上传到远程电脑后, 打开命令行,输入

node app.js

后台服务启动成功, 但是这样把命令窗口关闭,服务就停止了,如果我重新上传了新的node代码,服务不会更新, 所以我选择了pm2,启动node服务, 自动更新和启动我的后台服务。

技巧

  • 安装tree 查看tree目录
yum install tree
tree // 在node文件夹下查看树形目录

出现大概下面的目录结构

.
├── bin
│   ├── node
│   ├── npm -> ../lib/node_modules/npm/bin/npm-cli.js
│   └── npx -> ../lib/node_modules/npm/bin/npx-cli.js
├── CHANGELOG.md
├── include
  • 通过 whereis 查看软件所在路径 如查看 node 所在路径
whereis node

参考文章