之前没有用宝塔面板安装过NodeJS程序,在网上寻找了一番资料后发现这方面的教程比较少,于是去宝塔论坛发帖,但是没有获得帮助。最后终于花了一下午和晚上的时间在网上寻找了一番资料后将需要实现的功能都实现了,在此记录一下安装教程。这里以当时折腾的BWmelonAPI程序为例。
准备
0、替换https证书(弃用,可在宝塔中的SSL直接配置)
将https证书放到certificate
文件夹中,然后将根目录的index.js文件中xxxxx
换成自己证书的文件名。如果是其他程序不需要配置https可以忽略这一步。
1、安装PM2管理器
在宝塔面板中的软件管理-运行环境中安装PM2管理器和MongoDB数据库(其他程序如果没有用到MongoDB可以不用安装)。
2、放行NodeJS服务端口
BWmelonAPI中默认的http端口为3000,https端口为444,所以需要在宝塔面板的安全-端口控制中将这两个端口放行(如果没有https只需放行一个端口):
需要注意的是,有些服务器还需要在防火墙中放行相应端口(例如阿里云),这时也要在服务器中放行3000和444端口才行。例:阿里云安全组如何放行端口?
安装
1、上传文件到服务器
将所有文件打包成压缩包,在宝塔面板文件管理中新建一个文件夹,这里以api.no0a.cn
为例,然后将这个压缩包上传到文件夹中并解压。
2、安装淘宝NPM镜像
为了更快的下载程序依赖文件,打开宝塔面板的SSH终端,输入下面命令安装淘宝NPM镜像:
npm install -g cnpm --registry=https://registry.npm.taobao.org
3、安装依赖
在宝塔面板的SSH终端进入第一步新建的文件夹,进入目录的命令为cd
:
在宝塔面板的SSH终端输入cnpm install
并按回车键安装依赖文件,由于使用了淘宝镜像,几秒就把所有依赖下载完成了,不然需要很长时间:
4、新建NodeJS程序
打开PM2管理器,点击文件夹图标按钮选择上一步的文件夹,输入NodeJS程序的启动文件,然后输入项目名称并点击添加按钮,这时下方列表就会出现刚才添加的NodeJS程序。
5、映射程序
点击映射按钮,然后在弹出的窗口中输入需要映射到的域名和端口号:
映射完成后就可以在面板的网站列表中看到一个多出来的站点,这时就可以用过域名+端口号访问程序了:
6、设置前台运行目录
如果程序有前台静态文件,可以设置程序的运行目录。点击设置按钮,在弹出的窗口左侧点击网站目录,将运行目录选择为public并保存。这时即可通过域名+端口号访问程序前台了:
域名反代
通过上面的安装,现在已经可以通过域名+端口使用安装的程序,但是域名+端口访问程序不太美观,可以使用域名反代方式直接通过域名访问程序。
点击配置文件按钮,将
listen 3000;
改为
listen 80;
然后在server_name 域名;
下面添加
location / {
proxy_pass http://127.0.0.1:3000;
}
这时即可通过域名直接访问程序。
配置https(弃用,可在宝塔中的SSL直接配置)
这一步是花了最长时间去折腾的,按上面的方法应该是将
listen 80;
改为
listen 443;
然后在server_name 域名;
下面添加
location / {
proxy_pass http://127.0.0.1:444;
}
但是这样做没有程序,最终发现面板里面会生成错误日志,看了日志才将问题解决。ε=(´ο`*)))唉。
下面说正确的配置方法,将配置文件里面现有的文本复制,然后在最下面粘贴一份,将
listen 80;
改为
listen 443 ssl;
然后在server_name 域名;
下面添加
location / {
proxy_pass https://127.0.0.1:444;
}
再添加
ssl_certificate /www/wwwroot/api.no0a.cn/certificate/xxxxxx.pem;
ssl_certificate_key /www/wwwroot/api.no0a.cn/certificate/xxxxx.key;
这两个文件是ssl证书文件,就是第0步中替换的证书文件,需要要先从证书提供商下载并将证书上传到文件夹中,同样将上面代码中的xxxxx替换成自己证书文件的文件名。
这时可以通过http和https访问程序。
强制https访问(弃用,可在宝塔中的SSL直接配置)
如果想让http访问强制转到https访问,可以在图中位置添加代码:
return 301 https://$host$request_uri;
结束
到这里折腾就结束了,实在写不下去了,眼睛睁快不开了,最后附上演示网站:https://api.no0a.cn/,晚安。
36 条评论
看的我热血沸腾啊https://www.ea55.com/
博主真是太厉害了!!!
请问大佬我要是想要域名下面在加个api访问如何配置呢
比如说我通过这个域名访问接口htts://aaa.com
现在我要通过成这样htts://aaa.com/api访问
可以配置node或者nginx路由
设置前台运行目录没有public,域名访问后直接显示的后台程序,那个目录咋搞的啊
那可以选择静态资源所在的目录,或者在node里面实现一个静态资源服务器
大佬救命,部署完,我访问一直在loading
感谢大神,等下就按照您的方法尝试。
非常感谢,成功使用node部署服务端api
ERROR:
nginx: [emerg] duplicate location "/" in /www/server/panel/vhost/nginx/proxy/exikuai.cn/a04df848e5433d5166f586f09116ce9b_exikuai.cn.conf:11
nginx: configuration file /www/server/nginx/conf/nginx.conf test failed
点击映射没反应,重新部署之后还是那样
我的要么点启动没反应要么,点击放射没反应
可以看一下报错日志
博主你好,你这里点映射没反应,可以加微信请教您一下吗?18616226230
联系qq1454490647
4、新建NodeJS程序
这一步执行不上,我在终端都能执行。
可以先看一下日志有没有报错信息,还有一种情况可能是服务器连接pm2下载节点没有安装完成,之前我是联系宝塔客服帮忙解决的
好了,已经没问题了,我是用ssh去node我的程序,运行它,发展它报错了。
666
谢谢大佬,完美解决。可以转载么~~
可以 不客气
感谢大神,已成功部署
第四步卡在那里了,点启动一直是获取服务状态。大佬 能帮忙下吗୧(๑•̀⌄•́๑)૭能加QQ吗
微信:yizhuan188,请教
加qq吧 1454490647 备注博客
博主pm2管理器获取不到端口号 一直为off 能否请教一下 微信18737061903
加qq1454490647吧,微信用得太累了
博主,第五步的时候就没成功,留个微信13160300173 请教下呢
已加
设置前台运目录后怎么访问的?? 我设置了访问不到 是怎么回事的大佬, 在线等 急急急
通过域名+端口号访问,确保端口已经放行
小编请问我可以加你个微信请教下你吗,我微信是13229559941,⌇●﹏●⌇我用nodejs+express框架搭建里一个博客,可是还是部署不成功,无从下手的感觉
加了
不知道用这个教程部署meanTorrent可以吗?
这个不清楚,没有用过你说的这个程序
很棒