nodejs项目部署到腾讯云详细步骤

1、nodejs 安装

1、登录服务器

mac下首先打开终端,然后输入sudo su - 回车进入根目录
然后输入:ssh -p 端口号 服务器用户名@ip (例如ssh -p 22 userkunyu@119.29.37.XX
)回车,到这会让你输入yes或者no来确认是否连接,输入yes回车

然后输入在服务器上的用户密码回车

到此进入的是你在服务器上的账户的目录,即为连接成功
复制代码

先更新一下(第一次使用服务器先更新下)

yum update -y
复制代码

2、下载nodejs

从nodejs官网获取下载对应操作系统的连接

wget https://nodejs.org/dist/v8.10.0/node-v8.10.0-linux-x64.tar.xz
复制代码

wget命令下载Node.js安装包。 下载完成后可以看到服务器目录下有了nodejs的安装包。

解压该安装包

tar xvf node-v8.10.0-linux-x64.tar.xz
复制代码

在服务器目录可以看到解压后的文件

node默认安装在/root/node-v8.10.0-linux-x64/目录下, 将node安装到其他目录(如:/opt/node/)下,

拓展:

linux centos 各目录文件解释

Linux 目录结构

mkdir -p /opt/node/
mv /root/node-v8.10.0-linux-x64/* /opt/node/
复制代码

删除/root/node-v8.10.0-linux-x64/安装包

rm -rf /root/node-v8.10.0-linux-x64/
复制代码

该安装包是编译好的文件,解压之后,在bin文件夹中就已存在node和npm,无需重复编译。

3.创建软链接,使node和npm命令全局有效。通过创建软链接的方法,使得在任意目录下都可以直接使用node和npm命令:

ln -s /opt/node/bin/node /usr/local/bin/node
ln -s /opt/node/bin/npm /usr/local/bin/npm

复制代码

4、安装cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org 
复制代码

配置环境变量,全局命令

ln -s /opt/node/bin/cnpm /usr/local/bin/cnpm
复制代码

这时 输入 node -v 就会看到版本信息了

2、安装pm2

pm2 是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载。

我们在本地运行node项目,只是node serve.js 就可以跑起来了,但是如果关掉,项目就不能运行了,pm2解决了这一问题,使进程常驻。

安装pm2

npm install pm2@latest -g
复制代码

创建软链接,使pm2命令全局有效

ln -s /opt/node/bin/pm2 /usr/local/bin/pm2
复制代码

输入 pm2 -v 可以看到版本信息了

3、安装mongodb

1、下载mongodb

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.3.tgz
复制代码

2、解压下载的包

tar -zxvf mongodb-linux-x86_64-3.6.3.tgz
复制代码

3、重命名mongodb-linux-x86_64-3.6.3

mv mongodb-linux-x86_64-3.6.3 mongodb3.6.3
复制代码

4、在/usr/local下创建mongodb目录

mkdir -p mongodb
复制代码

5、将 mongodb3.6.3移动到 /usr/local/mongodb 目录中:

mv /mongodb3.6.3/ /usr/local/mongodb
复制代码

6、在 /usr/local/mongodb/mongodb3.6.3/ 目录中创建一个存放数据与日志的目录:

mkdir -p data/koa2-blog/db
mkdir -p data/koa2-blog/log
复制代码

7、在 /usr/local/mongodb/mongodb3.6.3/conf 目录中创建配置文件 mongodb.conf:

mkdir -p conf
vim mongodb.conf
复制代码

mongodb.conf

# 设置端口号(默认的端口号是 27017)
port = 27018

#远程连接要指定ip 不然无法连接。0.0.0.0不限制ip访问,并开启对应端口
bind_ip=0.0.0.0

# 设置数据文件的存放目录
dbpath = /usr/local/mongodb/mongodb3.6.3/data/koa2-blog/db

# 设置日志文件的存放目录及其日志文件名
logpath = /usr/local/mongodb/mongodb3.6.3/data/koa2-blog2/log/mongodb.log

# 设置每个数据库将被保存在一个单独的目录
directoryperdb = true

# 设置为以守护进程的方式运行,即在后台运行
fork = true

# 日志追加
logappend=true

# 访问权限
auth=false

复制代码

参数解释:

参数解释: 
--dbpath 数据库路径(数据文件)
--logpath 日志文件路径
--master 指定为主机器
--slave 指定为从机器
--source 指定主机器的IP地址
--pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。
--logappend 日志文件末尾添加,即使用追加的方式写日志
--journal 启用日志
--port 启用端口号
--fork 在后台运行
--only 指定只复制哪一个数据库
--slavedelay 指从复制检测的时间间隔
--auth 是否需要验证权限登录(用户名和密码)
--syncdelay 数据写入硬盘的时间(秒),0是不等待,直接写入
--notablescan 不允许表扫描
--maxConns 最大的并发连接数,默认2000  
--pidfilepath 指定进程文件,不指定则不产生进程文件
--bind_ip 绑定IP,绑定后只能绑定的IP访问服务
复制代码

8、自定义服务

在/lib/systemd/system/目录下新建mongodb.service文件,内容如下

[Unit]
     Description=mongodb
     After=network.target remote-fs.target nss-lookup.target
[Service]
     Type=forking
     ExecStart=/usr/local/mongodb/mongodb3.6.3/bin/mongod -f /usr/local/mongodb/mongodb3.6.3/conf/mongodb.conf
     ExecReload=/bin/kill -s HUP $MAINPID
     ExecStop=/usr/local/mongodb/mongodb3.6.3/bin/mongod --shutdown -f /usr/local/mongodb/mongodb3.6.3/conf/mongodb.conf
     PrivateTmp=true
[Install]
    WantedBy=multi-user.target

复制代码

9、设置权限

chmod 754 mongodb.service 
复制代码

10、启动关闭服务,设置开机启动

#启动服务 
systemctl start mongodb.service   
#关闭服务   
systemctl stop mongodb.service   
#开机启动   
systemctl enable mongodb.service 
# 查看状态
systemctl status mongodb.service
# 如果mongodb.service配置错误 在更改后记得重新加载文件
systemctl daemon-reload
复制代码

11、设置mongo,mongod命令为全局有效

ln -s /usr/local/mongodb/mongodb3.6.3/bin/mongo  /usr/local/bin/mongo
ln -s /usr/local/mongodb/mongodb3.6.3/bin/mongod  /usr/local/bin/mongod
复制代码

连接数据库成功

[root@VM_0_11_centos ~]# mongo --port=27018
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27018/
MongoDB server version: 3.6.3
Server has startup warnings: 
2018-03-27T13:14:24.748+0800 I STORAGE  [initandlisten] 
2018-03-27T13:14:24.748+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2018-03-27T13:14:24.748+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2018-03-27T13:14:27.801+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2018-03-27T13:14:27.801+0800 I CONTROL  [initandlisten] 
2018-03-27T13:14:27.801+0800 I CONTROL  [initandlisten] 
2018-03-27T13:14:27.801+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2018-03-27T13:14:27.801+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-03-27T13:14:27.801+0800 I CONTROL  [initandlisten] 
2018-03-27T13:14:27.801+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-03-27T13:14:27.801+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-03-27T13:14:27.801+0800 I CONTROL  [initandlisten]
>
复制代码

12、设置数据库访问权限

步骤一:进入admin表

 use admin
复制代码

步骤二:创建一个超级管理账户

db.createUser({user:"admin",pwd:"wz123",roles:[{role:"userAdminAnyDatabase", db: "admin"}]})
Successfully added user: {
	"user" : "admin",
	"roles" : [
		{
			"role" : "userAdminAnyDatabase",
			"db" : "admin"
		}
	]
}

复制代码

步骤三:开启权限验证 在/usr/local/mongodb/mongodb3.6.3/conf/mongodb.conf中设置

# 访问权限
auth=true
复制代码

重启mongodb服务后再连接数据库,show users 查看所有用户,可以看到出错了,需要验证管理员的权限。

[root@VM_0_11_centos ~]# mongo --port=27018
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27018/
MongoDB server version: 3.6.3
> use admin
switched to db admin
> show users
2018-03-27T14:10:38.323+0800 E QUERY    [thread1] Error: not authorized on admin to execute command { usersInfo: 1.0, $db: "admin" } :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.getUsers@src/mongo/shell/db.js:1686:1
shellHelper.show@src/mongo/shell/utils.js:799:9
shellHelper@src/mongo/shell/utils.js:706:15
@(shellhelp2):1:1
> 
复制代码

权限验证后,可以查看用户users了

> db.auth('admin','wz123')
1
> show users
{
	"_id" : "admin.admin",
	"user" : "admin",
	"db" : "admin",
	"roles" : [
		{
			"role" : "userAdminAnyDatabase",
			"db" : "admin"
		}
	]
}

复制代码

这里对admin 创建的 admin 用户,仅仅只有特权去管理用户和角色, 如果你试图执行其他任何操作,例如在test数据库中的foo集合中去读数据,mongodb将返回错误。

你创建用户的数据库(这里就是test数据库)是该用户认证数据库。尽管用户认证是这个数据库,用户依然可以有其他数据库的角色。即用户认证数据库不限制用户权限。

权限角色有以下几种:

内建的角色 
数据库用户角色:read、readWrite; 
数据库管理角色:dbAdmin、dbOwner、userAdmin; 
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 
备份恢复角色:backup、restore; 
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 
超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase) 
内部角色:__system 
角色说明: 
Read:允许用户读取指定数据库 
readWrite:允许用户读写指定数据库 
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile 
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限 
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限 
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 
root:只在admin数据库中可用。超级账号,超级权限
复制代码

步骤四:创建数据库,并给此数据库设置访问权限

给数据库koa2 设置读写的权限

[root@VM_0_11_centos ~]# mongo --port=27018
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27018/
MongoDB server version: 3.6.3
> use admin
switched to db admin
> db.auth('admin','wz123')
1
> use koa2
switched to db koa2
> db.createUser({user:'wz',pwd:'wz123',roles:[{role:'readWrite',db:'koa2'}]})
Successfully added user: {
	"user" : "wz",
	"roles" : [
		{
			"role" : "readWrite",
			"db" : "koa2"
		}
	]
}
> 
复制代码

步骤五

写测试数据,Robo 3T连接数据库,向koa2数据库中写入一个test 集合

db.test.insert({title:'测试',name:'大王',age:12})
复制代码

打开RoBo 3T连接数据库,可以看到集合collection有test

4、安装Nginx

yum install nginx
复制代码

修改/etc/nginx下的配置nginx.conf 删除所有写入

## 工作模式与连接数上限
events {
    ## 单个进程的最大连接数
    worker_connections 1024;
}

## 设置http 服务器
http {
    include /etc/nginx/conf.d/*.conf;
}

复制代码

在/etc/nginx/conf.d 下新建 koa2-blog-8081.conf

server{
    listen 80;
    server_name  118.25.6.XXX;
    ## 配置前端文件
    location / {
        root /home/koa2-blog/build/;
        index  index.html index.htm;
    }
    ## 配置后端接口
     location /api {
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header Host $http_host;
           proxy_set_header X-Nginx-Proxy true;
           proxy_set_header Connection "";
           proxy_set_header Cookie $http_cookie;
           proxy_pass http://127.0.0.1:8081;
         }
}

复制代码

之后重启Nginx

 systemctl restart nginx.service
复制代码

命令:

#启动nginx服务
systemctl start nginx.service
#停止nginx服务
systemctl stop nginx.service
#重启nginx服务
systemctl restart nginx.service
#重新读取nginx配置(这个最常用, 不用停止nginx服务就能使修改的配置生效)
systemctl reload nginx.service
复制代码

nginx.conf全解析

5、项目上传到服务器

后端传到/home/koa2-blog/目录下 前端react项目也build后,传到此目录下

--koa2-blog
    --build
    --server
    --node_modules
    --package.json
复制代码

pm2运行server.js

pm2常用命令

pm2 start server.js
复制代码

在浏览器中打开前端项目,就开看到网站可以访问了

参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值