C++程序在Ubuntu上如何部署上线
导读:C++程序在Ubuntu上的部署上线流程 1. 准备目标服务器环境 系统更新与基础工具安装:登录Ubuntu服务器,执行sudo apt update && sudo apt upgrade -y更新系统;安装编译工具链(...
C++程序在Ubuntu上的部署上线流程
1. 准备目标服务器环境
- 系统更新与基础工具安装:登录Ubuntu服务器,执行
sudo apt update & & sudo apt upgrade -y
更新系统;安装编译工具链(build-essential
包含gcc/g++、make等)和常用工具(如git
):sudo apt install -y build-essential git
。 - 依赖库安装:根据项目需求安装系统级依赖。若项目使用第三方库(如Boost、OpenCV),可通过包管理器安装(如
sudo apt install -y libboost-all-dev libopencv-dev
);若依赖库未在包管理器中,需手动下载源码编译安装(参考对应库的官方文档)。 - 安全加固:禁用root远程登录(修改
/etc/ssh/sshd_config
中的PermitRootLogin no
)、配置防火墙(sudo ufw allow ssh
允许SSH连接,sudo ufw enable
开启防火墙)、安装fail2ban
防止暴力破解(sudo apt install -y fail2ban
)。
2. 编译C++程序
- 本地编译(开发机):进入项目目录,创建构建目录(
mkdir build & & cd build
),使用CMake生成Makefile(cmake ..
,需项目包含CMakeLists.txt
配置文件),编译项目(make -j$(nproc)
,-j$(nproc)
启用多核加速)。 - 远程编译(服务器):将项目代码上传至服务器(如使用
scp
:scp -r ./your_project user@server_ip:/path/to/deploy
),重复本地编译步骤(进入构建目录→CMake→Make)。 - 静态链接(可选):若需避免依赖系统库,编译时添加
-static
标志(如g++ main.cpp -o hello_static -static
),生成的可执行文件体积较大,但无需在目标服务器安装依赖。
3. 部署可执行文件
- 传输文件:使用
scp
或rsync
将编译好的可执行文件(如hello_static
或build/your_program
)上传至服务器目标目录(如/opt/your_app
)。 - 设置权限:通过
chmod
命令赋予可执行权限(chmod +x /opt/your_app/your_program
)。 - 动态链接库处理:若为动态链接(默认),需确保服务器安装了所有依赖库。可使用
ldd your_program
检查缺失的库(如缺失libboost_filesystem.so.1.75.0
,则执行sudo apt install -y libboost-filesystem1.75.0
)。
4. 配置服务运行
- 直接运行:通过终端执行
/opt/your_app/your_program
启动程序。若需后台运行,可使用nohup
(nohup /opt/your_app/your_program > app.log 2> & 1 &
,输出重定向至app.log
)。 - Systemd服务(推荐):创建systemd服务文件(如
sudo nano /etc/systemd/system/your_app.service
),内容如下:
保存后,执行[Unit] Description=Your C++ Application After=network.target [Service] Type=simple User=your_user # 替换为运行程序的用户(如ubuntu) WorkingDirectory=/opt/your_app ExecStart=/opt/your_app/your_program Restart=always # 崩溃后自动重启 RestartSec=5s [Install] WantedBy=multi-user.target
sudo systemctl daemon-reload
加载配置,sudo systemctl start your_app
启动服务,sudo systemctl enable your_app
设置开机自启。通过sudo systemctl status your_app
查看服务状态。
5. 验证部署
- 本地验证:在服务器上执行
curl http://localhost:your_port
(若为Web应用)或ps aux | grep your_program
(查看进程是否存在)。 - 远程验证:从本地机器使用
curl
或浏览器访问服务器IP及端口(如http://server_ip:8080
),确认服务响应正常。 - 日志检查:通过
journalctl -u your_app -f
实时查看systemd服务日志,或查看程序自身的日志文件(如tail -f /opt/your_app/app.log
)。
6. 可选优化:容器化部署(Docker)
- 创建Dockerfile:在项目根目录创建
Dockerfile
,内容如下:FROM ubuntu:22.04 RUN apt update & & apt install -y g++ cmake libboost-all-dev COPY . /app WORKDIR /app RUN g++ main.cpp -o your_program -std=c++17 -pthread CMD ["./your_program"]
- 构建与运行镜像:执行
docker build -t your_cpp_app .
构建镜像,docker run -d -p 8080:8080 --name your_app_container your_cpp_app
运行容器(-d
后台运行,-p
映射端口)。通过docker logs -f your_app_container
查看容器日志。
注意事项
- 依赖管理:优先使用CMake结合vcpkg/Conan管理依赖,确保跨平台可重复构建(参考搜索结果中关于vcpkg/Conan的使用方法)。
- 端口开放:若为Web应用,需在云服务商控制台开放对应端口(如8080),并配置安全组规则。
- 备份与监控:定期备份项目代码和数据,使用
htop
/top
监控CPU/内存占用,设置报警机制(如通过cron
定时检查进程状态)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: C++程序在Ubuntu上如何部署上线
本文地址: https://pptw.com/jishu/727065.html