如何部署基于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实现开机自启:- 创建服务文件:
sudo nano /etc/systemd/system/wt-app.service - 写入以下内容(替换路径为你的实际路径):
[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 - 启动并启用服务:
sudo systemctl daemon-reload sudo systemctl start wt-app.service sudo systemctl enable wt-app.service
- 创建服务文件:
- 如需使用80/443端口,可配置Apache反向代理:
在Apache站点配置文件中添加:
重启Apache生效:ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/sudo systemctl restart apache2
方式二:通过FastCGI配合Apache部署
- 编译项目时链接
libwtfcgi库 - 配置Apache FastCGI模块:
- 启用必要模块:
sudo a2enmod fastcgi proxy proxy_fcgi - 编辑
fastcgi.conf(Ubuntu默认路径为/etc/apache2/mods-available/fastcgi.conf),添加应用配置:FastCgiExternalServer /var/www/html/wt-app -socket /tmp/wt-app.sock -pass-header Authorization - 在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
相关产品推荐
相关产品推荐

