一、登陆服务器html
mac下首先打开终端,而后输入sudo su - 回车进入根目录
而后输入:ssh -p 端口号 服务器用户名@ip (例如ssh -p 22 userkunyu@119.29.37.XX
)回车,到这会让你输入yes或者no来确认是否链接,输入yes回车
而后输入在服务器上的用户密码回车
到此进入的是你在服务器上的帐户的目录,即为链接成功
复制代码
先更新一下(第一次使用服务器先更新下)前端
yum update -y
复制代码
二、下载nodejsnode
从nodejs官网获取下载对应操做系统的链接react
wget https://nodejs.org/dist/v8.10.0/node-v8.10.0-linux-x64.tar.xz
复制代码
wget命令下载Node.js安装包。 下载完成后能够看到服务器目录下有了nodejs的安装包。linux
解压该安装包nginx
tar xvf node-v8.10.0-linux-x64.tar.xz
复制代码
在服务器目录能够看到解压后的文件mongodb
node默认安装在/root/node-v8.10.0-linux-x64/目录下, 将node安装到其余目录(如:/opt/node/)下,shell
拓展:数据库
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
复制代码
四、安装cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
复制代码
配置环境变量,全局命令
ln -s /opt/node/bin/cnpm /usr/local/bin/cnpm
复制代码
这时 输入 node -v 就会看到版本信息了
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 能够看到版本信息了
一、下载mongodb
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.3.tgz
复制代码
二、解压下载的包
tar -zxvf mongodb-linux-x86_64-3.6.3.tgz
复制代码
三、重命名mongodb-linux-x86_64-3.6.3
mv mongodb-linux-x86_64-3.6.3 mongodb3.6.3
复制代码
四、在/usr/local下建立mongodb目录
mkdir -p mongodb
复制代码
五、将 mongodb3.6.3移动到 /usr/local/mongodb 目录中:
mv /mongodb3.6.3/ /usr/local/mongodb
复制代码
六、在 /usr/local/mongodb/mongodb3.6.3/ 目录中建立一个存放数据与日志的目录:
mkdir -p data/koa2-blog/db
mkdir -p data/koa2-blog/log
复制代码
七、在 /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访问服务
复制代码
八、自定义服务
在/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
复制代码
九、设置权限
chmod 754 mongodb.service
复制代码
十、启动关闭服务,设置开机启动
#启动服务
systemctl start mongodb.service
#关闭服务
systemctl stop mongodb.service
#开机启动
systemctl enable mongodb.service
# 查看状态
systemctl status mongodb.service
# 若是mongodb.service配置错误 在更改后记得从新加载文件
systemctl daemon-reload
复制代码
十一、设置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]
>
复制代码
十二、设置数据库访问权限
步骤一:进入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
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
复制代码
五、项目上传到服务器
后端传到/home/koa2-blog/目录下 前端react项目也build后,传到此目录下
--koa2-blog
--build
--server
--node_modules
--package.json
复制代码
pm2运行server.js
pm2 start server.js
复制代码
在浏览器中打开前端项目,就开看到网站能够访问了