昨天晚上有個小哥發維信給我,問我怎麼部署一個node服務,有沒有相關教程,我有點震驚,就問他有哪些不懂,他說幾乎都不懂。我想他應該也是找過相關教程了,只是看不懂或者沒法理解。html
我讓他把他不懂的東西寫出了,我出一個視頻,從頭至尾講。他說都不懂,你會不會打死我,我說我能理解你,你不是一我的,是一個羣體的表明,既然你不懂,也會有部分人不懂,因此我決定從頭開始講講怎麼用node開發一個服務,在服務器上部署,並用域名解析。node
B站(點擊跳轉)nginx
node.js、koa二、koa-router、pm二、nginx、Linuxgit
寫一個node服務有不少種方式:express
建立一個項目node-koa-pm2:npm
mkdir node-koa-pm2 && cd node-koa-pm2 && npm init -y
複製代碼
安裝koa和koa-router:centos
npm install koa koa-router --save
複製代碼
至此,項目建立成功,在根目錄下建立app.js:api
const Koa = require('koa');
const app = new Koa();
const router = require('./api/test')
app.use(async (ctx, next) => {
const start = Date.now();
await next();
const ms = Date.now() - start;
console.log(`${ctx.method} ${ctx.url} - ${ms}ms`);
});
app.use(router.routes())
app.listen(3000);
複製代碼
在根目錄下建立api目錄,裏邊再建立test.js:瀏覽器
const Router = require('koa-router');
const router = new Router();
router
.get('/api/', (ctx, next) => {
ctx.body = 'Hello World!';
})
.get('/api/test', (ctx, next) => {
ctx.body = {
msg:'here is test',
query:ctx.query,
queryStr:ctx.querystring,
}
})
.post('/api/users', (ctx, next) => {
ctx.body = 'here is users';
})
.all('/api/users/:id', (ctx, next) => {
// ...
});
module.exports = router
複製代碼
當前的目錄結構以下圖:bash
根目錄下啓動服務:
node app.js
複製代碼
瀏覽器訪問:http://127.0.0.1:3000/api/test?aa=1 效果以下:
至此,第一步的node服務建立完成!購買:阿里雲、騰訊yun、百度雲、華爲雲 我的:500元/年(推薦雙十一pin團) 系統:centos 7
裝node環境:blog.csdn.net/u014726163/…
把代碼上傳到服務器:FTP、git、rz 安裝依賴:
npm i
複製代碼
嘗試啓動服務:
node app.js
複製代碼
curl服務器本地訪問:
curl http://127.0.0.1:3000/api/test?aa=1
複製代碼
若是成功則返回:
{"msg":"here is test","query":{"aa":"1"},"queryStr":"aa=1"}
複製代碼
npm install -g pm2
複製代碼
用pm2啓動node服務:
pm2 start app.js -i max -n node-koa-pm2
複製代碼
curl服務器本地訪問(pm2啓動後):
curl http://127.0.0.1:3000/api/test?aa=1
複製代碼
若是成功則返回(pm2啓動後):
{"msg":"here is test","query":{"aa":"1"},"queryStr":"aa=1"}
複製代碼
安裝方式:
源碼安裝
yum安裝:
複製代碼
yum install nginx
複製代碼
查看版本:
nginx -v
複製代碼
返回示例(錯誤):
nginx version: nginx/1.16.1
複製代碼
用我阿里雲的域名: node.lijicheng.cn
解析到小哥的服務器:182.61.31.56
配置截圖以下:
通常的nginx默認安裝的配置文件都是在:/etc/nginx/conf.d/
進入配置文件目錄:
cd /etc/nginx/conf.d/
複製代碼
建立配置文件:
touch node.lijicheng.cn.80.conf
複製代碼
寫入配置文件裏粘貼一下代碼:
server {
listen 80;
server_name node.lijicheng.cn;
root html;
index index.html index.htm;
location /api/ {
root /usr/share/nginx/html;
index index.html index.htm;
proxy_pass http://127.0.0.1:3000;
}
location / {
proxy_pass http://127.0.0.1:7001;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
複製代碼
檢查配置文件是否合格:
nginx -t
複製代碼
若是合格,會有以下輸出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
複製代碼
至此說明nginx配置沒有語法問題了,能夠考慮重啓了:
nginx -s reload
複製代碼
若是有以下報錯:
nginx: [error] invalid PID number "" in "/run/nginx.pid"
複製代碼
須要從新加載一下配置文件:
nginx -c /etc/nginx/nginx.conf
複製代碼
這個時候再重啓nginx:
nginx -s reload
複製代碼
理論上是成功了的,若是有錯誤,還得看具體什麼錯了,而後針對性解決
此時經過域名訪問:點擊這裏訪問:http://node.lijicheng.cn:3000/api/test/?t=1
理論上是會有返回,可是由於個人域名是阿里雲的,服務器是百度雲的,致使百度拒絕了請求,後面將會用百度雲的域名解析到服務器(待續)
讀到這裏,或許你已經懂了,或許你還有須要疑問,歡迎評論,也能夠添加我微信,有可能後面拉個羣