和前面Java程式自動安裝思路一樣,為什麼不自己寫個簡單的指令碼來組裝這一切呢。工具當然好,不過瞭解幕後仍然是必要的,永遠站在巨人的肩膀上和不要重複造車輪子這兩句話有時候會阻礙優秀的程式員成長。
我的C++網站基於CppCMS庫,採用CMake編譯,目標部署平台是Ubuntu12.04 server(AMD64bit)。首先,在工程目錄下,建立create_deploy.sh指令碼。
#!/bin/bashsource ./tool.shremoveFolder buildmkdir buildcd buildcmake ..makecd ..removeFolder deploymkdir deploycp ./build/bin/cppweb ./deploycp ./kmconfig.js ./deploycd ./deploymkdir libscd libscp /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 ./deploycp ./tool.sh ./deploy
注意,此時我的開發機器上已經事先編譯安裝了cppcms庫,mongodb client c++ driver 2.0和loki庫。
該指令碼的目的是建立deploy目錄,並把需要的庫放到libs子目錄下,並且運行CMake命令編譯出網站程式cppweb,然後複製到deploy目錄下。
同時,還有兩個事先準備好的指令檔,tool.sh同前文,提供基本通用功能。install.sh是將libs目錄下的庫安裝到目標機器上,並建立相應的連結。
install.sh指令碼的內容如下:
#!/bin/bashsource ./tool.shinstallDpkg libboost1.48-all-devinstallDpkg libboost-thread1.48-devinstallDpkg libboost-regex1.48-devinstallDpkg libboost-filesystem1.48-devinstallDpkg libboost_system1.48-dev#installDpkg libace-devinstallDpkg libcrypto++-devcp ./libs/* /usr/lib/createLink /usr/lib/libloki.so.0.1.7 /usr/lib/libloki.socreateLink /usr/lib/libcppcms.so.1.0.2 /usr/lib/libcppcms.so.1createLink /usr/lib/libcppcms.so.1 /usr/lib/libcppcms.socreateLink /usr/lib/libbooster.so.0.0.1 /usr/lib/libbooster.so.0createLink /usr/lib/libbooster.so.0 /usr/lib/libbooster.so
使用方法很簡單:
1.調用create_deploy.sh指令碼產生deploy目錄
2.複製deploy目錄到目標機器,運行install.sh指令碼
install.sh指令碼還可以繼續增強,將cppweb程式安裝成ubuntu service。這裡省略。