公司開發部遇到一個難題,服務器環境的curl的功能參數無法支持ssl,那么很多功能將會無法實現。那么好吧,這個問題只好拋到運維這邊了,我也是個新手,下邊的見解純屬個人分析(如有問題,歡迎討論):
首先系統:Centos 6.5 x86_64,
服務器版本的默認安裝路徑:curl在/usr下,openssl在/usr下 (當然,版本都是挺低的,yum更新后,版本還是很低,而且理所當然的,yum安裝是無法帶參數的,那么很顯然,更新后curl還是無法支持openssl)
安裝所有常用的開發包yum -y install ntp make openssl openssl-devel pcre pcre-devel libpng libpng-devel libjpeg-6b libjpeg-devel-6b freetype freetype-devel gd gd-devel zlib zlib-devel gcc gcc-c++ libXpm libXpm-devel ncurses ncurses-devel libmcrypt libmcrypt-devel libxml2 libxml2-devel imake autoconf automake screen sysstat compat-libstdc++-33 curl curl-devel python
(這個是為了以防刪掉openssl或者curl的時候出現各種問題的時候,你還有合適的工具可以修復,不要小看以上的東西,如果你試過yum和rpm和wget,scp甚至是ssh都不能使用的時候,你就會發現,做好一個備份和安裝好必要的環境是多么的重要)
卸載舊版本
rpm -e --nodeps curl
yum install curl -y
添加ssl庫的快速讀取識別
vi /etc/ld.so.conf
在這里面將openssl生成的庫文件所在目錄加入,使用命令ldconfig刷新緩存
【
這里用find / -name openssl查看安裝目錄,然后找到庫文件目錄,這里是/usr/lib64/openssl/)
(這里如果不添加以上的ssl庫參數,那么你在configure會提示
SSL support: enabled (OpenSSL)
當然,我們是應該很開心的,但是,在make和make install的時候,你會發現扯淡的是
curl -V
curl 7.37.0 (x86_64-unknown-linux-gnu) libcurl/7.37.0 zlib/1.2.3 libidn/1.18
根本就沒有openssl的支持好不好!,這是一個很蛋疼的事情,為此我嘗試了多個版本,用正確的編譯方式,結果都是前邊支持,后邊不支持。當然,還是有偶然的機遇下,在多個版本的安裝和卸載后,測試機完美的運行了。當然,這也是我花了一個禮拜的時間堅持下的原因,要不是我偶然成功了,誰會花這么多的時間琢磨這一個問題呢。當然,我記錄了測試機的安裝步驟,但是。。在線上機根本就運行不了,同樣的系統,同樣的配置,同樣的軟件,同樣的操作,這也是我總結出,我的方法可能只是偶然找到ssl的庫文件了。
】
安裝新版本的curl
wget http://curl.haxx.se/download/curl-7.37.0.tar.gz (當然,這個路徑換一個版本號就可以下載其他版本,測試32位直接安裝成功,64位還需要添加以上的ssl庫快讀參數)
./configure --prefix=/usr --with-ssl=/usr (必須確認ssl的安裝路徑,而且必須添加這個參數,默認無)
make
make install
【
這些安裝的時候就會找到ssl的庫文件,那么就可以編譯成功的了
】
curl -V
滿足條件 libcurl/7.37.0 OpenSSL/1.0.1e同時識別,整個環境所使用的curl就具備了支持ssl的功能了
【還有要注意的是,如果不行,可以重復第二遍新版本的重新編譯,當然第三遍不行就不用了,可以試試看其他版本,我是7.36和7.37其中一個可以用的】