從1998年開始,一直都是使用Solaris Unix的.
後來覺得太麻煩,在2012年轉用了Ubuntu Linux.
(本身一直對CentOS硬件的兼容性一直沒有信心, 但在用virtual host 上, 心想, 那就沒有所謂了)
最近用了一家新的virtual Server host公司, 他們建議我用CentOS 7.
在使用時, 感覺有點不可靠.
例如:
再這樣下去, 我很擔心, 是不是在送死?
雖然聽說, 他是最可靠的系統, 但我就有點不相信.
我是否應該及早放棄使用這個系統?
有操作經驗的人朋友, 請給我一點意見好嗎?
大部分用途都是用在自行編寫的軟件, 及提供一些網絡服務
我們計劃的基本 server清單:
Apache Server x 2
MySQL Server x 2
DNS Server x 2
Postfix Mail Gateway for antispam & antivirus x 1
LDAP Server x 2
Web Mail Server with Exchange Active Sync
Postfix Mail Server (imap, smtp)
我們不做功能上的論戰, 但就實務上來說, 大概是:
開發者偏向使用 Ubuntu
維運者偏向使用 CentOS
Ubuntu 追求最新的軟體套件, 跟開發者希望「利用現成軟體庫來節省開發時間」的目標相符, 因為越新的軟體庫, 功能越多, 越能節省開發時間, 所以選擇他是很自然的事情....但新的軟體庫, 被使用的時間不夠久, 範圍也不夠廣, 沒有辦法保證對所有的應用都相容, 穩定度也還沒足以驗證...
維運者追求系統穩定性, RHEL/CentOS 雖然使用較舊的套件, 但相對的舊套件也因為已經被使用很久, 大部分問題都已經被解決了, 各套件之間的相容性問題也較少, 維運起來相對穩定很多. (如果只是想要追求新套件, 其實 RHEL 體系也有 Fedora 可以嘗鮮)
如果您任職的是網站託管公司, 不是軟體開發商, 選擇維運穩定的 OS 是正確的. 不過回到您的問題:
1. SELinux 問題
這是很多使用 RHEL/CentOS 初學者的痛; 但話說回來, 這也正是維運追求穩定的要素之一: 系統自我保護能力.
原本開發跟維運人員, 具備的就是不同知識和訓練, SELinux 是 Infra 團隊要管理的東西, 你若是開發者, 在初期可以不需要碰, 後期要 Deploy 之前, 再經由資安團隊幫你設計 Policy 就好. 這樣可以確保: 你的軟體在系統內運行時, 降低被入侵的風險.
但是如果你沒有 Infra/Security 團隊幫你做這件事情, 要開發者自己來做, 由於沒有受過 SELinux Security 的訓練, 做起來當然一頭霧水, 不知如何是好? 開發者追求速度, 所以當你遇到不懂的機制時, 把它關掉似乎是最快的選擇?
一個好的軟體套件, 應該要有正確的 SELinux Policy 來搭配; REHL/CentOS 為何版本演進那麼慢? 就是因為他的每個套件, 都要撰寫非常嚴謹的 SELinux Policy.
回頭來看看 Ubuntu, 上面也有類似 SELinux 的功能叫做 AppArmor, 而且也是預設開啟的啊!! 有沒有想過: 為何你沒有遇過 AppArmor 攔你, 卻老是遇到 SELinux 攔你?
再想一下, 今天如果你是黑客進來做壞事, 你會希望遇到 AppArmor 還是 SELinux? Wiki: AppArmor
SELinux 是由美國國安局開發的, 因為他確實很難理解和使用, 所以 Linux kernel 團隊試圖自行開發出類似的 AppArmor, 但請看一下上面的 Wiki, 兩者防禦能力還是差很多....畢竟一個是軍事級思維, 一個還不到商業級思維....
開發者不想用, 關掉 SELinux, 這無可厚非, 反正開發環境他自己負責. 但你是網站託管公司, 關掉 SELinux 如果導致主機內的上千個客戶網站被植入惡意軟體, 是你的責任還是客戶責任?
我也從事網站託管業, 被我託管的是金控集團和數百家電商網站, 整個機房的 SELinux 永遠是開著的, 從來不敢關掉 SELinux 在網路上裸奔 (包含安裝軟體套件的過程, 我不會為了方便, 關掉它來裝軟體). 遇到有軟體正常功能被擋, 就想辦法寫 Policy 來解決; 否則, 如果有個萬一, 事情發生後被稽核出是我關掉 SELinux 的話, 大概會被客戶告到倒閉...
岔題問一下:
你們託管 WAF 防火牆的時候, 如果客戶抱怨, 上傳資料都會被 WAF 擋掉, 你們怎麼處理? 直接關掉 WAF 規則?...
再岔遠一點:
你們 OS 裡面的 Audit daemon 有啟動嗎?
有人定期去看上線機器 Audit 的 log 嗎?
(上面講的都是 Infra 維運的工作, 不是開發者的工作)
對了, 如果你有刷卡交易的話, 資安團隊可能會跑來問你:
沒開 SELinux 的話, 你打算自己怎麼做 PCI-DSS requirement 2.2 和 3.6.7, 而且通過法遵合規驗證?
(順便做一下 7.1.1~7.1.3 和 7.2.1~7.2.3....)
2. rm -r 不能用
這不正也是維運要追求的安控: 防止胖手指嗎?
多打一個 f 可以降低一些誤砍的風險, 因為 -r 是要砍整個目錄, 風險明顯高於只砍一些檔案, 多一層限制, 不正好提醒你先多想一下嗎?
正因為這是大多數維運者的心聲, 所以 RHEL/CentOS 把它放進預設值裡去, 省得大家裝完 OS 還要自己加...
就算你覺得麻煩, 不知道有 ~/.bashrc 可以改嗎?
想玩更大還有 /etc/profile.d/ 可以改啊.....
(當然我是不建議改啦)
您提到未來軟件安裝 Script 的擔憂, 其實如果是從 yum repo 來安裝套件的話, 不應該發生任何指令相容性問題, 因為這些問題都已經被反覆測試過. 換句話說, 使用 RHEL/CentOS 體系, 要養成習慣盡量從 yum 來安裝軟件; 我們很少會貿然使用非 yum 提供的軟體.
3. 沒提供 PHP 7
這是老問題, 大家叫很久了; 但也不是不能解決的, 而且也是從 yum repo 可以安裝的, 相容性沒有問題. 我提供給託管客戶的網站主機, 也全都提供到 PHP 7.0/1/2/3, 將來會慢慢關掉 PHP 5.x
還是一樣的問題: 開發者思維想求快, 對上面這樣的事情當然覺得不方便; 維運者求安穩, 寧可剛開始不方便慢慢做沒關係, 但將來上線後不要出事.
4. 有關 CentOS 7 發現很多都是老舊文件
CentOS 7.0 是 2014/7/7 發表的,
7.1 => 2015/3/31
7.2 => 2015/12/14
7.3 => 2016/12/12
7.4 => 2017/9/13
7.5 => 2018/5/10
7.6 => 2018/12/3
現在 2019 快過一半, RHEL 8.0 已經發表, CentOS 也快要發布; 從 2014~2019 大約 5 年時間, 符合我們對維運要求「至少5年穩定期不要大改版」的原則.
事實上, Ubuntu 也了解維運穩定的需求, 所以她有 LTS 版本, 也是大約維持 5 年更新的週期. 而且 14.x LTS 的生命週期是到 2022 年才結束 (8 年); 也就是說: 可能會有個系統, 從 2014 上了 14.x LTS 之後, 他就一直運轉到 2022 年, 還不需要升級或更換核心, 您是否也覺得: Ubuntu 14 LTS 不符合您的需求?
搜尋文章找不太到新的, 其實是因為維運工程師, 比較少有習慣去發表作法或想法, 通常開發者較常做這件事情, 因為發表文章對開發者未來轉職有很大的幫助; 但是維運工程師要求的是抗壓能力和臨場創意, 發表文章對他們的職涯幫助不大...
另外有個問題是:
學校大多只教開發, 沒有教深度維運, 所以從學界來的文章, 也偏重在開發面, 而不是維運面.
當然, 近幾年因為 DevOps 和 SRE 角色的興起, 維運工程師也必須具備相當程度的開發能力, 這點可能會轉變它們在發表作品的習慣.
CentOS 用到維運/託管行業有很長的歷史, 我從事維運工作 30 年, 從 Kernel 0.99 就開始拿來商轉應用, 試過大部分知名的 Linux distro, 我不反對有個人偏愛的 distro, 但以過去的經驗來看, CentOS 可以讓我比較不容易在半夜被警報叫起來, 裝軟體也比較不容易踩到雷...
在過去我是維運者偏向, 現在是開發者偏向, 心理有點不平衡.
多謝你寶貴的意見, 非常值得參考
我的立場比較偏向開發者,不過基本上是全部都要幹,只是不用直接面對網際網路而已。
我是ubuntu server的愛用者,但是最近也在開始想跳cent os了。
文件、套件舊這都不會是太大的問題,這年頭也還有docker這種東西。
但是光是SELinux就足夠讓我想跳了。
如果你有在運維,那CentOS當然要學,只是開發的話,那我建議你去學docker,然後後面要用啥隨你。
Ubunut
追求最新的軟體套件, 跟開發者...
難得被我挑到雷神大的 typo
雷神一出手,便知有沒有
Ubuntu追求最新的軟體套件, 跟開發者...
這其實也還好,真正追求最新的是arch。
ubuntu頂多只是追目前流行的套件。
Arch 真的太激進了, 我追不上....
Arch的滾動更新都像樂透
我也蠻佩服能日常用Arch的人...
每次pacman -Syu跟樂透開獎一樣。XD
1998? Solaris ? CentOS ?
要哈拉或者筆戰還可以
前輩想從我這個
連 CDE 都不知道是什麼的晚輩口中得到答案?
不太可能吧...
我只會Google
關於 CentOS / PHP 7 的議題
一篇是RHEL的官方回答
三個字,自己裝
另一篇給您笑一笑
有人去CentOS抱怨為什麼不包PHP 7為什麼要等RHEL結果被噹
你是打算用Linux做何用途?
完了,刪不了.....回了才發現還有前文
大部分用途都是用在自行編寫的軟件, 及提供一些網絡服務
我們計劃的基本 server清單:
Apache Server x 2
MySQL Server x 2
DNS Server x 2
Postfix Mail Gateway for antispam & antivirus x 1
LDAP Server x 2
Web Mail Server with Exchange Active Sync
Posfix Mail Server (imap, smtp)
看麳是著重於PHP跟MYSQL的用途,如果廠商或自己開發的PHP沒那麼依賴某個版本的PHP及MYSQL,我會選UBUNTU,我現在連電子郵件伺服器都是用UBUNTU架設,POSTFIX、DOVECOT、SPAMASSASSIN都是社群在維護,不至於發生相容性的問題,在我的感覺,比之前接手的CENTOS6,順暢許多,200人的公司的郵箱,運作了好一段時間,沒再遇到CENTOS的相關事故了
雖則說 CentOS Default 是安裝 PHP5,但也不自於要自己動手安裝 PHP7 吧,用 yum 也可以,公司和自己玩玩的 Server 也是安裝 CentOS 配 PHP7,有配最新的 MySQL 8 和 MariaDB,沒有你所說的問題。
至於 rm -r,我剛剛試過可以用呢
你說的問題
我覺得在所有 linux 分支上都會遇到
open source 的東西就是這樣
不同愛好者(ubuntu、centos) 當然對其系統的環境設定會有所差異
俗話說免錢的最貴,因為你要花好幾倍的精力去處理問題
你說的只是轉換的陣痛期而已
指令差異我覺得事小,可能只是套件版本不同而已
我覺得麻煩的是,有些東西路徑不一樣、名稱不一樣
所以大概體驗一下不同分支後,我覺得專精在一個發行版就好
關於 package 老舊,這我認同,但是更新其實很簡單
文件老舊,我倒覺得還好,我常用的功能幾乎都可以找到新的文件
最後 我自己是偏好用 centos
主要原因是 linux server 中 市場最大的是 redhat
centos 作為他的分支,在 server 市場的支援"大概"比較好
再來他的支援週期相當長,改版幅度不大
長期維護下來會比較輕鬆
比起版本眾多的 ubuntu 來說,找資料更簡易
自製一套你想要的LINUX吧, 你會更快想放棄
免費的最貴, 懂不懂
我想,你可能也誤會了 centos 或是redhat這些作業系統。
認真來說,它們都算是一種分支。一種人家重制出來方便使用的linux系統。
有大量的park包,安裝包。也有多元化的套裝包給你用。
使用的時間很久了。從以前大家碰碰撞撞的情況下。出現百餘種安裝包。到現在慢慢的整合包出現。
這些都是多年前輩研究出來的心血。
轉一個話題說說。其實我個人使用的並不是 centos 這一類的linux系統。
我用的是 freebsd 這個。相信有在使用linux架設的人,很多人都對他很感冒。
因為他沒有很統一的安裝包。操作指令也跟現在的linux有點出入。
可是,我還是愛用他。
早期我初學linux的時候,也是使用centos。因為簡單快速又方便。
後期有個前輩幫我架系統就是架 freebsd 一開始我也是對它很感冒。
但前輩跟我說,想學真正的架設linux主機。就先學會用它吧。
後來才知道他用freebsd的用意。沒有內置很多安裝包。想要的東西都是要先下載掛入後再安裝。
就我前輩而言,這個系統乾淨明白。不會有多餘的不使用的東西存在。
另外一方面也因為他多年來的架站經驗,其實也自已寫好了一個安裝包。
所以,要用什麼系統其實都無所謂。
重點在於人的功力如何。安全性是取絕在於人而不是系統。
很感謝你中肯的意見, 系統乾淨確實是非常重要, 我一直都有這樣的堅持. 但是同樣面對另一個問題, 沒有人可以接手我的系統維護工作, 因為整個系統都由自己編譯出來, 有什麼問題都要親自出手. 所以這幾年開始, 就放棄了這些想法, 尋求一些可靠的系統, 來代替自行編譯.
在用 CentOS 7時, 有一些走回頭路的感覺, 哈!
p.s. 感謝大師, 我經常有看你的文章
永遠都沒有所謂可靠的作業系統。
只有可靠的人及人性。
這點一定要切記。
曾經有人問過我為何不用nas。什麼東西都是方便。視窗動一動就可以一切都安裝好。
其實,你的問題點已經有點偏離。作業系統就是一個作業系統。它只是一個介面式的東西。如果你今天並未掛載任何套件的話。
linux系統它就是跟dos的東西無益。搞不好還比一個工程用的計算機還不如。
請不要忘以前的dos它也算是一個作業系統。
所以我覺得,你找錯方向了。你想要用什麼作業系統都沒差。
重點是後期的安裝方式及安裝包。
如果你是為了後人著想,我還是會建議你用CentOS。
原因並非是他好用及不好用。而是他的網路教學資源比較多。
但如果是為了系統穩定及效能著想。你一定得要用自已的安裝包處理。
別人的安裝包你永遠都會存在懷疑。
至於後續的改版。你永遠也不會知道未來的情況會如何改變。
明白你的意思,謝謝
我自己很喜歡centos,一開始也覺得怎麼所有的套件都那麼老舊
要裝新的還要去各軟體官網上下載然後有一大堆步驟要裝
還常常裝不上去?
但是後來知道了有一些套件庫可以提供新版安裝
就覺得很方便了,用乾淨的系統搭配自己想要的套件
甚至也有發現有些公司有centos維持老套件也不維護更新的
這都算是初學centos的疑惑和不熟吧
很多開發者程式很厲害 但是系統維運部分真的就是不很熟
尤其後面還發現nginx可以自由搭配各版本php
簡直方便到讓我驚豔
CentOS 有SCL , https://wiki.centos.org/zh-tw/AdditionalResources/Repositories/SCL
https://www.softwarecollections.org/en/
SCL 有很多比較新的軟體, RedHat ES, CentOS , Oracle Linux, 都能使用.
只是你沒來這裡問,然後到處亂找亂看,網路上菜鳥一堆又愛寫blog,所以資訊是多,但不見得有用.
來這裡問雷神,門神,還有浩瀚星空等,多交流.
看了你問的問題,都是一些小事啊,rm 那個也簡單啦, alias就好啦,不然還可以用 yes 搭配.
可以看我以前寫的一系列UNIX指令, https://ithelp.ithome.com.tw/articles/10158015
yes | rm , 這樣即使rm 有用alias來做互動詢問(-i) ,也一律回答 yes, 就一路砍下去了,
說穿了,這不過是一些小技巧而已,玩得好,什麼問題都沒有.玩不好,什麼都是問題.
至於哪個好用,這沒絕對的啊.但是我個人比較喜歡CentOS 勝過 Ubuntu.原因就不多說了.
平時我工作機,就以CentOS, Oracle Linux 為主, 這也是個人使用上的習慣.
日常工作機與一些Server 使用同樣系統.給你做參考.
另外 Solaris 平時我也有在用啦. 切換著用, UNIX指令嘛, man 可以產生文件,看熟一點就好.
年輕用到老,不用怕損失的,基本上就是一路進化.
https://dev.mysql.com/downloads/mysql/
MySQL 有提供 Yum Repository , 裝了以後,可以很多版本,隨需要選擇安裝.
這篇好多前輩的寶喔,趕緊收藏><
一天之內就遇到這麼多高手, 真的很感動
SCL 裡面就有多種版本的PHP了,這個安裝很方便的.
沒有要吐槽的意思
我想版主應該不熟悉shell script或linux的演進史及歷史吧
現今linux多是使用bash shell
早期歐系linux是 tcsh
Solaris是 sh
我覺得tcsh最好用
sh最難用 很多簡化指令做不到
CentOS Fedora RedHat
預設會關閉使用 -f 的功能
看一下你的 .bashrc
就會看到
但我不覺得是改程式
我覺得每一套linux都一樣耶
我不覺得哪裡不一樣
反倒批評一下我自己使用ubuntu的感覺
對 套件多又新
但是有很多不穩定的因素
下載不穩定
程式運作不穩定
CentOS文件多 好找答案
需要的東西幾乎都有 repository支援
反而是Solaris要裝新一點的都要編譯
編譯少的套件還要自己慢慢找
CentOS的使用者確實如樓上某一家所述
重視的是穩定性
不穩定的套件會被公幹
然後消失在CentOS RHEL ORACLE LINUX的世界
只允許不穩定的套件在 Fedora
Fedora穩定之後才允許轉入
CentOS可以找RedHat的文件很齊全
剛開始學建議直接關閉SELinux
好好管好你的防火牆
確定只有你能進入管理介面
我是認為不用開沒關係
話說三大廠牌的雲端(aws...)也都沒開SELinux
放心地關閉吧
但我強調
但我強調
但我強調
(因為很重要所以說三次)
想認真研究安全
SELinux真的很好玩
這可以唯一通過各國安全檢核
世界第一沒有第二的安全認證阿
(如果我沒記錯或還有其他家通過)
以版主的長年的功力及所列的需求
都是穩定的套件
用哪一家Linux其實也沒關係
CentOS保證絕對穩定的套件
https://wiki.centos.org/zh-tw/AdditionalResources/Repositories
PHP的套件
REMI
https://rpms.remirepo.net/
最後補充:
PHP 7 不適合用Apache
原因不補充了
saiue 大大
你好,我目前正打算把PHP升級到7
但我看到你後面補充的PHP 7 不適合用Apache
可否把原因提示一下,讓我用關鍵字搜尋
謝謝 saiue 寶貴的意見, 現在應該有信心了許多了.
的確不來這裡, 不知道.bashrc可以關閉使用 -f 的功能, 笨笨的在編譯軟件時修改config script 內容.
我也想知道 PHP 7 為何不適合用Apache
兩位大大好,我不想引戰,所以小小聲的說,純粹我自己的觀點,
PHP 7做了大量的效能加速(OPCache),可以稍微理解一下OPCache,
會理解為何說PHP 7,執行速度可以跟C一樣快。
我認為不適合的原因是Apache的Worker交換做的很並不好,較長時間運作的程式(PHP),很容易造成壅塞或鎖死,導致系統記憶體滿載或進程鎖死,寫這一則回覆,才發現有新的event模式,我沒有試過,PHP 7 後我只好逼自己改用nginx,模式比較像是透通交換,減少web services的負擔,不會同時兩種都增加記憶需求。
題外話:不考慮效能下,我還是最愛 prefork 模式,系統很好除錯,但是,已經回不去了。
放心,我也不覺得是引戰。對有趣的觀點,探討一下絕對是好事。
你的觀點很有研究價值,我會從你提出的方向,深入探討一下。因為我也有點覺得,用Apache+Php7後,感覺糸統資源耗用有點不正常,但有說不出什麼問題。聽你這樣說,看來我也要從這個方向認真看看。