1.centosådebianåªä¸ªå¥½ï¼
2.Linux系统编程 每周一深入 (二)高级文件IO
3.关于linux学习路线的核源问题 请教前辈
4.Nginx源码交叉编译-保姆级移植ARM
centosådebianåªä¸ªå¥½ï¼
DebianVSCentOSåªä¸ªæ´å¥½
éè¿ä»¥ä¸æ个人认为:ä»å®å ¨ä¸è¯´CentOS,rhel,oracle-LinuxDebian
ä»æ§è½ä¸é说ä¹æ¯CentOS,rhel,oracle-LinuxDebian
å ¶æ¬¡ï¼éè¿è§å¯debainå æ ¸æºç åCentOSå æ ¸æºç 大å°ï¼æ们å¯ä»¥çå°Debianå æ ¸æMï¼èCentOSå æ ¸åè¾¾å°äºM为ä»ä¹å¢ï¼è¿æ¯æå åä¸ç¯æç« ä¸
åæè¿çï¼Debianæ¯èªç±å æ ¸ï¼éé¢å»é¤äºå¾å¤no-freeåºä»¶é©±å¨ï¼åè½ä»£ç ï¼èCentOS
åæ¯ç»§æ¿äºrhelçç¹ç¹ï¼å¾å°ä¸çå¾å¤ç¡¬ä»¶ååçæå©æ¯æï¼ä¸ç®¡æ¯freeè¿æ¯no-freeçå ¨é¨å å«å¨å æ ¸æºä»£ç ä¸ï¼èä¸å¨èæå(kvm)é¨ç½²ä¸ä¹æ¯å¤äºé¢å¯¼å°ä½ç,å ¶ä¸ä¹ä¸ä¹ä¸äºè¿æ¥å¾å被Debian,æè æ åå æ ¸é纳ç代ç ï¼è¿æ ·å°±å¯¼è´äº:
硬件æ¯æç¹å«æ¯èæåCentOS,rhel,oracle-LinuxDebian(freebsd)
è¿æï¼ä¸ä¸ªå°±æ¯éè¿ç¼è¯å æ ¸æ们åç°ï¼é»è®¤æ åµä¸ï¼CentOSå¼å¯çå æ ¸
é项é½æ¯é常ä¿å®çï¼èDebianåå¾æ¶é«¦ï¼æä»ä¹æ°ç©æå°±ä¸ï¼æ¯å¦Debianå¼å¯äºå ååé slubå æ ¸å°ºå¯¸ä¼åOsèCentOSè¿æ¯ä½¿ç¨ä¹ ç»èéªçslabåO2..........
é»è®¤å æ ¸é ç½®æ§è½æµè¯DebianCentOS,rhel,oracle-Linux
æåæ们æ¥è¯´è¯´ï¼ä»ä»¬åèªçåºç¨è½¯ä»¶æ¯ææ°éï¼ä»å®æ¹åå¸çå®è£ dvdï¼åªæä¸å¼ 3.4Gï¼ä¸å¯ä»¥çåºCentOSrhelæ¯ä¸é¨æ¥åæå¡å¨ï¼vpsæ¥ç¨çï¼å å«ç软件ç¸å¯¹debainå®è£ dvd(8å¼ dvd)æ¥è¯´æ¯å°åªåå°ãææ¾ç»å°±yuminstallnginxç»ææ失败äº
æ以为ææéãç»æçç没æï¼è¦èªå·±äºå¤å»å æºï¼æç¥éæå¾å¤ç¬¬ä¸æ¹ç软件æºå¯ä»¥ä½¿ç¨ï¼ä½æ¯åä»å®æ¹æ¯æä¸è¯´æ¯å¾å°äºï¼è¿ä¹è¡¨æäºCentOSéè¦ç¨éï¼è¿æ¯ä»¥æå¡å¨ä¸ºä¸»ï¼æ¡é¢å强å¯ä»¥å§ï¼èDebianå¢æ4ä¸å¤ç§è½¯ä»¶ï¼æ¶µçäºå¼åï¼æ¡é¢ï¼æå¡å¨è½¯ä»¶ï¼ççå ä¹ä½ 说è½ç¨å°çææ软件é½æï¼èä¸aptå 管çä¹æ¯yum强å¾å¤ï¼ä»¥æ¤ï¼æ个人å¤æï¼
å¼åæ¹ç¯å¢ï¼éç¨æ§DebianCentOS,rhel,oracle-Linux
好äºæ¥ä¸ªæ»ç»å§ï¼å¦æä¸æ¯çççç³»ç»å®å¶ä¼åç人ï¼æç建议æ¯ï¼
1ï¼å¦æä½ æ¯å¼åè ï¼åçççæ§è½è¿½æ±è æè æ¯vpsä¸çæå¡å¨è¯·ä½¿ç¨Debianï¼
2,å¦æä½ æ¯vpsä¾åºåï¼çµååå¡ï¼ä½¿ç¨äºå¾å¤åhp,ibmç大åçæå¡å¨ï¼èä¸è¦æ±å¾é«ç稳å®æ§ï¼å®å ¨æ§ï¼æå»ºè®®ä½ ä½¿ç¨rhel家æï¼æå°ç¨%å·¦å³çæ§è½æ失ï¼ä¸æ¯å¾å¤§çæç¨æ§æ失ï¼æ¢æ¥å®å ¨ç¨³å®è¿æ¯å¼å¾çï¼
centosdebianåªä¸ªå¯¹armæ¯æ好
CentOSåDebiané½æ¯æARMæ¶æï¼ä½å®ä»¬å¨å¯¹ARMçæ¯ææ¹é¢ææä¸åï¼å ·ä½åå³äºæ¨çéæ±ãä¸è¬èè¨ï¼Debianæ¯æ´æ©æ¯æARMæ¶æçåè¡çä¹ä¸ï¼å¹¶ä¸ç¤¾åºæ¯æä¹æ´å¥½ï¼å æ¤å¨ARM设å¤ä¸çå ¼å®¹æ§å¯è½æ´å¥½ãå¦ä¸æ¹é¢ï¼CentOSå¨ARMæ¶æä¸çæ¯æä¹è¶æ¥è¶å¥½ï¼ç¹å«æ¯å¨RaspberryPiç设å¤ä¸çæ¯ææ¹é¢è¡¨ç°ä¸éãå æ¤ï¼æ¨éè¦æ ¹æ®æ¨çå ·ä½éæ±æ¥éæ©CentOSæDebianã
debianæ¯è¾centosåªä¸ªå¿«debianå¿«
å®è¿å æ¬å¨å ¶å®æ¹åå¨åºä¹å¤çéGPL软件ã以éµå®å ¶æä¾å 费软件çååã
1ã主è¦è½¯ä»¶çæ¬
DebianStableWheezyå·²æ¥æè¿äºè½¯ä»¶çæ¬ã
Apache-2.2.
PHP-5.4.4
MySQL-5.5.
PostgreSQL-9.1.9
2ãå级
å°Debianä»ä¸ä¸ªç¨³å®çæ¬å级å°ä¸ä¸ç¨³å®çæ¬å¾å®¹æãæä½ä¹æ¯è¾ç®åã
3ã稳å®æ§
Debian被认为æ¯æ¯è®¸å¤å ¶ä»åè¡çæ´ç¨³å®çLinuxåè¡çã对äºä¼ä¸èè¨ãè¿æ¯ä¸ä¸ªä¸éçéæ©ãå 为该çæ¬ä¸çé误导è´çå¼éæ´å°ãå®è¿ä¸ºä¿®è¡¥å®å ¨æ¼æ´æä¾äºæ¶é´ãå æ¤è¿äºåè¡çé常æ¯å ¶ä»Linuxåè¡ççåè¡çæ´å®å ¨ã
4ãæç¨æ§
é常认为DebianLinuxåè¡çæ¯åå¦è æ´éåLinuxä¸å®¶ãå®ä»ä¸å¼å§å°±åå®æ¨å¯¹Linuxå¼åæä¸å®çäºè§£ãå®è£ ç¨åºä¸ºç¨æ·æä¾äºå¯¹å ¶é ç½®çæ´é«ç¨åº¦çæ§å¶åèªå®ä¹ã
以ä¸å°±æ¯DebianåCentOSçåºå«ã对äºéè¦å®å ¨æ§å¶çæç»éªçç¨æ·ãDebianå¯è½æ´å¥½ï¼å¯¹äºæ³è¦æ´ç¨³å®åå®å ¨çLinuxåè¡ççä¼ä¸ãCentOSå¯è½æ´å¥½ã
为ä»ä¹éæ©CentOSèä¸æ¯Debian?æ们è¿è¡çä¸äºå ¨çæ大çäºèç½çè¥è¿ï¼å æ¤æ们对å¯é æ§å稳å®æ§é常éè§ï¼æ¯æ们ç第ä¸è¦å¡ã为æ¤ï¼æ们åªä½¿ç¨Linuxæ¥æ¯æ顾客çç³»ç»ãä½æ¯ï¼æ们åºè¯¥ä½¿ç¨åªä¸ä¸ªLinuxçåè¡çï¼çæ¡æ¯ï¼CentOSã为ä»ä¹å¢ï¼\x0d\\x0d\ä½ä¸ºä¸ä¸ªåºå¤§çç³»ç»è¿è¥åï¼å¨å¾é¿çä¸æ®µæ¶é´éï¼æ们éè¦å¨å¤ç§å¤§åç³»ç»ä¸æ¾å°ä¸ä¸ªå¯é çï¼å¯é¢æµçç³»ç»ï¼æ们éè¦ä»ä¸çä¸æ强大ç软件ä¾åºååå¼æºé¡¹ç®ä¸è·å¾å¼ºæåçæ¯æã对äºé£äºæ常ç¨çç³»ç»ï¼æ们éè¦ææ¡£ï¼å·¥å ·åå ¨çæ§èµæºã\x0d\\x0d\æ£å å¦æ¤ï¼RedHat/CentOSç³»ååè¡çæ£æ¯æ们çéæ©ãä»ä»¬è½å¤æ»¡è¶³ä»¥ä¸ææéæ±ï¼èä¸é®é¢ç¸å¯¹è¾å°ãé¿æ稳å®ï¼è¿ä½¿å¾æ们è½å¤ä¸ºæåä¸ä¸çè¿è¡äºä¸åé ç½®ãæå¡ååºç¨çç³»ç»æä¾ä¸ç级çç»´æ¤ã\x0d\\x0d\RedHatâsEnterpriseLinux\x0d\(RHEL)æ¯é»éæ åçä¼ä¸åè¡çãå®æ¯äºå¹´å·¦å³æ´æ°ä¸æ¬¡ï¼å¨ç³»ç»ç稳å®æ§ï¼åç»æ§åå®å ¨æ§ä¸æçæ大çä¼å¿ãæ¯å½æ°ç主çæ¬åè¡åï¼æ¯å¦\x0d\5.x亦ææè¿ç6.xï¼ææçæ¬å代ç é½å°ä¿çä¸åï¼åªæå®å ¨é®é¢ææ¯ä¸»è¦çbugï¼ä¾å¦åé¨ï¼ç«¯å£ä¹ç±»çé®é¢ï¼ä¼éè¿åå¸æ°çåçæ¬æ¥ä¿®å¤ã\x0d\\x0d\CentOSæ¯RHELåè¡ç对åºçå¼æºçæ¬ï¼é常å¨RedHatçåå¸åå°±ä¼å¾å¿«åè¡ãæ们使ç¨CentOSçåå å¨äºRHELåè¡ççæ åæ¯ææå¡è´¹ç¨é常é«ï¼å¤§çº¦æ¯å°æå¡å¨ç¾å å·¦å³ï¼å¯¹äºæ们å¾å¤æ¥ææ°åå°çè³ä¸ç¾å°æå¡å¨çç¨æ·æ¥è¯´ï¼è¿æ¯å¿ é¡»è¦æ§å¶çææ¬ã\x0d\\x0d\RHEL/CentOSç³»ç»æ两个æ½å¨çé®é¢ã\x0d\\x0d\é¦å ï¼ä¸æ¦ç¡®å®äºä¸»çæ¬ï¼,é¤äºå®å ¨é®é¢å严éæ éä¼è¢«ä¿®å¤ä»¥å¤ï¼å ¶ä»å 容å°ä¸ä¼åä»»ä½æ¹åãè¿è½ç¶å¯¹ç¨³å®æ§æ\x0d\好å¤ï¼ä½æ¯å¯¹è®¸å¤æå¡ä¸å©ãæ¯å¦MySQLåPHPæå¡ï¼å®ä»¬å¨è¿äºå¹´çCentOS/RHEL主çæ¬åå¸å¨æä¸ä¼è¿è¡ç¹éçå¼åå大éçä¿®æ¹ãä¾\x0d\å¦ï¼MySQL5.0æ¯å½åRHEL/CentOS主çæ¬æé»è®¤ä½¿ç¨ççæ¬ï¼ä½æ¯å½åMySQLå·²ç»æ´æ°å°5.1å5.5çæ¬äºã\x0d\\x0d\幸è¿çæ¯ï¼è¿ä¸ªé®é¢è¢«Yum软件å 管çå¨è½»æå°è§£å³äºãå¦æ¤ä»¥æ¥ï¼é£äºä¸»è¦ç软件ï¼ä¾å¦å½åRHEL/CentOSä¸å®é çç»ä»¶ï¼å æ¬å æ ¸åææå·¥\x0d\å ·çä»ç¶æ¥èªåè¡çï¼ä½æ¯é£äºéå ç软件ï¼ä¾å¦Nginxï¼Apacheï¼PHPï¼JavaåMySQLççæ¥èªæ´æ°ç软件æºä¾å¦Fedoraï¼\x0d\æè ç´æ¥ä»å¼ååè·åæ´æ°ççæ¬ä¾å¦MySQLãå¨æ们è¿éï¼æ们æèªå·±ä¸ç¨çå®è£ éåæ¥å ¨èªå¨çå¤çææè¿äºäºæ ã\x0d\\x0d\å ¶æ¬¡ï¼CentOSçåè¡ä¼æ»åäºRedHatçåè¡ï¼å æ¬å ³é®çè¡¥ä¸åä¿®å¤ãè¿å¨RHEL6.xçåè¡å¨æä¸å°¤ä¸ºæ¾èãä½æ¯æ ¹æ®æ们çç»éªï¼è¿æ²¡ä»ä¹å¥½æ å¿çï¼å¯¹æ们æ¥è¯´æ°¸è¿ä¸ä¼æ为é®é¢ã\x0d\\x0d\å¾å¤äººè¯¢é®æ们为ä»ä¹ä¸ç¨åºäºDebiançç³»ç»ï¼ä¾å¦Debianæè Ubuntuæå¡å¨ãå¦æå¨å«æ éæ©çæ åµä¸ï¼æ们çç¡®ä¼æ¯æè¿ä¸ªå»ºè®®ï¼ä½æ¯æ ¹æ®æ们çç»éªæ¥çï¼è¿äºç³»ç»å¹¶ä¸å¦RHEL/CentOSæ¥ç稳å®åå¯é ã\x0d\\x0d\æ们认为ï¼è¿å¨æç§ç¨åº¦ä¸æ¯ç±äºä»ä»¬è¿å¿«çåå±åå个çæ¬ãç»åä¹é´è¾å°çæµè¯ä¸ä¸æçæ导è´çãç¶è尽管ä»ä»¬é常æµè¡ï¼ä½æ¯ä¸»è¦çæå¡åå项ç®é½\x0d\ä»ç¶é¦éRHEL/CentOSç³»ç»ï¼å 为è¿æ ·ä»ä»¬å°±å¯ä»¥ä¸ºä¼ä¸é¡¾å®¢æä¾æå¡ï¼ï¼å¯¹OracleåMySQLæ´æ¯å¦æ¤ï¼ãé¤æ¤ä¹å¤ï¼åºäºDebiançç³»ç»æ许å¤å æ ¸å稳å®æ§é®é¢ï¼å°¤å ¶æ¯å¨æ们çäºè®¡ç®æå¡ä¸ã\x0d\\x0d\对æ们èè¨ï¼å¯ä¸ä½¿ç¨Debian/Ubuntuçåå æ¯ï¼\x0d\\x0d\âå®ä»¬è½å¤ä¸ºä¸ä¸ªç³»ç»æä¾å¿ è¦çç¹æ®æå¡æ¶ï¼å°¤å ¶æ¯å½ä¸äºé©±å¨ç¨åºæè ä¸äºIOåç³»ç»éè¦ä¸ç§æ°çå æ ¸çæ¶åâãä¾å¦ï¼ext4æ件系ç»æå¨æè¿çå æ ¸ä¸æ¥å¿çæ¹åçï¼ç°å¨ï¼ææè¿ä¸åé½å å«å¨äºRHEL/CentOS6.xä¸ã\x0d\\x0d\å½ç¶ï¼å¤æ°Linuxå¼åè é½ä½¿ç¨çæ¯Ubuntuçæ¡é¢çï¼èä¸å¯ä»¥ç解çæ¯ï¼ä»ä»¬æ´å¾åå¨å¼åç产æ¶ä½¿ç¨ç¸åçç³»ç»ï¼å¹¶ä¸è¿è½ä½¿ç¨å¾å¤æ趣çå·¥å ·ãä½æ»ä½ä¸æ¥è¯´ï¼æ们ä¾ç¶è®¤ä¸ºRHEL/CentOSæ¯ä¸ä¸ªæ´ä¼è¶çé¨ç½²å¹³å°ï¼å¹¶ä¸å·²ç»æåå¤ä¸ªå®¢æ·æåå°è½¬å使ç¨CentOSä½ä¸ºç产ç¯å¢å¹¶ä¸æ²¡æä»»ä½é®é¢ï¼ä½è¿ä»ç¶æ¯è°å·¨çä»»å¡ã\x0d\\x0d\æ»çæ¥è¯´ï¼ä½ å°æ´ä¹äºçå°ä¸ä¸ªè¯å¥½ç®¡ççCentOSç³»ç»ãæ们ææåä¸ä¸å°æå¡å¨ä½¿ç¨CentOSå¹³å°ï¼èæ¯å¹´å¹³ååªæä¸å°æå¡å¨å´©æºãæ们ä¹å¾é¾æ³è±¡å®ç«å¦æ¤ç½è§ï¼æ以ï¼æä¸ä¸ªä¼ç§ãè¿ æ·ãå¯é çå¹³å°å§ï¼
CentOSDebianUbuntuåªä¸ªç³»ç»å¥½ï¼æç« ç®å½CentOSDebianCentOSä¸Debianåªä¸ªå¥½ï¼Ubuntuä¹°VPSæ¶æCentOSãDebianãUbuntuä¸ç§æä½ç³»ç»å¯ä»¥éæ©ï¼Linuxä¸åªç§ç³»ç»æ´å¥½æ¯å¾å¤æ°äººé½ä¼éå°çé®é¢ï¼å¨æ¤ï¼æ们åæä¸ä¸UbuntuãCentOSåDebianåèªçæ§è½å使ç¨ç»éªãåæå¡å¨çå¾å°ä¼ç¨Ubuntuï¼æ以æ们æååæè¿ä¸ªãå æ¥çç使ç¨çè¾é«çCentOSåDebianãCentOSå¾å¤åä¸æ§å ¬å¸æå¡å¨é½æ¯ä½¿ç¨CentOSç³»ç»ï¼CentOSç®çº¦ï¼å½ä»¤è¡ä¸ç人æ§ååå¾æ¯è¾å¥½ï¼ç¨³å®ï¼æç强大çè±æææ¡£ä¸å¼å社åºçæ¯æãç¸å¯¹debianæ¥è¯´ï¼CentOSç¥æ¾ä½ç§¯å¤§ä¸ç¹ï¼æ¯ä¸ä¸ªé常æççLinuxåè¡çãDebianDebianæ´éåäºä½ä¸ºæå¡å¨çæä½ç³»ç»ï¼å®æ¯Ubuntuè¦ç¨³å®å¾å¤ãDebianæ´ä¸ªç³»ç»åºç¡æ ¸å¿é常å°ï¼ä¸ä» 稳å®ï¼èä¸å ç¨ç¡¬ç空é´å°ï¼å ç¨å åå°ãMçVPSå³å¯ä»¥æµç è¿è¡Debianï¼èCentOSåä¼ç¥æ¾ååãä½æ¯ç±äºDebiançåå±è·¯çº¿ï¼ä½¿å®ç帮å©ææ¡£ç¸å¯¹äºCentOSç¥å°ï¼ææ¯èµæä¹å°ä¸äºãCentOSä¸Debianåªä¸ªå¥½ï¼å¨å½å æå¡å¨ä¸ï¼ä½¿ç¨CentOSçè¦å¤äºDebianï¼èå½å¤åDebianç¨å¤äºãéæ©Debianæ¯å 为å®æ¯æ大ç社åºåè¡çï¼æçä¸¥æ ¼çç»ç»æ¥ç»´æ¤ï¼æçæåä¸ä¸ä¸ªè¶ 级é»å®¢å¨è´¡ç®ï¼èä¸æçæ大ç软件ä»åºï¼ç°å¨å·²ç»è¾¾å°å¤ä¸ªï¼æç大éçææ¡£èµæºãèCentOSçæ´æ°æ¯è¾æ ¢ï¼è½¯ä»¶åºè½¯ä»¶çæ¬è¿äºéæ§ï¼è½è¯´ç¨³å®ä½æ¯æ æ³åæ¥åºVPSç硬件ç¹æ§ãè½ç¶ä¹æ社åºï¼ä½æ¯å®æ²¡æåºå®çç»ç»æ¥ç®¡çï¼æ²¡ææ¶å ¥æ¥æºãå¦å¤ï¼Debian
6æ¶åå°WEBæå¡å¨ç软件å é½æ´æ°å°äºæ¯è¾æ°ç稳å®çæ¬ï¼å¹¶ä¸åå©aptå½ä»¤ç´æ¥å®è£ é常快æ·ãéæ©CentOS大å¤æ¯å 为系ç»ç稳å®åå¯é æ§ï¼Debianåå±è¿å¿«ï¼å个çæ¬ãç»åä¹é´æµè¯è¾å°ç¨æ¾ä¸æçï¼ç³»ç»æ许å¤å æ ¸å稳å®æ§é®é¢ãDebianå¾æ¶é«¦ï¼æä»ä¹æ°ç©æå°±ä¸ï¼èCentOSå¼å¯çå æ ¸é项é½æ¯é常ä¿å®ãæ以ï¼ä»å®å ¨ã稳å®è§åº¦åºåï¼ä¸»è¦çæå¡åå项ç®é½ä»ç¶é¦éCentOSç³»ç»ãä¸é¢çä¸äºå ·ä½çæ¯è¾ï¼ä»å®å ¨ä¸è¯´CentOSDebianä»æ§è½ä¸é说CentOSDebian硬件æ¯æç¹å«æ¯èæåCentOSDebiané»è®¤å æ ¸é ç½®æ§è½æµè¯DebianCentOSåå¼ç¯å¢éç¨æ§DebianCentOSæåï¼å¦æä½ æ¯å¼åè åçççæ§è½è¿½æ±è æè æ¯VPSä¸çæå¡å¨å»ºè®®ç¨Debianï¼å¦ææ¯VPSä¾åºåãçµååå¡ç½ç«ï¼è¦æ±å¾é«ç稳å®æ§ãå®å ¨æ§ï¼å建议éç¨CentOSãå¦å¤ï¼å¯¹äºåç©è ï¼å¦æVPSé 置太ä½ï¼OPENVZå åå¨M以ä¸ï¼æè XENæ¶æå åå¨M以ä¸ï¼å»ºè®®éç¨Debianï¼å¦å建议éç¨CentOSï¼ä»¥è·åæ´å¤çå¨çº¿å¸®å©ä¸æ¯æï¼è®©èªå·±å ¥é¨æ´è½»æ¾ãUbuntuUbuntuè¿äºå¹´ç使ç¨çææå¢å ï¼å®ç¨æ·çé¢æ¼äº®ã管çç³»ç»å®åã软件æºæ¯æ强大ãææ¯ç¤¾åºä¸°å¯ï¼å¯¹ç¡¬ä»¶çå ¼å®¹æ§ä¹ä¸éãç¶èï¼æå¡å¨æ´éè¦ç并éè¿äºï¼æ以å³å®äºå®æ´éåäºæ¡é¢æä½ç³»ç»ï¼å¨èªå·±çµèä¸å®è£ æ许è¦æ¯æå¡å¨ä¸æ´éåä¸äºã对äºLinuxï¼ubuntuç³»ç»èµæºæ¶èä¸ä¸ç¨³å®åªè½è¢«æ¯å»æ鸡èãæå¡å¨éè¦çåªæ¯ä¸ä¸ªç®çº¦ã稳å®ãæç¨çç³»ç»èå·²ï¼Ubuntuæ¯è¾é¸¡èè¿æä¸ä¸ªåå å°±æ¯å¯¹NGINXçæ¯æ太弱ï¼èNginxæ§è½è¦è¿è¿é«äºApacheãæ以ï¼å¯¹äºæ°æï¼åºæ¬åºè¯¥éæ©CentOSç³»ç»èéDebianåUbuntuãå¨ç¡®å®éæ©CentOSåï¼æ们è¿éè¦ç¡®å®æ¯ç¨ä½ç³»ç»è¿æ¯ä½ç³»ç»ãå¨æ¤ï¼ç¬¨é¸ç建议æ¯ï¼å¦æä½ ç¨çVPSæ¯é常ççé ç½®ï¼é£ä½ ç¨ä½æ¯è¾åéï¼ä½å¦ææå¡å¨ä¸è¬ï¼è¿æ¯èèå®å®çç¨ä½å§ï¼
Linux系统编程 每周一深入 (二)高级文件IO
在Linux系统中,一切操作都可以抽象为文件读写。源码因此,剖析本系列文章的核源第二部分将深入探讨Linux中的文件IO。
常规的源码文件IO涉及的系统调用包括:open、read、剖析系统源码定制开发write、核源close,源码分别对应打开、剖析读取、核源写入和关闭文件。源码在执行读写操作时,剖析内核会维护一个指向当前文件偏移量的核源指针。为了灵活控制偏移量,源码系统调用lseek提供了定位文件位置的剖析能力。glibc提供的fopen、fread、fwrite、close和fseek(ftell)等函数,则是上述系统调用的封装,其中包含缓存机制以提高读写效率。
通常,上述函数足以应对大部分应用场景。今天,我们将重点介绍几个更高级的系统调用:pread、pwrite、readv、writev、preadv和pwritev。它们的功能可以用基本读写函数实现,但提供更便捷的特性,可能在某些场景下成为提高效率的利器。
以多线程下载程序为例,我们可以通过记录每个线程负责的文件部分位置和已写入字节数,实现数据合并。但这种方法可能因加锁和频繁的lseek操作而成为下载速度的瓶颈。为了避免这些问题,可以使用pread和pwrite系统调用,它们不会改变文件偏移量,从而简化程序逻辑。
在分散读和集中写的场景中,writev系统调用可以将分散数据集中在一次系统调用中发送。与之对应的readv系统调用则完成相反的操作,从文件中读取数据并填充到指定位置。nginx源码中就包含分散度和集中写的例子。
此外,Linux还提供了preadv和pwritev函数,支持多线程的bc火箭源码分散读和集中写。这些函数结合了pread、pwrite、readv和writev的功能,在特定应用场景下可以提高效率。
总结:Linux的文件IO功能丰富,除了基础操作外,还针对多线程和集中/分散读写提供了系列函数。掌握这些函数的用途和使用方法,将有助于解决特定应用场景下的效率问题。
关于linux学习路线的问题 请教前辈
很多同学接触Linux不多,对Linux平台的开发更是一无所知。而现在的趋势越来越表明,作为一 个优秀的软件开发人员,或计算机IT行业从业人员,掌握Linux是一种很重要的谋生资源与手段。下来我将会结合自己的几年的个人开发经验,及对 Linux,更是类UNIX系统,及开源软件文化,谈谈Linux的学习方法与学习中应该注意的一些事。
就如同刚才说的,很多同学以前可能连Linux是什么都不知道,对UNIX更是一无所知。所以我们从最基础的讲起,对于Linux及UNIX的历史我们不做多谈,直接进入入门的学习。
Linux入门是很简单的,问题是你是否有耐心,是否爱折腾,是否不排斥重装一类的大修。没折腾可以说是学不好Linux的,鸟哥说过,要真正了解Linux的分区机制,对LVM使用相当熟练,没有次以上的Linux装机经验是积累不起来的,所以一定不要怕折腾。
由于大家之前都使用Windows,所以我也尽可能照顾这些“菜鸟”。我的推荐,如果你第一次接触Linux,那么首先在虚拟机中尝试它。虚拟机我推荐Virtual Box,我并不主张使用VM,原因是VM是闭源的,并且是收费的,我不希望推动盗版。当然如果你的孕线源码Money足够多,可以尝试VM,但我要说的是即使是VM,不一定就一定好。付费的软件不一定好。首先,Virtual Box很小巧,Windows平台下安装包在MB左右,而VM动辄MB,虽然功能强大,但资源消耗也多,何况你的需求Virtual Box完全能够满足。所以,还是自己选。如何使用虚拟机,是你的事,这个我不教你,因为很简单,不会的话Google或Baidu都可以,英文好的可以直接看官方文档。
现在介绍Linux发行版的知识。正如你所见,Linux发行版并非Linux,Linux仅是指操作系统的内核,作为科班出生的你不要让我解释,我也没时间。我推荐的发行版如下:
UBUNTU适合纯菜鸟,追求稳定的官方支持,对系统稳定性要求较弱,喜欢最新应用,相对来说不太喜欢折腾的开发者。
Debian,相对UBUNTU难很多的发行版,突出特点是稳定与容易使用的包管理系统,缺点是企业支持不足,为社区开发驱动。
Arch,追逐时尚的开发者的首选,优点是包更新相当快,无缝升级,一次安装基本可以一直运作下去,没有如UBUNTU那样的版本概念,说的专业点叫滚动升级,保持你的系统一定是最新的。缺点显然易见,不稳定。同时安装配置相对Debian再麻烦点。
Gentoo,横向筹码源码相对Arch再难点,考验使用者的综合水平,从系统安装到微调,内核编译都亲历亲为,是高手及黑客显示自己技术手段,按需配置符合自己要求的系统的首选。
Slackware与Gentoo类似。
CentOS,社区维护的RedHat的复刻版本,完全使用RedHat的源码重新编译生成,与RedHat的兼容性在理论上来说是最好的。如果你专注于Linux服务器,如网络管理,架站,那么CentOS是你的选择。
LFS,终极黑客显摆工具,完全从源代码安装,编译系统。安装前你得到的只有一份文档,你要做的就是照文档你的说明,一步步,一条条命令,一个个软件包的去构建你的Linux,完全由你自己控制,想要什么就是什么。如果你做出了LFS,证明你的Linux功底已经相当不错,如果你能拿LFS文档活学活用,再将Linux从源代码开始移植到嵌入式系统,我敢说中国的企业你可以混的很好。
你得挑一个适合你的系统,然后在虚拟机安装它,开始使用它。如果你想快速学会Linux,我有一个建议就是忘记图形界面,不要想图形界面能不能提供你问题的答案,而是满世界的去找,去问,如何用命令行解决你的问题。在这个过程中,你最好能将Linux的命令掌握的不错,起码常用的命令得知道,同时建立了自己的知识库,里面是你积累的各项知识。
再下个阶段,你需要学习的顶尖dj源码是Linux平台的C/C++开发,同时还有Bash脚本编程,如果你对Java兴趣很深还有Java。同样,建议你抛弃掉图形界面的IDE,从VIM开始,为什么是VIM,而不是Emacs,我无意挑起编辑器大战,但我觉得VIM适合初学者,适合手比较笨,脑袋比较慢的开发者。Emacs的键位太多,太复杂,我很畏惧。然后是GCC,Make,Eclipse(Java,C++或者)。虽然将C++列在了Eclipse中,但我并不推荐用IDE开发C++,因为这不是Linux的文化,容易让你忽略一些你应该注意的问题。IDE让你变懒,懒得跟猪一样。如果你对程序调试,测试工作很感兴趣,GDB也得学的很好,如果不是GDB也是必修课。这是开发的第一步,注意我并没有提过一句Linux系统API的内容,这个阶段也不要关心这个。你要做的就是积累经验,在Linux平台的开发经验。我推荐的书如下:C语言程序设计,谭浩强的也可以。C语言,白皮书当然更好。C++推荐C++ Primer Plus,Java我不喜欢,就不推荐了。工具方面推荐VIM的官方手册,GCC中文文档,GDB中文文档,GNU开源软件开发指导(电子书),汇编语言程序设计(让你对库,链接,内嵌汇编,编译器优化选项有初步了解,不必深度)。
如果你这个阶段过不了就不必往下做了,这是底线,最基础的基础,否则离开,不要霍霍Linux开发。不专业的Linux开发者作出的程序是与Linux文化或UNIX文化相背的,程序是走不远的,不可能像Bash,VIM这些神品一样。所以做不好干脆离开。
接下来进入Linux系统编程,不二选择,APUE,UNIX环境高级编程,一遍一遍的看,看遍都嫌少,如果你可以在大学将这本书翻烂,里面的内容都实践过,有作品,你口头表达能力够强,你可以在面试时说服所有的考官。(可能有点夸张,但APUE绝对是圣经一般的读物,即使是Windows程序员也从其中汲取养分,Google创始人的案头书籍,扎尔伯克的床头读物。)
这本书看完后你会对Linux系统编程有相当的了解,知道Linux与Windows平台间开发的差异在哪?它们的优缺点在哪?我的总结如下:做Windows平台开发,很苦,微软的系统API总在扩容,想使用最新潮,最高效的功能,最适合当前流行系统的功能你必须时刻学习。Linux不是,Linux系统的核心API就来个,记忆力好完全可以背下来。而且经久不变,为什么不变,因为要同UNIX兼容,符合POSIX标准。所以Linux平台的开发大多是专注于底层的或服务器编程。这是其优点,当然图形是Linux的软肋,但我站在一个开发者的角度,我无所谓,因为命令行我也可以适应,如果有更好的图形界面我就当作恩赐吧。另外,Windows闭源,系统做了什么你更本不知道,永远被微软牵着鼻子跑,想想如果微软说Win8不支持QQ,那腾讯不得哭死。而Linux完全开源,你不喜欢,可以自己改,只要你技术够。另外,Windows虽然使用的人多,但使用场合单一,专注与桌面。而Linux在各个方面都有发展,尤其在云计算,服务器软件,嵌入式领域,企业级应用上有广大前景,而且兼容性一流,由于支持POSIX可以无缝的运行在UNIX系统之上,不管是苹果的Mac还是IBM的AS系列,都是完全支持的。另外,Linux的开发环境支持也绝对是一流的,不管是C/C++,Java,Bash,Python,PHP,Javascript,。。。。。。就连C#也支持。而微软除Visual Stdio套件以外,都不怎么友好,不是吗?
如果你看完APUE的感触有很多,希望验证你的某些想法或经验,推荐UNIX程序设计艺术,世界顶级黑客将同你分享他的看法。
现在是时候做分流了。 大体上我分为四个方向:网络,图形,嵌入式,设备驱动。
如果选择网络,再细分,我对其他的不是他熟悉,只说服务器软件编写及高性能的并发程序编写吧。相对来说这是网络编程中技术含量最高的,也是底层的。需要很多的经验,看很多的书,做很多的项目。
我的看法是以下面的顺序来看书:
APUE再深读 – 尤其是进程,线程,IPC,套接字
多核程序设计 - Pthread一定得吃透了,你很NB
UNIX网络编程 – 卷一,卷二
TCP/IP网络详解 – 卷一 再看上面两本书时就该看了
5.TCP/IP 网络详解 – 卷二 我觉得看到卷二就差不多了,当然卷三看了更好,努力,争取看了
6.Lighttpd源代码 - 这个服务器也很有名了
7.Nginx源代码 – 相较于Apache,Nginx的源码较少,如果能看个大致,很NB。看源代码主要是要学习里面的套接字编程及并发控制,想想都激动。如果你有这些本事,可以试着往暴雪投简历,为他们写服务器后台,想一想全球的魔兽都运行在你的服务器软件上。
Linux内核 TCP/IP协议栈 – 深入了解TCP/IP的实现
如果你还喜欢驱动程序设计,可以看看更底层的协议,如链路层的,写什么路由器,网卡,网络设备的驱动及嵌入式系统软件应该也不成问题了。
当然一般的网络公司,就算百度级别的也该毫不犹豫的雇用你。只是看后面这些书需要时间与经验,所以岁以前办到吧!跳槽到给你未来的地方!
图形方向,我觉得图形方向也是很有前途的,以下几个方面。
Opengl的工业及游戏开发,国外较成熟。
影视动画特效,如皮克斯,也是国外较成熟。
GPU计算技术,可以应用在浏览器网页渲染上,GPU计算资源利用上,由于开源的原因,有很多的文档程序可以参考。如果能进火狐开发,或google做浏览器开发,应该会很好 。
嵌入式方向:嵌入式方向没说的,Linux很重要。
掌握多个架构,不仅X的,ARM的,单片机什么的也必须得懂。硬件不懂我预见你会死在半路上,我也想走嵌入式方向,但我觉得就学校教授嵌入式的方法,我连学电子的那帮学生都竞争不过。奉劝大家,一定得懂硬件再去做,如果走到嵌入式应用开发,只能祝你好运,不要碰上像Nokia,Hp这样的公司,否则你会很惨的。
驱动程序设计:软件开发周期是很长的,硬件不同,很快。每个月诞生那么多的新硬件,如何让他们在Linux上工作起来,这是你的工作。由于Linux的兼容性很好,如果不是太低层的驱动,基本C语言就可以搞定,系统架构的影响不大,因为有系统支持,你可能做些许更改就可以在ARM上使用PC的硬件了,所以做硬件驱动开发不像嵌入式,对硬件知识的要求很高。可以从事的方向也很多,如家电啊,特别是如索尼,日立,希捷,富士康这样的厂子,很稀缺的。
LDD – Linux驱动程序设计与内核编程的基础读物
深入理解Linux内核 – 进阶的
Linux源代码 – 永无止境的
当然你还的看个方面的书,如网络啊什么的。
Nginx源码交叉编译-保姆级移植ARM
在Ubuntu..7 位系统上,使用arm-linux-gnueabihf-gcc作为交叉编译器,针对arm内核4.1.和恩智浦imx6ul嵌入式平台,进行了一次详细的Nginx源码的交叉编译移植过程。
准备工作包括了下载Nginx(1..0)、pcre(8.)、zlib(1.3.1)和openssl(1.1.1)的最新版本。在编译过程中,作者尝试了openssl的3.0.版本,但遇到编译问题,最终选择1.1.1版本进行编译。
在进入Nginx源码目录后,需要对部分源码进行修改,如移除退出函数并调整size大小。增加PCRE配置后,对Nginx进行配置,如果不需要ssl,应移除相关部分。配置完成后生成Makefile,但在此阶段并未进行编译。
Pcre源码的处理包括切换目录、配置和编译,编译成功且无误。对于openssl(选配),需要确保安装路径设置正确,配置后删除部分Makefile内容,进行编译,可能需要清理缓存以解决编译问题。
在Nginx部分的后续操作中,添加了必要的定义以避免malloc未引用错误,并调整了Makefile以排除之前手动编译的影响。最后进行编译,安装完成后,检查可执行文件类型和大小,进行优化以减少调试信息,使文件减小至2.8M。
测试阶段,将编译后的文件复制到arm设备,通过修改配置文件解决报错后,成功运行并访问测试页面,完成了基础的移植工作。