『壹』 請問一下我用php如何用inotify來實現監控文件系統的操作
實現不了
沒發現有這方面的資料
『貳』 linux運維平時工作主要負責哪些內容
1.6 Linux運維崗位及工作內容
互聯網Linux運維工程師是一個融合多學科(網路、系統、開發、資料庫、安全、存儲等)的綜合性技術崗位,甚至還需要溝通、為人處世、培訓、銷售、管理等非技術能力,這給運維工程師提供了一個廣闊的發展空間。
1.數據安全:不丟不泄露。
2.7*24小時不宕機
3.服務質量
4.運維效率和成本控制
1.6.1 Linux運維工程師崗位職責
一般從企業入門到中級Linux運維工程師的工作大致有:
□挑選IDC機房及帶寬、購買物理伺服器。
□購買雲服務及CDN服務相關。
□搭建部署壓力測試和正式的業務系統運行環境(例如:網站運行環境)。
□負責日常項目或業務代碼上線、故障排除、代碼回滾等。
□對企業數據進行備份及故障恢復、處理網站運行中的各種故障(例如:硬體故障、軟體故障、服務故障、數據損壞及丟失等)。
□對網站的運行狀態及故障進行監控、提前解決網站運行的潛在安全問題。
□開發自動化程序(shell、python)或平台提高工作效率。
□根據訪問量增加,提前規劃和升級網站集群架構,根據公司需求增加業務應用。
□程序發布流程和規范,制定運維工作制度和規范。
□配合開發人員部署及調試產品研發需要的測試環境、代碼發布等工作需求。
□公司如果較小可能還會兼職網管、網路工程師、資料庫管理員、安全工程師、技術支持等職責。
涉及到的Linux平台上的運維工具有:Linux系統,Linux基礎命令,Nginx,Apache,MySQL,PHP,Tomcat,Lvs,Keepalived,SSH,Ansible,Rsync,NFS,Inotify,Sersync,,OpenVPN,NTP,Kickstart/Cobbler,KVM,OpenStack,Docker,K8S,Mongodb,Redis,Memcached,Iptables,SVN,GIT,Jenkins,Shell/Python/Go語言等,除此之外還可能涉及到交換機、路由器、存儲、安全、開發等知識。
總的來說:Linux初中級運維工程師更多的是使用工具軟體的階段,在一線城市互聯網公司的薪資一般在8000-20000/月。老男孩教育畢業學生平均13-15K
職業發展方向:系統架構師、資料庫工程師、運維開發工程師、系統網路安全工程師、運維經理、運維總監
1.6.2Linux運維架構師崗位職責
運維架構師是運維工程師的高級階段,並沒有明確的崗位界限區分,運維架構師一般來說是除了對運維工程師應用的開源工具熟練掌握之外,更多的是用思想來運維了,即DevOps的落地,各種企業運行過程中的解決方案提出和執行,例如:根據公司的現狀可以設計各類運維解決方案的能力:
1、自動化代碼上線(SVN/GIT+Jenkins+MVN)解決方案;
2、雲計算部署架構及Docker+K8S及微服務架構方案;
3、服務自動化擴容方案(KVM/OpenStack/Docker+Ansible+Zabbix);
4、10萬並發的網站架構、秒殺系統的架構及解決發你個案;
5、多IDC機房互聯方案、全網數據備份解決方案、賬號統一認證方案;
6、資料庫、存儲及各重要服務節點的集群和高可用方案。
7、各網路服務的極端優化方案、服務解耦/拆分。
8、運維流程、制度、規范等的建設和推行。
9、溝通能力、培訓能力、項目管理、業務需求分析及落地執行力等。
這里僅舉幾個例子,實際工作中會有更多,運維架構師的工作,其實就是解決企業中的用戶訪問量不斷增大帶來的痛點,最終達到高效、優質的為客戶提供網站及業務服務。
總的來說:Linux運維架構師更多的是根據企業日益增長的訪問量需求,利用若干運維工具組合加上經驗思想,形成解決業務需求方案的階段,當然也不排除對運維工具進行二次開發以及可視化展示運維數據的階段(開發軟體平台),這個階段涉及的工具會非常多,幾乎市面好用的開源工具都在備選之列,在一線城市互聯網公司的薪資范圍15000-100000/月。
職業方向:高級資料庫工程師、運維開發工程師、運維經理、運維總監、技術總監
運維架構師:將多個工具組合,加上思想經驗,形成方案,用思想和經驗賺錢的階段。
技術的提升僅是量的積累,思想的提升才是質的飛躍!——老男孩
『叄』 nginx負載均衡時上傳的圖片怎麼處理
區域網內可以考慮 rsync + inotify-tools
inotify可以監控文件系統的各種變化,當文件有任何變動時,就觸發rsync同步,這樣剛好解決了同步數據的實時性問題。
區域網內多台伺服器時可以配置Nginx把上傳等寫操作固定到其中一台PHP-FPM伺服器,然後用inotify+rsync同步到其它機器.
比如上傳操作定向到伺服器192.168.1.10進行處理:
location ^~ /upload.php {
include fastcgi_params;
fastcgi_pass 192.168.1.10:9000;
fastcgi_param SCRIPT_FILENAME /srv/www$fastcgi_script_name;
}
在伺服器192.168.1.10上用inotify+rsync同步文件到其他伺服器. 除上傳外,刪除、更改、移動等寫操作也要定向到192.168.1.10這台伺服器進行處理。
『肆』 php網站運維主要做什麼
運維工程師幹些什麼
總結兩句話
1、 保障業務長期穩定運行(如網站伺服器、游戲伺服器等等)。
2、 保障數據安全可靠(如用戶名密碼、游戲數據、博客文章、交易數據等等)。
由這兩句話推演運維工程師要學些什麼
一、保障業務長期穩定運行
出一點點差錯,用戶就要投訴了。
1、業務跑在什麼上面?
網站伺服器一般是apache,nginx,tomcat等。但是真正跑通流程還需要Mysql資料庫來存儲用戶密碼及其它。很多程序都要php的解析,所以LNMP、LAMP(即nginx、apache、mysql、php)環境部署是必須掌握的技能。
2、業務出了問題怎麼及時知道?
這就需要監控軟體來郵件或簡訊來通知你,常用的有zabbix,nagios等。報警發郵件,也得一個郵件程序呀,sendmail或postfix。
3、在家裡收到報警,但伺服器是內網IP,怎麼也得解決問題吧?
在公司搭建openvpn或pptp或openswan,在家裡通過VPN撥入內網,24小時解決問題…唉,半夜爬起來解決問題也沒工資。
二、保障數據安全可靠
出一點點差錯,領導要找你喝茶了。
1、有時需要手動改資料庫內容?
所以要會基本的Mysql資料庫增刪查改命令。
2、萬一資料庫伺服器硬體壞了怎麼辦?
需要有個備庫以備不時之需,所以需要Mysql主從復制。
3、 資料庫要還原怎麼辦?
所以需要在crond中定期全備Mysql數據,以便還原使用。如果要還原到指定時間點,還要學會Mysql增量備份與恢復。
4、 如果是用戶上傳的圖片或文件伺服器壞了怎麼辦?
定時備份可能還不夠,需要使用rsync加inotify來實時備份。以便任一時刻主伺服器壞掉,也能保障所有圖片有備份可以用來恢復。
5、小心黑客,要增加伺服器安全性?
ssh輕易不能讓外人訪問,那麼就設置只允許公司的IP或跳板機IP訪問,這些都通過iptables來控制。
三、大性能
小公司總有一天會牛逼起來的,實在牛不起來咱也可以跳到大公司。
1、越來越多的用戶來訪問我們的網站,一台web伺服器抗不住了怎麼辦?
那就需要多台web伺服器來負擔,但多台伺服器之間怎麼進行負載均衡呢,這就需要用到nginx反向代理或LVS+keepalived或haproxy+heartbeat了。
2、用戶注冊發表的文章與評論太多,一台資料庫抗不住了怎麼辦?
資料庫壓力分為讀和寫,如果寫抗不住,需要進行分表分庫到多個伺服器上。如果是讀壓力不夠了,可以使用mysql-proxy讀寫分離,來分擔讀的壓力。更簡單方便的方法,把資料庫里的內容放到內存上,這就用上memcache或redis了。
3、N多用戶上傳下載文件,磁碟抗不住了怎麼辦?
把多塊磁碟做成raid,或者使用分布式存儲文件系統如MFS,GlusterFS來提高磁碟的讀寫能力。
4、網站上好多圖片,總有用戶反應網站載入太慢,怎麼辦?
這時可以把網站上的圖片通過squid或varnish緩存到網站前端,盡可能的增加訪問速度,當然,最好是購買商業的CDN加速。
5、運營商是個大難題,他們之間的帶寬好像很小,聯通IP訪問我電信網站怎麼就這么慢呢?
這時可以使用bind自建一個DNS伺服器,把網站的DNS記錄指向自建DNS伺服器上,配置好解析規則,以後聯通IP解析到聯通網站上,電信IP解析到電信網站上,體驗就會好很多啦。
四、自動化
終極目標:跑死機器,閑死人。
1、 公司新買100台伺服器,公司竟然就1個移動光碟機,這裝系統得到什麼時候?
使用kickstart或cobbler來網路遠程自動安裝系統吧。
2、 每次裝完機要優化很多內容,什麼文件描述符、埠、軟體安裝啊,手動操作不累死去?
趕緊學會shell,將解放非常多的工作量。
3、系統裝完後登陸要輸入密碼,這么多台啊?
使用expect吧,自動讀取提示來輸入密碼,並執行命令。
4、要批量把新代碼發布到線上伺服器,怎麼辦?
使用saltstack或puppet或ansible吧,絕對爽歪歪。
五、其他
1、搭整套測試環境需要5台伺服器,但公司窮的只有一台空閑伺服器?
學會xen或kvm或docker吧,虛擬出多台伺服器,就能解決資源問題了。特別是docker,強烈推薦,以後某個研發人員讓你部署一套新環境,分分鍾幫他解決。
2、研發人員的代碼控制,許可權控制,總要運維人員管呀?
svn或git,這個是肯定要有的。
結尾:
現在我們在回過頭來思考,運維工程師平時幹些啥呢?
1、 隨時解決報警故障。
2、 業務程序更新。
3、 編寫一些腳本,監控或完成其他可自動完成功能。
4、 運維架構完善,部署一些用起來更方便更可靠或性能更好的開源工具以及制定運維流程規范。
5、 打雜,如調交換機,裝系統,部署新環境等。
『伍』 如何在linux中使用inotify實現文件系統的監控(php介面)
<?php
define('DIRWATCHER_CHANGED',IN_MODIFY|IN_CLOSE_WRITE|IN_MOVE|IN_CREATE|IN_DELETE);
/**
*DirWatcher
*
*@authorCharlesTang<charlestangATfoxmailDOTcom>
*/
classDirWatcher{
private$_callbacks=array();
private$_directories=array();
private$_inotify=null;
publicfunction__construct(){
$this->_inotify=inotify_init();
}
publicfunctionaddDirectory($path,$mask=DIRWATCHER_CHANGED){
$key=md5($path);
if(!isset($this->_directories[$key])){
$wd=inotify_add_watch($this->_inotify,$path,$mask);
$this->_directories[$key]=array(
'wd'=>$wd,
'path'=>$path,
'mask'=>$mask,
);
}
}
publicfunctionremoveDirectory($path){
$key=md5($path);
if(isset($this->_directories[$key])){
$wd=$this->_directories[$key]['wd'];
if(inotify_rm_watch($this->_inotify,$wd)){
unset($this->_directories[$key]);
}
}
}
publicfunctionaddDirectories($directories){
foreach($directoriesas$dir){
if(!is_array($dir)){
$this->addDirectory($dir);
}else{
$this->addDirectory($dir['path'],$dir['mask']);
}
}
}
publicfunctionaddCallback($callback,$params=array(),$priority=9){
$key=md5(var_export($callback,true));
if(!isset($this->_callbacks[$key])){
$this->_callbacks[$key]=array(
'callable'=>$callback,
'params'=>$params,
'priority'=>$priority,
);
usort($this->_callbacks,create_function('$a,$b','return$a["priority"]>$b["priority"];'));
}
}
publicfunctionremoveCallback($callback){
$key=md5(var_export($callback,true));
if(isset($this->_callbacks[$key])){
unset($this->_callbacks[$key]);
}
}
publicfunctionaddCallbacks($callbacks){
foreach($callbacksas$callable){
if(is_callable($callable)){
$callable=array(
'callable'=>$callable,
'params'=>array(),
'priority'=>9,
);
}
$this->addCallback($callable['callable'],$callable['params'],$callable['priority']);
}
}
publicfunctionstartWatch(){
while(TRUE){//啟動一個常駐進程,監視目錄的變化,事件觸發回調函數
$event=inotify_read($this->_inotify);
if(defined('DIRWATCHER_DEBUG')&&DIRWATCHER_DEBUG){
error_log(vsprintf("[wd:%d][mask:%d][cookie:%s]%s",$event[0]));
}
foreach($this->_callbacksas$callable){
call_user_func_array($callable['callable'],array_merge($event,$callable['params']));
}
}
}
publicfunctionstopWatch(){
//沒有實現,可以引入pcntl,優雅退出,退出前記得fclose($this->_inotify)
}
}
『陸』 雲計算需要學習哪些課程
雲計算是基於互聯網的相關服務的增加、使用和交付模式,通常涉及通過互聯網來提供動態易擴展且經常是虛擬化的資源。雲是網路、互聯網的一種比喻說法。過去在圖中往往用雲來表示電信網,後來也用來表示互聯網和底層基礎設施的抽象。因此,雲計算甚至可以讓你體驗每秒10萬億次的運算能力,擁有這么強大的計算能力可以模擬核爆炸、預測氣候變化和市場發展趨勢。用戶通過電腦、筆記本、手機等方式接入數據中心,按自己的需求進行運算。
目前我們的雲計算的課程為由淺入深、循序漸進的完整課程體系,包括結合Linux的網路基礎實戰、Linux系統配置及服務深度解析、Shell腳本自動化運維項目開發、開源資料庫MySQL DBA架構及優化、主流Web 伺服器Nginx架構優化、大型網站高並發項目LVS實戰方案、高可用集群技術、分布式存儲技術Ceph、安全防禦技術、性能優化方案、Python自動化運維開發技術、私有雲平台技術KVM 、Openstack、容器技術Docker等。
雲計算學習課程大綱如下:
1. Linux雲計算網路管理實戰
2. Linux系統管理及服務配置實戰
3. Linux Shell自動化運維編程實戰
4. 開源資料庫SQL/NOSQL運維實戰
5. 大型網站高並發架構及自動化運維項目
6. 網站安全滲透測試及性能調優項目實戰
7. 公有雲運維技術項目實戰
8. 企業私有雲架構及運維實戰
9. Python自動化運維開發基礎
10. Python自動化運維開發項目實戰
『柒』 請問我在linux下要用inotify來監控文件變化,是不是要安裝php的擴展庫pecl
這個跟php沒關系,你要寫個shell腳本
『捌』 大家覺得哪個Linux系統最好用
CentOS吧,紅帽的免費版本,一般都是跑在伺服器端的,穩定些。
Ubuntu桌面端比較炫,但是桌面真心bug多,容易崩潰。
用Linux的最佳方式還是,虛擬機里裝個CentOS,然後用putty之類的軟體通過ssh登錄,在命令行里操作,這樣佔用資源又少,又能學到很多命令。
『玖』 PHPStorm同步多個伺服器
PHPStorm沒這個能力, 但你畢竟是個程序員
兩個方案:
PHPStorm同步到單台伺服器, 然後該伺服器用inotify + rsync 同步到其他伺服器.
phpstorm -> 中間伺服器 -> (目標伺服器1, 2, ,3, 4, 5)
PHPstorm設置FileWatch 然後觸發本地腳本自行上傳到多個伺服器. 比如用PHP寫個ftp上傳腳本, 參數是文件路徑.