海洋数据分享平台开发手册(4)——部署上线

537 阅读4分钟

主要项目功能已经开发完成,记录一下部署服务器过程。

通过power shell连接服务器

ssh root@ip -p 22
root@ip's password:

password后面输入密码

如果重置过服务器,需要输入下面命令来清理缓存

 ssh-keygen -R ip

2.更新CentOS的yum源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo


yum makecache

yum -y update

3.安装nodejs

Node.js v12.x(之所以不安装最新版本,是因为兼容问题,会使代码无法运行)

# As root
curl -fsSL https://rpm.nodesource.com/setup_12.x | bash -
bash -

# No root privileges
curl -fsSL https://rpm.nodesource.com/setup_12.x | sudo bash -

yum install -y  nodejs

检查一下版本

node -v

4.安装MongoDB

1、创建仓库文件:

vi /etc/yum.repos.d/mongodb-org-3.4.repo

然后复制下面配置,保存退出

[mongodb-org-3.4]

name=MongoDB Repository

baseurl=https:``//repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/

gpgcheck=1

enabled=1

gpgkey=https:``//www.mongodb.org/static/pgp/server-3.4.asc

2、yum安装

yum install -y mongodb-org

没有权限就在前面加: sudo

安装完毕后修改配置文件:

vi /etc/mongod.conf

修改配置文件的 bind_ip, 默认是 127.0.0.1 只限于本机连接。所以安装完成后必须把这个修改为 0.0.0.0 ,否则通过别的机器是没法连接的!

3、启动、停止、重启

MongoDB默认将数据文件存储在/var/lib/mongo目录,默认日志文件在/var/log/mongodb中。如果要修改,可以在 /etc/mongod.conf 配置中指定备用日志和数据文件目录。

启动命令:

service mongod start

停止命令:

service mongod stop

 重启命令:

service mongod restart

可以通过查看日志文件查看mongoDB是否启动成功:

cat /``var``/log/mongodb/mongod.log

日志文件应该会出现如下一句说明

[initandlisten] waiting for connections on port <port>

是mongodb运行端口

5.mongodb备份与安装

mongodump命令脚本语法例如以下:

>mongodump -h dbhost -d dbname -o dbdirectory
  • -h:

    MongDB所在server地址,比如:127.0.0.1。当然也能够指定port号:127.0.0.1:27017

  • -d:

    须要备份的数据库实例,比如:test

  • -o:

    备份的数据存放位置。比如:c:\data\dump。当然该文件夹须要提前建立,在备份完毕后,系统自己主动在dump文件夹下建立一个test文件夹。这个文件夹里面存放该数据库实例的备份数据。

mongorestore命令脚本语法例如以下:

mongorestore -host 0.0.0.0:27017 -d echarts /home/meng/echarts   唯一有效代码

6.安装nginx

yum -y install nginx

nginx -v

启动

service nginx start

检查是否启动成功

ps -ef | grep nginx

日志更新检查以及重启

nginx -t

nginx -s reload

7.nodejs依赖安装

通过filezilla导入nodejs代码文件

更换镜像命令

npm install -g cnpm --registry=https://registry.npm.taobao.org

安装全局依赖

cnpm i -g yarn pm2 nodemon
yarn config set registry https://registry.npm.taobao.org/
yarn install

进入node代码目录,安装该部分依赖,兵启动PM2

cnpm install
pm2 start app.js

检查

pm2 list

查看服务端代码能否正常运行

curl http://www.localhost:8888/ocean

8.全段代码问题处理与相关配置

代码部署这块个人有个人的问题,我罗列一下自己遇到并解决的几个主要问题:

  • 跨域问题

本来在本机测试的时候跨域调配数据问题是已经被解决了的,但不知道为什么上传到服务器时候总是获取不到数据,几经周折,我更改了代码逻辑,选择将服务器上的数据通过公网ip暴露出来,在从暴露的ip中获取数据,这样算是叫完美的解决问题了。nginx配置如下:

  • 静态资源引入

我把静态资源(china.json)放在前端文件夹里,一开始是用绝对路径的引入方法

http://localhost:8999/static/map/china.json

在本机测试的时候就容易报错,获取不到数据;放到服务器上便一次成功也没有了,后来查找资料将获取文件的方式改为相对路径就解决了。

import Map from '../../public/static/map/china.json'
  • 后端文件上传

上传除了 node_modules以外的所有文件,然后进入文件夹安装依赖

cnpm install

没遇到什么报错

  • 前端文件上传

更改基准路径为服务器ip

axios.defaults.baseURL = 'http://42.193.131.94/api/'

router下的index.js找到如下模块进行如下更改

const router = new VueRouter({  // 为部署服务  mode: 'hash',  routes})

vue.config.js基本配置如图

module.exports = { 
    devServer: {
    port: 8999, // 配置端口号
    open: true
  },
  publicPath: './',
  productionSourceMap: false
}

然后进到前端文件夹下输入以下命令来打包:

npm run build

会生成dist文件夹,将里面的东西上传到服务器

  • 配置nginx

别的东西没动,我只改了server里面的内容,如下:

我经过上述的操作基本完成了部署,过程很艰苦,但也算有所收获。特别需要注意的是,如果代码在本机进本上跑通的的话,移到服务器上报错基本上是以为文件路径问题,我个小白也没啥解决途径,多多摸索吧!