在同一服务器上部署express后端和react前端时遇到问题



我一直在尝试将我的第一个完整的MERN堆栈部署到实际的服务器,而不是Heroku和Netlify,

我买了一台带有ubuntu操作系统的服务器

  1. 我设置了服务器

2.已安装nodejs、pm2、Nginx

  1. 我使用ssh复制react构建文件夹中的所有文件:

    asset-manifest.json  favicon.ico  index.html  logo192.png  logo512.png  manifest.json  robots.txt  static```
    
  2. 我将Nginx设置为将文件夹作为端口80 中我的IP的默认请求

    server {
    listen 80;
    listen [::]:80;
    root /var/www/qdx/html;
    index index.html index.htm index.nginx-debian.html;
    server_name your_domain www.your_domain;
    location / {
    try_files $uri $uri/ =404;
    }
    }```
    

到目前为止还不错,我可以使用URL访问我的网站:http://185.97.117.14/

现在我想在同一台服务器上设置后端,这样它们就可以相互连接:

5.我把我所有的快递代码都复制到了服务器的根目录中

```
ubuntu@first:~/server$ ls
config  node_modules  package.json  package-lock.json  README.md  src
```

然后我使用pm2启动设置pm2

ubuntu@first:~/server$ pm2 show 0
Describing process with id 0 - name qdx-server
???????????????????????????????????????????????????????????????????
? status            ? online                                      ?
? name              ? qdx-server                                  ?
? namespace         ? default                                     ?
? version           ? 1.0.0                                       ?
? restarts          ? 0                                           ?
? uptime            ? 7h                                          ?
? script path       ? /home/ubuntu/server/src/index.js            ?
? script args       ? N/A                                         ?
? error log path    ? /home/ubuntu/.pm2/logs/qdx-server-error.log ?
? out log path      ? /home/ubuntu/.pm2/logs/qdx-server-out.log   ?
? pid path          ? /home/ubuntu/.pm2/pids/qdx-server-0.pid     ?
? interpreter       ? node                                        ?
? interpreter args  ? N/A                                         ?
? script id         ? 0                                           ?
? exec cwd          ? /home/ubuntu/server/src                     ?
? exec mode         ? fork_mode                                   ?
? node.js version   ? 16.1.0                                      ?
? node env          ? N/A                                         ?
? watch & reload    ? ?                                           ?
? unstable restarts ? 0                                           ?
? created at        ? 2021-05-10T11:55:04.319Z                    ?
???????????????????????????????????????????????????????????????????
Actions available
??????????????????????????
? km:heapdump            ?
? km:cpu:profiling:start ?
? km:cpu:profiling:stop  ?
? km:heap:sampling:start ?
? km:heap:sampling:stop  ?
??????????????????????????
Trigger via: pm2 trigger qdx-server <action_name>
Code metrics value
??????????????????????????????????????
? Heap Size              ? 29.31 MiB ?
? Heap Usage             ? 95.33 %   ?
? Used Heap Size         ? 27.94 MiB ?
? Active requests        ? 0         ?
? Active handles         ? 4         ?
? Event Loop Latency     ? 0.31 ms   ?
? Event Loop Latency p95 ? 1.07 ms   ?
??????????????????????????????????????
Divergent env variables from local env
?????????????????????????????????????????
? XDG_SESSION_ID ? 18                   ?
? SSH_CLIENT     ? 5.123.134.1 44336 22 ?
? OLDPWD         ? /home/ubuntu/server  ?
? SSH_TTY        ? /dev/pts/0           ?
? PWD            ? /home/ubuntu/server/ ?
? SSH_CONNECTION ? 5.123.134.1 44336 18 ?
?????????????????????????????????????????

6.尽管express应用程序应该在端口5000中运行我已经使用了防火墙并允许访问API,我似乎无法打开快递应用程序并将其连接,

ubuntu@first:/etc/nginx/sites-enabled$sudo-ufdsudo:无法首先解析主机sudo:ufd:找不到命令ubuntu@first:/etc/nginx/sites-enabled$sudo fwdsudo:无法首先解析主机sudo:fwd:找不到命令ubuntu@first:/etc/nginx/sites enabled$sudo ufw statussudo:无法首先解析主机状态:激活

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
80                         ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
5000                       ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)
5000 (v6)                  ALLOW       Anywhere (v6)

一周来,我一直在努力学习这方面的一切,只是为了学会部署,如有任何帮助,将不胜感激

服务器应用程序正在运行吗?您看到端口打开了吗(netstat -an |grep 5000(?Web服务器和服务器应用程序位于同一主机上,因此您应该能够通过localhost:5000 进行访问

我很喜欢Taleodor的答案,如果需要的话,它会让事情变得更加简单和便携。

如果你不想使用nginx,你可以做:

server {
listen 80;
listen [::]:80;
root /var/www/qdx/html;
index index.html index.htm;
server_name your_domain www.your_domain;
location / {
proxy_pass http://localhost:5000;
}
}

我推荐这个来源:webdock教程学习如何设置。

相关内容

  • 没有找到相关文章

最新更新