You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache2服务器根目录配置问题:Node/React/Express应用部署异常

解决Apache2部署Node/React/Express应用的问题

嘿,作为刚接触服务器的新手,踩这个坑太正常了——你现在的核心问题是把Apache当成了能直接运行Node.js代码的服务器,但Apache本身是静态Web服务器,没法直接执行index.js,再加上几个关键步骤遗漏,才会出现目录列表的页面。我给你拆解一下需要补做的步骤:

1. 先确保你的Node/Express服务能独立运行

Apache只是个“中间人”,得先保证你的Node应用本身没问题:

  • 进入你的项目目录:cd /var/www/html/myapp/packages/hotel/src
  • 先安装依赖(如果还没装):npm install
  • 启动服务:node index.js
  • 打开服务器本地的浏览器(或者用curl http://localhost:3000)访问,确认服务能正常返回内容(如果你的Express监听的不是3000端口,就对应调整地址)。

2. 给Apache配置反向代理(核心步骤)

Apache没法直接跑Node代码,得把用户的请求转发给正在运行的Node服务。先启用Apache的代理模块:

sudo a2enmod proxy proxy_http
sudo systemctl restart apache2

然后修改你的/etc/apache2/sites-available/000-default.conf,把原来的DocumentRoot配置替换成下面的内容(注意替换成你自己的服务器IP/域名):

<VirtualHost *:80>
    ServerName your-server-ip-or-domain # 比如你的服务器公网IP
    # 指向React构建后的静态文件目录(后面会说怎么生成)
    DocumentRoot /var/www/html/myapp/packages/hotel/build

    # 把API请求转发给Node服务(如果你的Express处理/api开头的接口)
    ProxyPass /api http://localhost:3000/api
    ProxyPassReverse /api http://localhost:3000/api

    # 设置默认首页为index.html,禁止显示目录列表
    DirectoryIndex index.html
    Options -Indexes

    <Directory /var/www/html/myapp/packages/hotel/build>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

修改完后重启Apache:sudo systemctl restart apache2

3. 必须构建React应用

你现在直接用src目录的代码,浏览器根本识别不了React的JSX语法,必须先编译成静态文件:

  • 进入React项目的根目录(注意是/var/www/html/myapp/packages/hotel,不是src子目录)
  • 执行构建命令:npm run build
  • 这会生成一个build目录,里面就是编译好的静态HTML/CSS/JS文件,也就是刚才Apache配置里指向的目录。

4. 让Node服务持续运行

你直接用node index.js启动服务,终端一关服务就停了,得用进程管理工具来托管:

  • 安装pm2(最常用的Node进程管理器):sudo npm install -g pm2
  • 进入src目录启动服务:pm2 start index.js --name hotel-app
  • 设置开机自启,避免服务器重启后服务中断:
    pm2 startup
    # 执行命令行输出的那条sudo命令,然后保存进程列表
    pm2 save
    

5. 修复文件权限问题

确保Apache的运行用户(www-data)能访问你的项目文件:

sudo chown -R www-data:www-data /var/www/html/myapp
sudo chmod -R 755 /var/www/html/myapp

做完这些步骤后,再访问你的服务器IP/域名,应该就能正常加载你的React+Express应用了,不会再显示目录列表啦。

内容的提问来源于stack exchange,提问作者nt369

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:00:59