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

如何部署基于Wt(C++ Web Toolkit)开发的网页项目?

Wt(C++ Web Toolkit)项目Ubuntu环境分步部署指南

一、当前问题梳理

  • 在DigitalOcean的Ubuntu实例上搭建了LAMP环境,Apache可正常托管静态HTML/CSS/JS文件,但无法运行基于Wt开发的C++项目
  • 尝试通过apt安装官方文档提到的libwthttp-dev、libwtfcgi-dev连接器时,均报错:E: Unable to locate package libwtfcgi-dev
  • 官方文档对连接器的使用步骤描述模糊,尤其是FastCGI配置中fastcgi.conf的位置说明不明确,作为部署新手需要清晰的分步操作指导

二、分步解决方案

1. 从源码编译安装Wt及所需连接器

Ubuntu官方源中缺少完整的Wt连接器包,因此需要手动编译安装:

  • 安装编译依赖:
    sudo apt update && sudo apt install build-essential cmake libboost-all-dev libssl-dev libsqlite3-dev apache2-dev libfcgi-dev
    
  • 下载稳定版Wt源码(以4.10.0为例):
    wget https://github.com/emweb/wt/archive/refs/tags/4.10.0.tar.gz
    tar -xzf 4.10.0.tar.gz
    cd wt-4.10.0
    
  • 编译并启用HTTP、FastCGI连接器:
    mkdir build && cd build
    cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DWT_BUILD_HTTP=ON -DWT_BUILD_FCGI=ON ..
    make -j$(nproc)
    sudo make install
    
  • 更新系统动态链接库:
    sudo ldconfig
    

2. 选择部署方式:内置HTTP服务器或FastCGI(配合Apache)

方式一:使用Wt内置HTTP服务器(适合小型项目,操作简单)

  • 编译项目时链接libwthttp库
  • 运行编译后的可执行文件,指定端口和静态资源目录:
    ./your_wt_app --http-port 8080 --docroot /path/to/your/static/files
    
  • 配置systemd实现开机自启:
    1. 创建服务文件:
      sudo nano /etc/systemd/system/wt-app.service
      
    2. 写入以下内容(替换路径为你的实际路径):
      [Unit]
      Description=Wt C++ Web Application
      After=network.target
      
      [Service]
      ExecStart=/path/to/your_wt_app --http-port 8080 --docroot /path/to/your/static/files
      WorkingDirectory=/path/to/your/app/directory
      User=www-data
      Group=www-data
      Restart=always
      
      [Install]
      WantedBy=multi-user.target
      
    3. 启动并启用服务:
      sudo systemctl daemon-reload
      sudo systemctl start wt-app.service
      sudo systemctl enable wt-app.service
      
  • 如需使用80/443端口,可配置Apache反向代理:
    在Apache站点配置文件中添加:
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
    
    重启Apache生效:
    sudo systemctl restart apache2
    

方式二:通过FastCGI配合Apache部署

  • 编译项目时链接libwtfcgi库
  • 配置Apache FastCGI模块:
    1. 启用必要模块:
      sudo a2enmod fastcgi proxy proxy_fcgi
      
    2. 编辑fastcgi.conf(Ubuntu默认路径为/etc/apache2/mods-available/fastcgi.conf),添加应用配置:
      FastCgiExternalServer /var/www/html/wt-app -socket /tmp/wt-app.sock -pass-header Authorization
      
    3. 在Apache站点配置文件(如/etc/apache2/sites-available/000-default.conf)中添加路由规则:
      Alias /wt-app /var/www/html/wt-app
      <Directory /var/www/html>
          Options +ExecCGI
          Require all granted
      </Directory>
      
  • 运行FastCGI版本的Wt应用,指定socket路径:
    ./your_wt_fcgi_app --fcgi-socket /tmp/wt-app.sock --docroot /path/to/your/static/files
    
  • 同样可以通过systemd配置服务,确保进程持续运行

3. 部署验证与权限排查

  • 访问服务器IP或域名,检查Wt应用是否正常加载
  • 若出现权限错误,赋予www-data用户项目目录权限:
    sudo chown -R www-data:www-data /path/to/your/app/directory
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:50:51