建議不熟悉 linux 命令的小夥伴同時開啟我的另一篇部落格linux 常用操作
伺服器購買&配置
- 開啟阿里雲,選擇購買雲伺服器 ECS,這裡可以選擇一鍵購買進行快速配置,作業系統選擇 CentOS 7.2 64 位,其他預設或根據實際需求來,若選擇自定義購買請自行搜尋;
- 購買成功設定賬號密碼後,就可以通過 ftp 工具(我用的是 FileZilla)或者 git 連線我們的伺服器了,這個時候我們也可以開啟阿里雲的控制檯/雲伺服器 ECS 檢視購買的伺服器;
- 開啟阿里雲的控制檯/雲伺服器 ECS/網路和安全/安全組,在安全組列表點選配置規則,點選快速建立規則,就可以暴露埠了。比如暴露 80 埠,選擇 HTTP(80),授權物件填
0.0.0.0/0
,其他預設就可以了。暴露其他埠你就在自定義埠選擇,比如暴露 7001 埠,你就在自定義埠選擇 TCP,輸入7001/7001
即可。 - 開啟node 效能平臺,點選建立新應用按照操作提示來就行,成功開啟後在專案配置(具體配置看下文))就可以監控資料了。
連線伺服器
-
git 連線
# ssh remote_username@remote_ip 然後輸入密碼即可 如果ssh不存在,執行以下命令即可 # yum install openssh-client 下載客戶端ssh
- ftp 工具連線(這裡以 FileZilla 為例),下載 filezilla 後,點選新建站點,輸入主機 ip,選擇 sftp 協議,選擇登入型別為正常,輸入賬號密碼即可
部署 node 環境
-
部署 node 環境
# ssh remote_username@remote_ip 連線伺服器 # wget https://nodejs.org/dist/v6.9.5/node-v6.9.5-linux-x64.tar.xz 下載node壓縮檔案 # tar xvf node-v6.9.5-linux-x64.tar.xz 解壓 # ln -s /root/node-v6.9.5-linux-x64/bin/node /usr/local/bin/node 建立軟連線 # ln -s /root/node-v6.9.5-linux-x64/bin/npm /usr/local/bin/npm 建立軟連線 # node -v 檢視node版本 # npm -v 檢視npm版本
-
其他
# yum install vim 下載vim
nginx 安裝&配置
-
nginx 安裝
# yum install epel-release 下載epel-release # yun install nginx 下載nginx # cd /etc/nginx # vim nginx.conf 用vim開啟nginx.conf
-
修改 nginx.conf
- 修改 user 為 root
- 修改 server 如下,這裡 admin 是指向管理後臺專案,app 是指向移動端專案,wx 是指向代理另一個 node 微信公眾號專案(執行在 7002 埠,但微信公眾號配置 http 只允許 80 埠,所以設定代理,我們的 elm 介面執行在 7001 不用代理)
server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /root/www/; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location /admin/ { # 為空即可,前端打包檔案放在/root/www/admin裡面就可訪問到,注意預設是index.html } location /app/ { } location /wx/ { proxy_pass http://127.0.0.1:7002/; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
-
啟動 nginx
nginx -t 測試nginx語法是否有誤 nginx 啟動nginx nginx -s reload 重啟nginx,修改nginx.conf後記得重啟
-
其他命令
ps -ef | grep nginx 顯示nginx程式 nginx -s stop 停止nginx nginx -v 檢視nginx版本
部署 mongodb
-
安裝 mongodb
# ssh remote_username@remote_ip 連線伺服器 # curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz 下載 # tar -zxvf mongodb-linux-x86_64-3.0.6.tgz 解壓 # mkdir data 建立資料庫資料夾 # touch mongodb.log 建立日誌檔案 # cd /usr/local/mongodb/bin # ./mongod -dbpath=/usr/local/mongodb/data -logpath=/usr/local/mongodb/mongodb.log -logappend -port=27017 -fork 注意fork是後臺啟動,避免又要再開視窗重新連線伺服器再能進行其他操作 # ./mongo 連線mongodb
-
配置隨 linux 啟動
在/etc/rc.local 新增如下即可:# rm /usr/local/mongodb/data/mongod.lock 停止可能在執行的mongo # /.../bin/mongod -dbpath /usr/local/mongodb/data -logpath /usr/local/mongodb/mongodb.log -logappend -fork -port 27017
-
設定許可權
# cd /usr/local/mongodb/bin # ./mongod -dbpath=/usr/local/mongodb/data -logpath=/usr/local/mongodb/mongodb.log -logappend -port=27017 -fork # ./mongo > use admin > db.createUser( > { > user: "root", > pwd: "123456", > roles: [ { role: "root", db: "admin" } ] > } > ) > db.shutdownServer(); # ./mongod -dbpath=/usr/local/mongodb/data -logpath=/usr/local/mongodb/mongodb.log -logappend -port=27017 -fork --auth # db.auth("root","123456")
-
專案中連線 mongodb(這裡以 koa 框架 egg 專案為例,其他 node 請自行查詢)
# cnpm i egg-mongoose -S // config/plugin.js exports.mongoose = { enable: true, package: `egg-mongoose`, } // config/config.default.js config.mongoose = { url: `mongodb://127.0.0.1/eggadmin`, options: { // 如果設定了密碼 // auth: { "authSource": "admin" }, // user: "root", // pass: "123456", } }
部署 node 專案
部署環境 阿里雲 CentOS 7.2 64 位
-
本地專案根目錄(刪除 node_modules,建議依賴在伺服器下載)
# tar -zcvf ../file_name.tgz . 打包 # scp ../file_name.tgz remote_username@remote_ip:/root/www/server 上傳到伺服器
-
伺服器
# ssh remote_username@remote_ip 連線伺服器 # cd /root/www # mkdir server 這裡建立server資料夾放node專案程式碼 # cd server # tar -zxvf file_name.tgz . 解壓 # cnpm install --production 安裝生產環境依賴
# cnpm i -g pm2 下載pm2
# pm2 start bin/www 守護程式啟動
# pm2 restart app_name|app_id 重啟
# pm2 stop app_name|app_id 停止
# pm2 list 檢視程式狀態
# pm2 stop all 停止所有應用
# pm2 start ./bin/www –watch 監聽更改自動重啟
- egg專案
# npm start 執行
# npm stop 停止
3. 阿里 node 效能平臺監控
1. koa 專案(express 專案類似)
# wget -O- https://raw.githubusercontent… | bash 安裝版本管理工具 tnvm
# source ~/.bashrc
# tnvm ls-remote alinode 檢視需要的版本
# tnvm install alinode-v3.11.4 安裝需要的版本
# tnvm use alinode-v3.11. 使用需要的版本
新建 config.json 檔案如下,從[node 效能平臺](https://node.console.aliyun.com/#!/owned)獲取對應的接入引數
{
"appid": "<YOUR APPID>",
"secret": "<YOUR SECRET>"
}
# cnpm install @alicloud/agenthub -g 安裝 agenthub
# agenthub start config.json 啟動agenthub
# agenthub list 檢視 agenthub 列表
# ENABLE_NODE_LOG=YES pm2 start bin/www 使用pm2管理的應用
2. egg 專案
# cnpm i nodeinstall -g
# nodeinstall –install-alinode ^3
# cnpm i egg-alinode –save
# npm start
// config/plugin.js
exports.alinode = {
enable: true,
package: `egg-alinode`,
};
// config/config.default.js
config.alinode = {
appid: `<YOUR_APPID>`,
secret: `<YOUR_SECRET>`,
};
## 部署前端專案(這裡以 vue 為例)
在專案根目錄`npm run build`,然後把 dist 資料夾裡的內容傳到伺服器,這裡我們把兩個專案分部傳到/root/www/app 和/root/www/admin,記得提前建立 app 和 admin 資料夾
## 專案實戰
[全棧專案-基於 koa 框架 egg 的服務端介面](https://github.com/majun00/egg-api) 求一個 star~
> 本人水平有限,歡迎大家交流指正。本文為作者原創,轉載請註明出處。