<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 第?23?章?服務器 **目錄** [](ch23.html#id3095653) [LAMP](ch23s02.html) [虛擬主機](ch23s02.html#id3095701) [Lighttpd](ch23s03.html) [fastcgi 配置](ch23s03.html#id3096095) [proxy](ch23s03.html#id3096211) [CGI](ch23s03.html#server-cgi) [路徑綁定](ch23s03.html#id3096318) [虛擬主機](ch23s03.html#id3096354) [PHP&MySQL](ch23s04.html) [PureFTPD](ch23s05.html) ## LAMP `LAMP`是一個縮寫,它包括:Linux 操作系統,Apache 網絡服務器,MySQL 數據庫,Perl、PHP 或者 Python 編程語言。 毫不夸張的說,`LAMP` 是開源世界的“皇家海軍”[[42](ch23s02.html#ftn.id3095666)],正是憑借 LAMP 的力量,開源應用得以在服務器市場稱雄 web 服務器(Apache) 是 LAMP 的核心,幾乎所有遠程訪問都要通過 web 服務器進行。除了 Apache ,web 服務器還有一些其它的開源實現,如:Lighttpd、Tomcat、Zope 等 Perl、PHP、Python 是服務器端腳本語言,web 服務器以擴展的形式支持這些語言作為后端處理器,以獲得強大的可編程能力 數據庫服務器(MySQL)提供數據存儲、檢索支持。除了 MySQL ,還有 PostgreSQL 等開源實現 理論上可以直接通過網絡訪問數據庫服務器,不過出于安全需要,多數 LAMP 應用中,數據庫服務器只能由 web 服務器本地訪問。 也就是說,訪問 web 服務器,產生了數據處理請求,web 服務器把數據請求發送到數據庫服務器,然后將數據庫服務器返回的處理結果發送給訪問者 數據庫服務器接受和返回數據處理請求,要通過 SQL 查詢語言。web 服務器本身不支持 SQL,而服務器端腳本語言可以內嵌 SQL 語句,web 服務器通過腳本語言處理訪問者對數據庫服務器的請求 ### 虛擬主機 一臺機器上可能有多個網絡接口:每一塊網卡會分配一個 IP地址;類似 `127.0.0.1` 這樣的回環地址則指向本地機器 網絡接口就像港口,有很多泊位,稱為端口。可以使用不同的協議連接(如 http、ftp、ssh 等) 服務器工作時,會監聽某一地址的固定端口,稱為“綁定”。如果該端口中傳來請求,則進行響應 很多服務器可以針對不同的網絡接口設置不同的響應規則,例如:從內網訪問接口 `192.168.1.2` ,使用 `/home/user` 作為根目錄;從公網訪問接口 `211.148.131.7` 使用 `/var/WWW` 作為根目錄 這就是虛擬主機 * * * > [[42](ch23s02.html#id3095666)] 或許 Emacs 工具鏈可以算是“太平洋艦隊” ## Lighttpd `Lighttpd`是一個新興的、輕量級的 web 服務器,它開始越來越多的應用在一些重要場合,如:YouTobe、Sourceforge、豆瓣…… Lighttpd 以安全、快速和內存消耗低著稱,還專門為大型分布式連接環境做了優化,支持 FastCGI, CGI, Auth, 輸出壓縮(output compress), URL重寫, Alias 等重要功能。 Lighttpd 已經進入大多數發行版的軟件倉庫,安裝方式見[表?16.1 “包管理系統”](ch16s03.html#pkg-manage "表?16.1.?包管理系統") 安裝完成后,用啟動腳本啟動:`/etc/init.d/lighttpd start`,見[“手動控制服務”一節](ch15s04.html#init.d "手動控制服務") `/etc/lighttpd/lighttpd.conf`為 Lighttpd 服務器的配置文件[[43](ch23s03.html#ftn.id3095828)]: ``` ## 網站根目錄 映射在機器上的物理路徑 server.document-root = "/home/lighttpd/html/" ## 如果網站目錄中出現以下文件名,不用指定文件名便可直接訪問 index-file.names = ( "index.php", "index.html", "index.htm", "default.htm" ) ## Lighttpd 進程的歸屬用戶 server.username = "nobody" ## Lighttpd 進程的歸屬群組 server.groupname = "nobody" ## 綁定到端口 默認為 80 #server.port = 81 ## 綁定到地址 默認為 所有 #server.bind = "127.0.0.1" ## 訪問日志 路徑 accesslog.filename = "/var/log/lighttpd/access.log" ## 錯誤日志 路徑 server.errorlog = "/var/log/lighttpd/error.log" ## 禁止訪問以下文件 url.access-deny = ( "~", ".inc" ) ## 與目錄列表相關的設置 #dir-listing.activate = "enable" #dir-listing.encoding = "utf8" #dir-listing.show-readme = "enable" ``` 配置文件中的`server.modules`字段決定Lighttpd使用哪些擴展模塊: ``` server.modules = ("mod_access","mod_fastcgi","mod_accesslog" ) ``` * Lighttpd 通過 `mod_fastcgi` 模塊支持 PHP * `mod_accesslog` 模塊為訪問紀錄 其實在 `/etc/lighttpd/lighttpd.conf` 文件中,這部分內容寫在多行,方便用 `#` 作注釋,禁用不需要的模塊 ``` server.modules = ( ## 基礎模塊 "mod_access", ## 訪問紀錄 "mod_accesslog" ) ## fastcgi 支持 "mod_fastcgi", ## cgi 支持 # "mod_cgi", ## 路徑綁定 # "mod_alias", ## 代理 (轉發頁面) # "mod_proxy", ## 虛擬主機 # "mod_evhost", ## 輸出壓縮 # "mod_compress", ## 網址重寫 # "mod_rewrite", ## 用戶認證 # "mod_auth", # "mod_redirect", # "mod_cml", # "mod_trigger_b4_dl", # "mod_status", # "mod_setenv", # "mod_simple_vhost", # "mod_userdir", # "mod_ssi", # "mod_usertrack", # "mod_expire", # "mod_secdownload", # "mod_rrdtool", ``` ### fastcgi 配置 在配置文件的`server.modules`字段中啟用`mod_fastcgi`模塊,然后檢查以下內容: ``` ### fastcgi 腳本擴展名 static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" ) ### fastcgi 服務器設置 fastcgi.server = ( ".php" => ( "localhost" => ( # TCP/IP 接口 (“套接字”) "socket" => "/tmp/php-fastcgi.socket", # PHP cgi 模式的可執行文件(PHP 有 cli 和 cgi 兩種模式) "bin-path" => "/usr/bin/php-cgi" ) ) ) ``` 上面例子的第二部分,使用 Lighttpd 轉發規則。大意為: `.php`文件按以下方式處理 =&gt; 從`localhost`(本地),發送到`/tmp/php-fastcgi.socket`接口,使用`/usr/bin/php-cgi`處理。寫成一行比較直觀: ``` fastcgi.server = ( ".php" => ( "localhost" => ( "socket" => "/tmp/php-fastcgi.socket", "bin-path" => "/usr/bin/php-cgi" ))) ``` 如果想要 fastcgi 和 PHP 協同工作,還需要對 PHP 作一些設置,見[“PHP&MySQL”一節](ch23s04.html "PHP&MySQL") ### proxy 該模塊可以將文件轉發到其它服務器進行處理,例如將`.jsp`文件轉發到Tomcat服務器 ``` ### 首先啟用 mod_proxy 模塊 # += 表示在原來設置上增加 servers.modules +=( "mod_proxy") ### 設置 proxy 服務器轉發規則 proxy.server = ( ".jsp" => ( "localhost" => ( # 將 .jsp 文件發送到 地址“127.0.0.1”的“8080”端口(也就是本機的 Tomcat 服務器) "host" => "127.0.0.1", "port" => 8080 ) ) ) ``` ### CGI Lighttpd 可以支持 cgi ``` ### 啟用 mod_cgi 模塊 server.modules += ("mod_cgi") ### 設置 cgi 解釋器 cgi.assign = ( ".pl" => "/usr/bin/perl", ".cgi" => "/usr/bin/perl", ".py" => "/usr/bin/python" ) ``` ### 路徑綁定 將一個路徑,映射到網站目錄中 ``` ## 啟用 mod_alias 模塊 servers.modules +=( "mod_alias") ## 將 /home/lighttpd/html/man 映射到 http://host/docs alias.url += ( "/docs" => "/home/lighttpd/html/man" ) ``` ### 虛擬主機 Lighttpd 可以建立多個虛擬主機,綁定在不同的網絡接口 ``` ### 啟用 mod_evhost 模塊 servers.modules +=( "mod_evhost") ### 虛擬主機綁定的網絡接口 $HTTP["host"] == "192.168.1.2" { ### 虛擬主機可以使用獨立的選項 dir-listing.activate = "enable" dir-listing.encoding = "utf8" dir-listing.show-readme = "enable" ### 虛擬主機根目錄 server.document-root = "/home/user/html" ### 虛擬主機路徑綁定 alias.url = ( "/download/" => "/home/user/downloads/" ) alias.url += ( "/pictures/" => "/home/user/pictures/" ) } ``` * * * > [[43](ch23s03.html#id3095828)] 查看`/etc/init.d/lighttpd`文件,可以看到類似字句: > `/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf` **- f** 選項指定配置文件 ## PHP&MySQL PHP 的配置文件為 `/etc/php/php.ini`,如果與 Lighttpd 配合使用,請檢查下面語句 ``` cgi.fix_pathinfo=1 ``` 在 web 服務器根目錄下新建一個 `index.php` 文件,內容如下: ``` <?php phpinfo(); ?> ``` 訪問這個頁面,查看本服務器的 PHP 信息 與 Lighttpd 和 PHP 一樣,MySQL 也進入了大多數發行版的軟件倉庫,使用包管系統安裝,參見[表?16.1 “包管理系統”](ch16s03.html#pkg-manage "表?16.1.?包管理系統") MySQL 安裝后,可能需要重設密碼: ``` ## 停止 MySQL 服務器 /etc/init.d/mysqld stop ## 使用單用戶維護模式運行 mysqld_safe --user=mysql --skip-grant-tables --skip-networking & ## 使用 root 身份,進入名為 `mysql` 的數據庫 mysql -u root mysql ## 更新 表`user` 中,`USER`項 值為“root”的行, ## 設定這一行 `Password`項 的值,PASSWORD()函數用來給密碼加密 mysql> UPDATE user SET Password=PASSWORD('這里設置密碼') where USER='root'; mysql> FLUSH PRIVILEGES; mysql> quit ## 重啟 MySQL 服務器 /etc/init.d/mysqld restart ## 測試 MySQL 是否運行 $ mysqladmin -uroot -pmypasswd ping mysqld is alive ## 測試 MySQL 密碼 $ mysql -uroot -p Enter password: ## 如果密碼正確,會輸出以下內容 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6 Server version: 5.0.44-log Gentoo Linux mysql-5.0.44 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> ``` ## PureFTPD 相對于ProFTPD、WuFTPD等老牌 ftp 服務器,PureFTPD、vsftpd這些輕量級 ftp 服務器更加實用 PureFTPD 的配置文件通常為 `/etc/pure-ftpd.conf`[[44](ch23s05.html#ftn.id3096652)] ``` ## 綁定的地址和端口(默認為所有 IP地址 的 21端口) # Bind 127.0.0.1,21 ## 將所有用戶限制在主目錄中 (不能跳出) ChrootEveryone yes ## 如果前一個設置為 no,下面組的成員(GID)可以跳出主目錄;其他用戶仍然受限 ## 如果想取消所有限制,注釋掉 ChrootEveryone 和 TrustedGID # TrustedGID 100 ## 如果用戶主目錄不存在,自動創建 # CreateHomeDir yes ## 新建目錄及文件的權限掩碼(禁止的權限)。文件掩碼:目錄掩碼 Umask 133:022 ## 被動模式響應的端口范圍 # PassivePortRange 30000 50000 ## 強制一個 IP地址 使用被動模式 # ForcePassiveIP 192.168.0.1 ## 僅允許認證用戶進行 FXP 傳輸 (服務器=>服務器) AllowUserFXP yes ## 允許匿名 FXP 傳輸 AllowAnonymousFXP no ## 兼容 ie 等山寨 ftp 客戶端 BrokenClientsCompatibility no ## 服務器允許的最大連接數 MaxClientsNumber 50 ## 同一 IP 允許的最大連接數 MaxClientsPerIP 8 ## 匿名用戶最大帶寬(KB/s) # AnonymousBandwidth 8 ## 所有用戶最大帶寬(KB/s),包括匿名用戶 # UserBandwidth 8 # 匿名用戶的上傳/下載的比率 # AnonymousRatio 1 10 # 所有用戶的上傳/下載的比率 # UserRatio 1 10 ## 客戶端的最大空閑時間(缺省15分鐘,無動作將會被踢出) MaxIdleTime 15 ## 不允許認證用戶 (僅作為一個公共的匿名 FTP) AnonymousOnly no ## 不允許匿名連接,僅允許認證用戶使用 (設置為 no 允許匿名連接) NoAnonymous no ## 受信地址允許認證用戶,其它地址只能匿名連接 #TrustedIP 10.1.1.1 ## 禁止匿名上傳( no = 允許上傳) AnonymousCantUpload no ## 是否允許匿名用戶創建目錄 AnonymousCanCreateDirs no ## 'ls' 命令的遞歸限制。(文件的最大數目 最大子目錄深度) LimitRecursion 2000 8 ## 保留所有文件(禁止刪除) # KeepAllFiles yes ## 如果上傳的文件已經存在,自動重命名 AutoRename no ## 禁止重命名 # NoRename yes ## 禁止更改文件權限 # NoChmod yes ## 禁止讀取隱藏文件(如 .history, .ssh 等) ProhibitDotFilesRead no ## 禁止下載所有者為 "ftp" 的文件 (匿名用戶上傳后未被本地管理員驗證的文件) AntiWarez yes ## 指定文件內容作為歡迎信息 # FortunesFile /usr/share/fortune/zippy ## 啟用磁盤限額。第一個數字為最大文件數,第二個數字為存儲空間大小(單位:Mb) ## 1000:10 限制每一個用戶只能使用 1000 個文件,共 10Mb # Quota 1000:10 ## 最大可用空間,保證日志文件不會被覆蓋 (默認為 99%) MaxDiskUsage 99 ``` PureFTPD 允許同時使用多種用戶認證方式。以下為關于用戶認證的配置: ``` ## LDAP 配置文件 # LDAPConfigFile /etc/pureftpd-ldap.conf ## MySQL 配置文件 # MySQLConfigFile /etc/pureftpd-mysql.conf ## Postgres 配置文件 # PGSQLConfigFile /etc/pureftpd-pgsql.conf ## PureDB 用戶數據庫 # PureDB /etc/pureftpd.pdb ## pure-authd 套接路徑 # ExtAuth /var/run/ftpd.sock ## 啟用 PAM 認證 # PAMAuthentication yes # 啟用 Unix 系統認證 (/etc/passwd) # UnixAuthentication yes ``` PureFTPD 可以使用 syslog 生成日志,以下為關于日志的配置: ``` ## Syslog 日志 。默認為 "ftp", "none" 禁用日志 SyslogFacility ftp ## 在日志文件中不解析主機名 DontResolve yes ## 在日志中添加 PID # LogPID yes ## 使用 Apache 格式創建額外日志 # AltLog clf:/var/log/pureftpd.log ## 使用優化格式創建額外日志 # AltLog stats:/var/log/pureftpd.log ## 使用 W3C 格式創建額外日志 # AltLog w3c:/var/log/pureftpd.log ``` * * * > [[44](ch23s05.html#id3096652)] 查看`/etc/init.d/pure-ftpd`文件,可以看到類似字句: > `/usr/sbin/pure-config.pl /etc/pure-ftpd.conf` 啟用配置文件
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看