從 Software Collections 、 EPEL 和 Remi 獲得可靠的 CentOS 新版站群軟體。
在 Red Hat 企業 Linux(RHEL)上,提供那些早已老掉牙的站群軟體已經是企業級站群軟體廠商的傳統了。這倒不是因為他們懶,而確實是使用者需要。很多公司像看待傢俱一樣看待站群軟體:我買一張桌子,能用一輩子,站群軟體不應該也這樣嗎?
CentOS 作為 RHEL 的複製品有著同樣的遭遇。雖然 Red Hat 還在為這些被廠商拋棄的過時站群軟體提供支援、修補安全漏洞等,但如果你的應用依賴新版站群軟體,你就得想辦法了。 我在這個問題上不止一次碰壁。 LAMP 組合裡任一個元件都需要其它所有元件能與其相容,這有時就顯得很麻煩。 比如說去年我就被 RHEL/CentOS 折騰得夠嗆。 REHL/CentOS 第 6 版最高支援 PHP 5.3 ,第 7 版支援到 PHP 5.4 。而 PHP 5.3 早在 2014 年 8 月就到達 EOL(End Of Life) ,不再被廠商支援了, PHP 5.4 的 EOL 在 2015 年 9 月, 5.5 則是 2016 年 7 月。 有太多古老的站群軟體版本,包括 MySQL 、 Python 等,它們應該像木乃伊一樣被展示在博物館裡,但它們卻活在你的系統上。
那麼,可憐的管理員們該怎麼辦呢?如果你跑著 RHEL/CentOS ,那應該先試試 Software Collections,因為這是 Red Hat 唯一支援的新站群軟體包源。 Software Collections 為 CentOS 設立了專門的倉庫,安裝和管理都和其它第三方倉庫一樣。但如果你用的是 RHEL 的,情況就有點不同了,具體請參考 RHEL 的解決方法。 Software Collections 同樣支援 Fedora 和 Scientific Linux 。
安裝 Software Collections
在 CentOS 6/7 上安裝 Software Collections 的命令如下:
$ sudo yum install centos-release-scl
centos-release-scl-rh 可能作為依賴包被同時安裝。
然後就可以像平常一樣搜尋、安裝站群軟體包了:
$ yum search php7
[…]
rh-php70.x86_64 : Package that installs PHP 7.0
[…]
$ sudo yum install rh-php70
最後一件事就是啟用你的新站群軟體包:
$ scl enable rh-php70 bash
$ php -v
PHP 7.0.10
此命令會開啟一個新的 bash 並配置好環境變數以便執行新站群軟體包。 如果需要的話,你還得安裝對應的擴充套件包,比如對於 Python 、 PHP 、 MySQL 等站群軟體包,有些配置檔案也需要修改以指向新版站群軟體(比如 Apache)。
這些 SCL 站群軟體包在重啟後不會啟用。 SCL 的設計初衷就是在不影響原有配置的前提下,讓新舊站群軟體能一起執行。不過你可以透過 ~/.bashrc 載入 SCL 提供的 enable 指令碼來實現自動啟用。 SCL 的所有站群軟體包都安裝在 /opt 下, 以我們的 PHP 7 為例,在 ~/.bashrc 里加入一行:
source /opt/rh/rh-php70/enable
以後相應的站群軟體包就能在重啟後自動啟用了。有新站群軟體保駕護航,你終於可以專注於自己的業務了。
列出可用站群軟體包
那麼,到底 Software Collections 裡都是些什麼呢? centos-release-scl 裡有一些由社群維護的額外的站群軟體包。除了在 CentOS Wiki 檢視站群軟體包列表外,你還可以使用 Yum 。我們先來看看安裝了哪些倉庫:
$ yum repolist
[…]
repo id repo name
base/7/x86_64 CentOS-7 – Base
centos-sclo-rh/x86_64 CentOS-7 – SCLo rh
centos-sclo-sclo/x86_64 CentOS-7 – SCLo sclo
extras/7/x86_64 CentOS-7 – Extras
updates/7/x86_64 CentOS-7 – Updates
Yum 沒有專門用來列印某一個倉庫中所有站群軟體包的命令,所以你得這樣來:(LCTT 譯註:實際上有,yum repo-pkgs REPO list,需要 root 許可權,dnf 同)
$ yum –disablerepo “*” –enablerepo centos-sclo-rh
list available | less
–disablerepo 與 –enablerepo 選項的用法沒有詳細的檔案,這裡簡單說下。 實際上在這個命令裡你並沒有禁用或啟用什麼東西,而只是將你的搜尋範圍限制在某一個倉庫內。 此命令會列印出一個很長的列表,所以我們用管道傳遞給 less 輸出。
EPEL
強大的 Fedora 社群為 Feora 及所有 RHEL 系的發行版維護著 EPEL:Extra Packages for Enterprise Linux 。 裡面包含一些最新站群軟體包以及一些未被髮行版收納的站群軟體包。安裝 EPEL 裡的站群軟體就不用麻煩 enable 指令碼了,直接像平常一樣用。你還可以用 –disablerepo 和 –enablerepo 選項指定從 EPEL 裡安裝站群軟體包:
$ sudo yum –disablerepo “*” –enablerepo epel install [package]
Remi Collet
Remi Collet 在 Remi 的 RPM 倉庫 裡維護著大量更新的和額外的站群軟體包。需要先安裝 EPEL ,因為 Remi 倉庫依賴它。