服务器部署node新手教程(二)

服务器部署node教程(二)

期间经历了很多坑,多数还是找到了解决办法,相信经历了第一次,以后就能孰能生巧了。

安装最新的node.js环境

ssh 用户名

yum update -y更新

yum install -y nodejs安装nodejs

查看结果无误,不过版本太低低 删掉 rm

1572102034266

去官网下

https://nodejs.org/dist/

我下载的最新13版本

wget https://nodejs.org/dist/v13.0.1//node-v13.0.1-linux-x64.tar.xz

解压

tar -xvJf node-v13.0.1-linux-x64.tar.xz

利用软链接放到环境变量 必须用绝对路径 ,路径自己ls查看

1572105757441

成功🤞

通过VsCode ftp 连接接服务器

vscode安装插件sftp

ctrl+shift+p搜索sftp:Config

1572106834768

配置config,用法字面意思能看懂,更复杂配置搜文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"name": "Jason",
"host": "47.103.209.82",
"protocol": "sftp",
"port": 22,
"username": "root",
"remotePath": "/home/frontend",
"uploadOnSave": true,
"ignore": [
".vscode",
".git",
".DS_Store"
],
"syncOption": {
"delete": true,
"update": true
},
"watcher": {
"files": "**/*",
"autoUpload": true,
"autoDelete": false
},
"privateKeyPath": "~/.ssh/id_rsa"
}

1572145404172

右键可以拉取推送到服务器

配置nginx 反向代理

安装yum install -y nginx

配置nginx.conf,监听服务器本地的5000端口,详细配置请看nginx文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /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;




server {
listen 80 default_server;
server_name localhost;

location / {
proxy_pass http://127.0.0.1:3000;
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}


推入服务器,修改为可执行权限

1572154533239

覆盖掉原来的nginx配置文件

# cp nginx.conf /etc/nginx/nginx.conf

重启nginx

# systemctl restart nginx

浏览器输入ip,返回nginx error说明已经配上了

1572154823450

在服务器安装个express

npm install express -S

测试一下

趴到本地,建一个index.js测试文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const express = require('express');
const path = require('path');
const app = express();

// 处理静态文件
app.use(express.static('client/dist'));

app.get('/', (req, res) => {
res.sendFile(path.resolve(__dirname, 'client', 'dist', 'index.html'));
});

app.get('/api/datas', (req, res) => {
res.json({
name: 'Jason',
wechat: 'wjcyx99'
});
});

const port = 5000;

app.listen(port, () => {
console.log(`Server running on port ${port}`);
});

推到服务器,运行 node index.js1572156101543

浏览器查看结果,成功👍

1572156042839

创建全局模块软链接

刚刚 cnpm install -g @vue/cli安装个vue脚手架

找到vue 在这里

1572157762872

放到全局,有效果

1572157803313

使用forever 后台运行

https://github.com/foreversd/forever

npm install forever -g

1
2
$ forever start app.js          #启动
$ forever stop app.js #关闭

打包上线

实验做得差不多了,给我的CityMALL打包上线

linux下安装mongodb

  1. 在官方下找到下载路径,CentOS红帽子公司的

1572253297039

wget 路径

  1. 下载完后解压到这个目录,没有创建

tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgz -C /usr/local/mongoDB/

名字太长了,改个名# mv mongodb-linux-x86_64-rhel70-4.2.1 mongodbserver

  1. 创建data数据,log日志,etc配置 文件夹

创建配置文件mongodb.conf

cd /usr/local/mongoDB/mongodbserver/etc

vim mongodb.conf

从mongodb3.2开始默认的存储引擎是WiredTiger,3.3版本之前的默认存储引擎是MMAPv1,mongodb4.x版本不再支持MMAPv1存储引擎。

1
2
3
4
5
6
7
dbpath=/usr/local/mongoDB/mongodbserver/data/db #数据存放
logpath=/usr/local/mongoDB/mongodbserver/data/logs/mongodb.log #日志存放
port=27017 #端口
logappend=true #追加方式写日志  
noauth=true #不启用验证  
fork=true #可在后台运行
journal=true #每次写入会记录一条操作
  1. 添加环境变量
  • 在/etc/profile文件中,文末添加 export vim /etc profile

export PATH=$PATH:/usr/local/mongoDB/mongodbserver/bin

执行``source /etc/profile`,使系统环境变量立即生效

  • 将mongo路径软链到/usr/bin路径下,方便随处执行mongo命令

执行命令: ln -s /usr/local/mongoDB/mongodbserver/bin/mongo /usr/bin/mongo

通过配置文件运行,mongod

# mongod --config /usr/local/mongoDB/mongodbserver/etc/mongodb.conf

运行mongo成功👍

1572262020655

到database 初始化mongoDB创建schema

1572442011030

1
2
3
4
5
6
7
8
const mongoose = require('mongoose')
const db = "mongodb://localhost/shoppingMall"
const glob = require('glob')
const { resolve } = require('path')

exports.initSchemas = () => {
glob.sync(resolve(__dirname, './schema', '**/*.js')).forEach(require)
}

数据库导入,修正

之前写了api,直接在浏览器中输入,执行命令

之前的白酒分类是错的把它修正

1572488999983

老是出现node_modules错误

windowscnpm install rimraf -g

rm -f /node_modules

linux rm -rf node_modules

一般都是把node_modules删除重新下载cnpm install,有些还不能删除强行移动文件夹就行了

不挂断在后台运行

  1. nohup
    nohup 是 no hang up 的缩写,就是不挂断的意思。nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。

  2. &

    &是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出。

使用命令 nohup COMMAND & 这样就能使命令永久的执行下去,关闭终端窗口、Ctrl+c 、断开SSH连接都不会影响其运行,并且可以使用标准输入,终端能够接收任何输入,重定向标准输出和标准错误到当前目录下的nohup.out文件。

前台打包成静态文件

npm run build 生成dist文件夹放入service,直接就可以使用了

1
2
3
4
5
const path = require('path')
const staticFiles = require('koa-static')

// 指定 dist目录为静态资源目录,用来存放 js css images 等
app.use(staticFiles(path.resolve(__dirname, "./dist")))

在手机测试成功后心情豁然开朗😎

1572520037662