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/)下,
擴充:
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
複製程式碼
5、專案上傳到伺服器
後端傳到/home/koa2-blog/目錄下 前端react專案也build後,傳到此目錄下
--koa2-blog
--build
--server
--node_modules
--package.json
複製程式碼
pm2執行server.js
pm2 start server.js
複製程式碼
在瀏覽器中開啟前端專案,就開看到網站可以訪問了