和前面Java程序自动安装思路一样,为什么不自己写个简单的脚本来组装这一切呢。工具当然好,不过了解幕后仍然是必要的,永远站在巨人的肩膀上和不要重复造车轮子这两句话有时候会阻碍优秀的程序员成长。
我的C++网站基于CppCMS库,采用CMake编译,目标部署平台是Ubuntu12.04 server(AMD64bit)。首先,在工程目录下,创建create_deploy.sh脚本。
#!/bin/bash source ./tool.sh removeFolder build mkdir build cd build cmake .. make cd .. removeFolder deploy mkdir deploy cp ./build/bin/cppweb ./deploy cp ./kmconfig.js ./deploy cd ./deploy mkdir libs cd libs cp /usr/lib/libloki.so.0.1.7 ./ cp /usr/lib/libmongoclient.so ./ cp /usr/lib/libbooster.so.0.0.1 ./ cp /usr/lib/libcppcms.so.1.0.2 ./ cd ../../ cp ./install.sh ./deploy cp ./tool.sh ./deploy
该脚本的目的是创建deploy目录,并把需要的库放到libs子目录下,并且运行CMake命令编译出网站程序cppweb,然后复制到deploy目录下。
同时,还有两个事先准备好的脚本文件,tool.sh同前文,提供基本通用功能。install.sh是将libs目录下的库安装到目标机器上,并创建相应的链接。
install.sh脚本的内容如下:
#!/bin/bash source ./tool.sh installDpkg libboost1.48-all-dev installDpkg libboost-thread1.48-dev installDpkg libboost-regex1.48-dev installDpkg libboost-filesystem1.48-dev installDpkg libboost_system1.48-dev #installDpkg libace-dev installDpkg libcrypto++-dev cp ./libs/* /usr/lib/ createLink /usr/lib/libloki.so.0.1.7 /usr/lib/libloki.so createLink /usr/lib/libcppcms.so.1.0.2 /usr/lib/libcppcms.so.1 createLink /usr/lib/libcppcms.so.1 /usr/lib/libcppcms.so createLink /usr/lib/libbooster.so.0.0.1 /usr/lib/libbooster.so.0 createLink /usr/lib/libbooster.so.0 /usr/lib/libbooster.so
1.调用create_deploy.sh脚本生成deploy目录
2.复制deploy目录到目标机器,运行install.sh脚本
install.sh脚本还可以继续增强,将cppweb程序安装成ubuntu service。这里省略。