昨天晚上有个小哥发维信给我,问我怎么部署一个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 效果以下:
购买:阿里云、腾讯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
理论上是会有返回,可是由于个人域名是阿里云的,服务器是百度云的,致使百度拒绝了请求,后面将会用百度云的域名解析到服务器(待续)
读到这里,或许你已经懂了,或许你还有须要疑问,欢迎评论,也能够添加我微信,有可能后面拉个群