问题
按照网络上的关于在宝塔上搭建express后端的方法,在我的环境下是有问题的。先简单叙述网上其他博文中的办法:先新建站点,然后上传express后端到站点目录下,然后再pm2管理器中启动,最后在站点的配置文件加上几行:
location / { proxy_pass http://127.0.0.1:3000; // 监听的本地端口 }
然而这样会导致一个情况:只有根目录下的网页可以访问到,于是会导致如图情况:
连页面请求的css、js等文件都请求不到。
解决方案
研究了宝塔端pm2后,终于发现了正确的搭建方式:先在pm2中启动express后端,再在pm2中添加映射。具体的方式如下:
1. 上传写好的express后端
上传到一个方便管理的目录下
2. 在pm2中启动express
填写好文件夹地址、启动文件和项目名,点击添加,pm2可以自动在正确的端口启动express。这里使用了express-generator,所以启动文件是bin/www
3. 添加映射
点击上图中需要添加映射的项目右边的“映射”
填入需要添加映射的站点即可,宝塔会自动创建一个网站,在左侧“网站”面板中可以管理。
这时候所有的资源都请求得到了。
原因猜测
原方法访问不到的原因必然是仅仅加上那几行,Nginx无法正确映射所有的express框架中访问的资源的url。而直接使用pm2的自动配置映射的功能,可以自动完成对Nginx的配置,比较省时。