一、登陸服務器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
複製代碼
在瀏覽器中打開前端項目,就開看到網站能夠訪問了