C++程序在Ubuntu上的部署上线流程
sudo apt update && sudo apt upgrade -y更新系统;安装编译工具链(build-essential包含gcc/g++、make等)和常用工具(如git):sudo apt install -y build-essential git。sudo apt install -y libboost-all-dev libopencv-dev);若依赖库未在包管理器中,需手动下载源码编译安装(参考对应库的官方文档)。/etc/ssh/sshd_config中的PermitRootLogin no)、配置防火墙(sudo ufw allow ssh允许SSH连接,sudo ufw enable开启防火墙)、安装fail2ban防止暴力破解(sudo apt install -y fail2ban)。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),生成的可执行文件体积较大,但无需在目标服务器安装依赖。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)。/opt/your_app/your_program启动程序。若需后台运行,可使用nohup(nohup /opt/your_app/your_program > app.log 2>&1 &,输出重定向至app.log)。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查看服务状态。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)。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查看容器日志。htop/top监控CPU/内存占用,设置报警机制(如通过cron定时检查进程状态)。