Linux應用基礎教程(基于CentOS 7)課件 梁如軍 第15、16章 Apache進階、E-mail服務_第1頁
Linux應用基礎教程(基于CentOS 7)課件 梁如軍 第15、16章 Apache進階、E-mail服務_第2頁
Linux應用基礎教程(基于CentOS 7)課件 梁如軍 第15、16章 Apache進階、E-mail服務_第3頁
Linux應用基礎教程(基于CentOS 7)課件 梁如軍 第15、16章 Apache進階、E-mail服務_第4頁
Linux應用基礎教程(基于CentOS 7)課件 梁如軍 第15、16章 Apache進階、E-mail服務_第5頁
已閱讀5頁,還剩236頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第15章

Apache進階本章內(nèi)容要點Linux下的Web編程語言Linux下的關系數(shù)據(jù)庫Linux下的內(nèi)存鍵值數(shù)據(jù)庫Apache與CGIApache日志統(tǒng)計分析工具LAMP的環(huán)境配置及應用Apache與Tomcat2024年5月30日2CreativeCommonsLicense(BY-NC-SA)本章學習目標熟悉常用的動態(tài)網(wǎng)站技術掌握MariaDB(MySQL)的安裝與配置掌握Memcached/Redis的安裝與配置掌握Apache的CGI配置掌握AWStats的安裝和配置掌握LAMP(PHP模塊)

的安裝和配置學會安裝配置常用的LAMP應用學會安裝配置JDK和Tomcat學會配置Aapche反向代理Tomcat2024年5月30日3CreativeCommonsLicense(BY-NC-SA)Web編程語言2024年5月30日4CreativeCommonsLicense(BY-NC-SA)Linux下的腳本語言常用的腳本語言Bash——系統(tǒng)必備PHP——簡明單純Perl——凝練晦澀Python——優(yōu)雅明晰Ruby——精巧靈動腳本語言的主要用途系統(tǒng)管理的自動化動態(tài)Web編程2024年5月30日CreativeCommonsLicense(BY-NC-SA)5CentOS下的腳本語言腳本語言的安裝CentOS官方倉庫提供了Perl/Python/PHP/Ruby可以使用yum安裝腳本語言的模塊管理工具PHP:pear、peclPerl:cpanPython:easy_install或pipRuby:gem2024年5月30日CreativeCommonsLicense(BY-NC-SA)6關系數(shù)據(jù)庫系統(tǒng)2024年5月30日7CreativeCommonsLicense(BY-NC-SA)動態(tài)網(wǎng)站數(shù)據(jù)庫動態(tài)Web站點并非一定要有數(shù)據(jù)庫支持,但大多數(shù)應用需要數(shù)據(jù)庫支持動態(tài)網(wǎng)站常用的開源數(shù)據(jù)庫關系型數(shù)據(jù)庫(Relationaldatabase)MySQL:PostgreSQL:/SQLite:/面向文檔的數(shù)據(jù)庫(Document-orienteddatabase)mongoDB:/CouchDB:/2024年5月30日CreativeCommonsLicense(BY-NC-SA)8MySQL/MariaDB數(shù)據(jù)庫簡介MySQL是一個單進程多線程、支持多用戶、基于客戶機/服務器(Client/Server簡稱C/S)的關系數(shù)據(jù)庫管理系統(tǒng)。由一個服務器守護程序mysqld和很多不同的客戶程序和庫組成支持FreeBSD、Linux、MAC、Windows等多種操作系統(tǒng)平臺MySQL由瑞典MySQLAB公司開發(fā)。2008年1月MySQL被美國的SUN公司收購。2009年4月SUN公司又被美國的甲骨文(Oracle)公司收購。2024年5月30日CreativeCommonsLicense(BY-NC-SA)9MySQL數(shù)據(jù)庫特點可以同時處理幾乎不限數(shù)量的用戶可以處理擁有上千萬條記錄的大型數(shù)據(jù)簡單有效的用戶特權系統(tǒng)支持常見的SQL語句規(guī)范可移植行高,安裝簡單,小巧良好的運行效率,有豐富信息的網(wǎng)絡支持相對其他大型數(shù)據(jù)庫而言調(diào)試、管理,優(yōu)化簡單提供多種存儲引擎支持,如(MyISAM、InnoDB等)。MySQL5.5默認使用高效的事務引擎InnoDB支持復制功能(Replication)功能,為高可用的MySQL系統(tǒng)提供了可靠方案2024年5月30日CreativeCommonsLicense(BY-NC-SA)10MySQL的版本根據(jù)MySQL的開發(fā)情況,可以將MySQL分為Alpha、Beta、Gamma和GenerallyAvailable(GA)MySQL官方為Linux下的每一種GA版本提供了RPM包、二進制包和源碼包為RedHat系列發(fā)型版提供了YUM倉庫/yum/為Debian系列發(fā)型版提供了APT倉庫/apt/2024年5月30日CreativeCommonsLicense(BY-NC-SA)11MySQL的表類型和存儲引擎MySQL的表類型由存儲引擎(StorageEngines)決定,針對不同的存儲引擎可以指定相應不同的配置MySQL的表主要支持六種類型事務安全型(transaction-safe):InnoDB和BDB非事務安全型(non-transaction-safe):MYISAM、HEAP、ISAM、MERGE顯示當前數(shù)據(jù)庫支持的存儲引擎:showengines;MySQL5.5/5.6的默認存儲引擎是InnoDB2024年5月30日CreativeCommonsLicense(BY-NC-SA)12MySQL的存儲引擎比較2024年5月30日CreativeCommonsLicense(BY-NC-SA)13MyISAMvsInnoDB(1)

——MyISAM的特點數(shù)據(jù)存儲方式簡單,使用B+Tree進行索引使用三個文件定義一個表:.MYI.MYD.frm少碎片、支持大文件、能夠進行索引壓縮二進制層次的文件可以移植(Linux、Windows)訪問速度快,是所有MySQL文件引擎中速度最快的不支持一些數(shù)據(jù)庫特性,比如事務、外鍵約束等使用表級鎖(Tablelevellock),性能稍差,更適合讀取多的操作表數(shù)據(jù)容量有限,一般建議單表數(shù)據(jù)量介于50w–200w2024年5月30日CreativeCommonsLicense(BY-NC-SA)14MyISAMvsInnoDB(2)

——InnoDB的特點使用表空間(TableSpace)的方式來進行數(shù)據(jù)存儲(ibdata1,ib_logfile0)支持事務、外鍵約束等數(shù)據(jù)庫特性使用行級鎖(Rowslevellock),讀寫性能都非常優(yōu)秀能夠承載大數(shù)據(jù)量的存儲和訪問擁有自己獨立的緩沖池,能夠緩存數(shù)據(jù)和索引在關閉自動提交的情況下,與MyISAM引擎速度差異不大2024年5月30日CreativeCommonsLicense(BY-NC-SA)15MyISAMvsInnoDB(3)

——存儲引擎的選擇如果應用不需要事務,處理的只是基本的CRUD操作,那么MyISAM是不二選擇MyISAM不支持事務、也不支持外鍵,但其訪問速度快一般來說,如果需要事務支持,并且有較高的并發(fā)讀寫頻率,InnoDB是不錯的選擇InnoDB存儲引擎提供了具有提交、回滾和崩潰恢復能力的事務安全。比起MyISAM存儲引擎,InnoDB寫的處理效率差一些并且會占用更多的磁盤空間以保留數(shù)據(jù)和索引。2024年5月30日CreativeCommonsLicense(BY-NC-SA)16MariaDB由原來MySQL的作者MichaelWidenius創(chuàng)辦的公司所開發(fā)的免費開源的數(shù)據(jù)庫服務是采用Maria存儲引擎的MySQL分支版本與MySQL相比較,MariaDB更強的地方在于,二者支持的不同的引擎。通常可以通過showengines命令來查看兩種數(shù)據(jù)庫服務器支持的不同的引擎。CentOS7已默認提供了MariaDB而非MySQL2024年5月30日CreativeCommonsLicense(BY-NC-SA)17安裝MariaDB服務安裝#yuminstallmariadbmariadb-server啟動#systemctlstartmariadb#systemctlenablemariadb設置MySQL的root用戶口令#yuminstallpwgen#pwgen-120Aed7ahBuu7ru2Wooyohg#mysqladmin-urootpassword'Aed7ahBuu7ru2Wooyohg'2024年5月30日CreativeCommonsLicense(BY-NC-SA)18MariaDB服務概覽軟件包:mariadb-server服務類型:由Systemd啟動的守護進程配置單元:/usr/lib/systemd/system/mariadb.service端口:3306配置:/etc/f相關軟件包:mariadb、php-mysql、perl-DBD-mysql2024年5月30日CreativeCommonsLicense(BY-NC-SA)19MariaDB/MySQL的配置文件配置文件為/etc/fMariaDB/MySQL的詳細配置參數(shù)的解釋請參考MariaDB/MySQL手冊建議DBA從頭編制適合特定應用的配置文件2024年5月30日CreativeCommonsLicense(BY-NC-SA)20MariaDB/MySQL的配置原則針對不同的服務器硬件進行合理配置(如CPU核數(shù)、內(nèi)存大小等)針對是否是獨立的服務器進行合理配置(若Mysql服務器還同時運行其他服務,就該適當削減其資源占用)針對MyISAM或InnoDB不同引擎進行不同定制性配置針對不同的應用情況進行合理配置,盡量使應用本身達到最合理的情況2024年5月30日CreativeCommonsLicense(BY-NC-SA)21MySQL常用的公共配置選項2024年5月30日CreativeCommonsLicense(BY-NC-SA)22選項缺省值推薦值說明max_connections1001024MySQL服務器同時處理的數(shù)據(jù)庫連接的最大數(shù)量query_cache_size0(不打開)16M查詢緩存區(qū)的最大長度,按照當前需求,一倍一倍增加,本選項比較重要sort_buffer_size512K16M每個線程的排序緩存大小,一般按照內(nèi)存可以設置為2M以上,推薦是16M,該選項對排序orderby,groupby起作用record_buffer128K16M每個進行一個順序掃描的線程為其掃描的每張表分配這個大小的一個緩沖區(qū),可以設置為2M以上table_cache64512為所有線程打開表的數(shù)量。增加該值能增加mysqld要求的文件描述符的數(shù)量。MySQL對每個唯一打開的表需要2個文件描述符。常用的MyISAM配置選項2024年5月30日CreativeCommonsLicense(BY-NC-SA)23選項缺省值推薦值說明key_buffer_size8M256M用來存放索引區(qū)塊的緩存值,建議128M以上,不要大于內(nèi)存的30%read_buffer_size128K16M用來做MyISAM表全表掃描的緩沖大小.為從數(shù)據(jù)表順序讀取數(shù)據(jù)的讀操作保留的緩存區(qū)的長度myisam_sort_buffer_size16M128M設置,恢復,修改表的時候使用的緩沖大小,值不要設的太大常用的InnoDB配置選項2024年5月30日CreativeCommonsLicense(BY-NC-SA)24選項缺省值推薦值說明innodb_buffer_pool_size32M1GInnoDB使用一個緩沖池來保存索引和原始數(shù)據(jù),這里你設置越大,你在存取表里面數(shù)據(jù)時所需要的磁盤I/O越少,一般是內(nèi)存的一半,不超過2G,否則系統(tǒng)會崩潰,這個參數(shù)非常重要innodb_additional_mem_pool_size2M128MInnoDB用來保存metadata信息,如果內(nèi)存是4G,最好本值超過200Minnodb_flush_log_at_trx_commit10

0代表日志只大約每秒寫入日志文件并且日志文件刷新到磁盤;1為執(zhí)行完沒執(zhí)行一條SQL馬上commit;2代表日志寫入日志文件在每次提交后,但是日志文件只有大約每秒才會刷新到磁盤上.對速度影響比較大,同時也關系數(shù)據(jù)完整性innodb_log_file_size8M256M在日志組中每個日志文件的大小,一般是innodb_buffer_pool_size的25%,官方推薦是innodb_buffer_pool_size的40-50%,設置大一點來避免在日志文件覆寫上不必要的緩沖池刷新行為innodb_log_buffer_size128K8M用來緩沖日志數(shù)據(jù)的緩沖區(qū)的大小.推薦是8M,官方推薦該值小于16M,最好是1M-8M之間配置MySQL(/etc/f)2024年5月30日CreativeCommonsLicense(BY-NC-SA)25[mysqld]#GENERALdatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockpid_file=/var/lib/mysql/mysql.piduser=mysqlport=3306storage_engine=InnoDB#INNODBinnodb_buffer_pool_size=<value>innodb_log_file_size=<value>innodb_file_per_table=1innodb_flush_method=O_DIRECT#MyISAMkey_buffer_size=<value>#LOGGINGlog_error=/var/lib/mysql/mysql-error.loglog_slow_queries=/var/lib/mysql/mysql-slow.log#OTHERtmp_table_size=32Mmax_heap_table_size=32Mquery_cache_type=0query_cache_size=0max_connections=<value>thread_cache_size=<value>table_cache_size=<value>open_files_limit=65535[client]socket=/var/lib/mysql/mysql.sockport=3306MySQL參考資源書籍高性能MySQL(第3版)/EffectiveMySQL系列(3冊,有中譯本)/

配置在線MySQL配置向導/wizard

2024年5月30日CreativeCommonsLicense(BY-NC-SA)26鍵值緩存系統(tǒng)2024年5月30日27CreativeCommonsLicense(BY-NC-SA)鍵值緩存系統(tǒng)簡介通常內(nèi)存鍵值緩存系統(tǒng)與數(shù)據(jù)庫相結合來使用通過在內(nèi)存中緩存數(shù)據(jù)和對象來減少讀取關系數(shù)據(jù)庫的次數(shù),從而提高了動態(tài)數(shù)據(jù)庫驅動的網(wǎng)站速度。若被訪問的對象已在緩存中,則直接讀取緩存中的數(shù)據(jù)返還給瀏覽器;若未在緩存中,則訪問后端數(shù)據(jù)庫查詢獲取數(shù)據(jù)并返還給瀏覽器,同時將查詢結果置于緩存系統(tǒng)中以便加快后續(xù)訪問。2024年5月30日CreativeCommonsLicense(BY-NC-SA)28鍵值緩存系統(tǒng)簡介(續(xù))鍵值緩存系統(tǒng)通常占用固定大小的內(nèi)存來運行當內(nèi)存中的緩存被占滿后會使用最近最少用(LRU)算法自動移除一些緩存對象。內(nèi)存鍵值緩存系統(tǒng)通常是基于C/S模型設計的,即包含服務器端和客戶端服務器端是以守護進程形式運行的提供基于不同語言(如:PHP、Python、Ruby、Java等)的多種客戶端2024年5月30日CreativeCommonsLicense(BY-NC-SA)29為什么使用鍵值緩存系統(tǒng)為了加快Web站點的響應速度,通常可以使用基于內(nèi)存的鍵值緩存系統(tǒng):緩存經(jīng)常被訪問的靜態(tài)HTML頁面、CSS、Javascript、圖片緩存用于生成動態(tài)頁面的,渲染后的網(wǎng)頁模板(RenderredTemplates)緩存登錄Cookie/Session、購物車緩存動態(tài)熱點數(shù)據(jù)(從數(shù)據(jù)庫獲得的查詢結果)等2024年5月30日CreativeCommonsLicense(BY-NC-SA)30Memcached簡介類型內(nèi)存鍵值緩存數(shù)據(jù)存儲將鍵直接映射為值操作方法創(chuàng)建、讀取,更新,刪除等其他特性使用多線程為服務器提供額外的性能2024年5月30日CreativeCommonsLicense(BY-NC-SA)31Memcached服務概覽軟件包:memcached服務類型:由Systemd啟動的守護進程配置單元:/usr/lib/systemd/system/memcached.service守護進程:/usr/bin/memcached端口:11211配置:/etc/sysconfig/memcached工具:/usr/bin/memcached-tool相關軟件包:php-pecl-memcached,……2024年5月30日CreativeCommonsLicense(BY-NC-SA)32安裝、配置Memcached服務安裝Memcached(使用Remi倉庫中的新版)#yuminstallmemcached配置Memcached#vi/etc/sysconfig/memcached2024年5月30日CreativeCommonsLicense(BY-NC-SA)33PORT="11211“ #定義監(jiān)聽端口變量,作為–p參數(shù)的值使用USER="memcached"#定義守護進程的執(zhí)行用戶變量,作為–u參數(shù)的值使用MAXCONN="5000" #定義最大并行連接數(shù)變量,作為–c參數(shù)的值使用CACHESIZE="1024"#定義緩存最大尺寸的變量,作為–m參數(shù)的值使用(單位為MB)OPTIONS="" #定義其他memcached命令行上可用的參數(shù)及其值啟動Memcached服務啟動Memcached#systemctlstartmemcached#systemctlenablememcached使用Memcached的管理工具#manmemcached-tool顯示服務器的當前狀態(tài)信息#memcached-tool:11211status2024年5月30日CreativeCommonsLicense(BY-NC-SA)34Redis簡介類型內(nèi)存非關系數(shù)據(jù)庫數(shù)據(jù)存儲將鍵映射為字符串(String)、哈希(Map)、列表(list)、集合(sets)和有序集合(sortedsets)等類型的值操作方法提供了對于每種數(shù)據(jù)類型的通用訪問模式,為每種數(shù)據(jù)類型的處理提供大量命令以及部分事務支持其他特性發(fā)布/訂閱、主/從復制、持久性(disk-backed)、腳本(存儲過程)2024年5月30日CreativeCommonsLicense(BY-NC-SA)35Redis服務概覽軟件包:redis服務類型:由Systemd啟動的守護進程配置單元:/usr/lib/systemd/system/redis.service守護進程:/usr/sbin/redis-server端口:6379配置:/etc/redis.conf工具:/usr/bin/{redis-cli,redis-benchmark}相關軟件包:php-pecl-redis,……2024年5月30日CreativeCommonsLicense(BY-NC-SA)36安裝、配置Redis服務安裝Redis(使用Remi倉庫中的新版)#yuminstallredis配置Redis#vi/etc/redis.conf2024年5月30日CreativeCommonsLicense(BY-NC-SA)37port6379 #指定監(jiān)聽端口maxclients5000 #指定最大并行連接數(shù)maxmemory1gb #指定緩存最大尺寸maxmemory-policyallkeys-lru #指定緩存滿后的剔除策略啟動Redis服務啟動Redis#systemctlstartredis#systemctlenableredis使用Redis工具查看redis的當前狀態(tài)信息#redis-cli-hlocalhost-p6379info:監(jiān)視redis的讀寫操作(<Ctrl+C>退出)#redis-cli-hlocalhost-p6379monitor性能測試(100個并發(fā)連接,10000個請求)#redis-benchmark-hlocalhost-p6379-c100-n100002024年5月30日CreativeCommonsLicense(BY-NC-SA)38Apache的動態(tài)網(wǎng)站技術CGIApache的第三方腳本語言模塊FastCGI2024年5月30日CreativeCommonsLicense(BY-NC-SA)39CGI簡介CGI(CommonGatewayInterface,通用網(wǎng)關接口)是一個連接外部應用程序到HTTP服務器的標準CGI定義了Web服務器與外部內(nèi)容生成程序(通常稱為CGI腳本或CGI程序)之間交互的方法,即:一種基于瀏覽器的輸入、在Web服務器上運行的程序方法,從而實現(xiàn)動態(tài)Web的功能2024年5月30日CreativeCommonsLicense(BY-NC-SA)40CGI程序CGI程序可以用任何一種語言編寫只要這種語言具有標準輸入、輸出和環(huán)境變量。例如:perl、python、ruby、php、bash、C等CGI程序通常是掛平臺的可以運行在類UNIX和Windows等眾多平臺的服務器上實現(xiàn)同一功能的程序在不同平臺上可能會有細微差異2024年5月30日CreativeCommonsLicense(BY-NC-SA)41CGI的工作原理2024年5月30日CreativeCommonsLicense(BY-NC-SA)42CGI的處理步驟Web客戶端通過網(wǎng)絡把用戶請求送到服務器Web服務器接收用戶請求GET方法:利用環(huán)境變量QUERY_STRING接收POST方法:利用標準輸入接收;環(huán)境變量CONTENT_LENGTH記錄輸入字符長度Web服務器交給CGI程序處理CGI程序把動態(tài)處理結果通過標準輸出傳送給Web服務器服務器把最終的HTML頁面送回到Web客戶端2024年5月30日CreativeCommonsLicense(BY-NC-SA)43Apache與CGIApache支持CGI的模塊mod_cgi(用于基于進程的preforkMPM)mod_cgid(用于基于線程的workerMPM)RHEL/CentOS下Apache默認加載了mod_cgi配置Apache允許執(zhí)行CGI程序有兩種方法將所有的CGI程序放在指定的目錄中,并使用ScriptAlias指令聲明在任意目錄中執(zhí)行CGI程序2024年5月30日CreativeCommonsLicense(BY-NC-SA)44ScriptAlias/etc/httpd/conf/httpd.conf里有如下的配置段以/cgi-bin/開頭的資源都映射到/var/www/cgi-bin/目錄URL為http://www.ls-al.me/cgi-bin/test.pl的請求,Apache會試圖執(zhí)行/var/www/cgi-bin/test.pl文件(CGI程序文件必須存在而且可執(zhí)行)2024年5月30日CreativeCommonsLicense(BY-NC-SA)45ScriptAlias

/cgi-bin/"/var/www/cgi-bin/"<Directory"/var/www/cgi-bin">AllowOverrideNoneOptionsNoneRequireallgranted</Directory>創(chuàng)建CGI腳本并瀏覽測試創(chuàng)建/var/www/cgi-bin/test.pl添加可執(zhí)行權限并進行瀏覽測試2024年5月30日CreativeCommonsLicense(BY-NC-SA)46#!/usr/bin/perlprint"Content-type:text/html\n\n";print"Hello,World.Perl“;#chmod+x/var/www/cgi-bin/test.pl#elinkshttp://www.ls-al.me/cgi-bin/test.pl#elinks/cgi-bin/test.pl#elinks/cgi-bin/test.pl為虛擬主機配置ScriptAlias在VirtualHost容器中配置ScriptAlias指令2024年5月30日CreativeCommonsLicense(BY-NC-SA)47<VirtualHost*:80>ServerNameDocumentRoot"/var/www/vhosts//htdocs/"………………

ScriptAlias/cgi-bin/"/var/www/vhosts//cgi-bin/"<Directory"/var/www/vhosts//cgi-bin">AllowOverrideNoneOptionsNoneRequireallgranted</Directory></VirtualHost>ScriptAlias說明ScriptAlias指令除了可以映射目錄之外,還可以直接映射CGI程序例如ScriptAlias/cgit/var/www/cgi-bin/cgit/var/www/cgi-bin/cgit是一個CGI程序當訪問http://xxx.xxx.xxx/cgit時將直接執(zhí)行/var/www/cgi-bin/cgit程序2024年5月30日CreativeCommonsLicense(BY-NC-SA)48在任意目錄中執(zhí)行CGI程序配置方法用AddHandler或SetHandler指令激活cgi-script處理器在目錄容器的Options指令中啟用ExecCGI選項AddHandler/

SetHandler指令AddHandlercgi-script.cgi.pl用于在文件擴展名與特定的處理器

之間建立映射告訴服務器哪些文件是CGI程序文件2024年5月30日CreativeCommonsLicense(BY-NC-SA)49在任意目錄中執(zhí)行CGI程序

配置舉例/etc/httpd/conf.d/git.conf使用別名將http://xxx.xxx.xxx/git

的訪問映射到磁盤的/var/www/git目錄允許執(zhí)行/var/www/git目錄下的后綴名為.cgi的程序2024年5月30日CreativeCommonsLicense(BY-NC-SA)50Alias/git/var/www/git<Directory/var/www/git>Options+ExecCGIAddHandlercgi-script.cgi</Directory>CGI的優(yōu)缺點優(yōu)點安全性好用C語言寫的CGI程序,編譯后的運行速度比腳本運行速度要快缺點需要開獨立進程(fork-and-execute模式)來處理用戶請求,密集請求的情況下容易崩潰維護成本比腳本語言高通常CGI程序使用Perl編寫,其語法相對復雜2024年5月30日CreativeCommonsLicense(BY-NC-SA)51解決CGI的低效率為了適應密集請求(高負載)型的Web服務器解決CGI的低執(zhí)行效率的方法使用Apache的第三方腳本語言模塊模塊當Apache運行后就常駐內(nèi)存不會像CGI那樣每次都要花費時間去fork一次使用FastCGI技術是一種常駐(Long-Live)型的CGI類似于系統(tǒng)守護進程可以一直執(zhí)行著為來自服務器的請求提供服務只要激活后,不會每次都要花費時間去fork一次2024年5月30日CreativeCommonsLicense(BY-NC-SA)52Apache的腳本語言模塊PHP:mod_php/Perl:mod_perl/Python:mod_python/Ruby:mod_passenger/2024年5月30日CreativeCommonsLicense(BY-NC-SA)53FastCGI的優(yōu)點穩(wěn)定性:FastCGI是以獨立的進程池運行來CGI單獨一個進程死掉,系統(tǒng)可以很輕易的丟棄,然后重新分配新的進程來運行之安全性:FastCGI和宿主服務器完全獨立即使FastCGI僵死也不會導致服務器宕機擴展性:FastCGI是一個中立的技術標準可以支持任何語言寫的處理程序,如:PHP、Perl、Python、Ruby、Java、C/C++等2024年5月30日CreativeCommonsLicense(BY-NC-SA)54FastCGI的優(yōu)點(續(xù))高性能FastCGI將動態(tài)邏輯的處理從Web服務器中分離出來大負荷的I/O處理還是留給宿主服務器宿主服務器可以一心一意作I/O處理大量的圖片等靜態(tài)I/O處理完全不需要邏輯程序的參與可以讓Web服務器運行多個FastCGI應用程序的副本來提高性能FastCGI可以很有效地利用內(nèi)存來作緩存來提高性能2024年5月30日CreativeCommonsLicense(BY-NC-SA)55Apache與FastCGILinux下常用的Web服務器均支持FastCGIApache、Nginx、Lighttpd、CherokeeApache使用

mod_fcgid模塊實現(xiàn)由EPEL倉庫的mod_fcgid包提供配置Apache允許執(zhí)行FastCGI程序與允許執(zhí)行CGI程序類似2024年5月30日CreativeCommonsLicense(BY-NC-SA)56ScriptAlias/fcgi-bin/var/www/fcgi-binAddHandlerfastcgi-script.php.py.pl.fcgiOptions+ExecCGIApache日志統(tǒng)計分析工具2024年5月30日57CreativeCommonsLicense(BY-NC-SA)AWStats簡介AWStats(AdvancedWebStatistics)是一個免費的功能強大的服務器日志分析工具AWStats的功能提供訪問量,訪問次數(shù),訪問者IP,訪問者國家或地區(qū)、頁面瀏覽量,點擊數(shù),高峰時段、訪客持續(xù)時間,數(shù)據(jù)流量等提供精確到每月、每日、每小時的統(tǒng)計數(shù)據(jù)提供訪客操作系統(tǒng)、瀏覽器版本的統(tǒng)計信息提供Robots/Spiders機械訪問的統(tǒng)計、無效連接等搜索引擎、關鍵字、以及對不同文件類型的統(tǒng)計信息2024年5月30日CreativeCommonsLicense(BY-NC-SA)58CentOS下的AWStats安裝AWStats#yum--enablerepo=epelinstallawstats重要文件說明配置文件模板/etc/awstats/awstats.model.conf每個虛擬主機的配置文件(*為虛擬主機名)/etc/awstats/awstats.*.conf每小時生成一次AWStats數(shù)據(jù)庫的cron腳本/etc/cron.hourly/awstats用于執(zhí)行awstats.pl的Apache的CGI配置文件/etc/httpd/conf.d/awstats.conf2024年5月30日CreativeCommonsLicense(BY-NC-SA)59AWStats的配置文件AWStats在生成其統(tǒng)計數(shù)據(jù)庫時需要其配置文件AWStats為不同的站點使用不同的配置文件配置文件的命名規(guī)則awstats.SITENAME.conf例如:站點名為

,則配置文件名為.conf常用配置語句SiteDomain=HostAliases=LogFile=2024年5月30日CreativeCommonsLicense(BY-NC-SA)60更新AWStats的統(tǒng)計數(shù)據(jù)庫生成指定站點的日志統(tǒng)計數(shù)據(jù)庫#/usr/share/awstats/wwwroot/cgi-bin/awstats.pl-config=SITENAME生成所有虛擬主機的統(tǒng)計數(shù)據(jù)庫對指定配置文件目錄下的每個配置文件生成統(tǒng)計數(shù)據(jù)庫/usr/share/awstats/tools/awstats_updateall.plAWStats的cron腳本使用了awstats_updateall.pl2024年5月30日CreativeCommonsLicense(BY-NC-SA)61AWStats的Apache配置文件/etc/httpd/conf.d/awstats.conf此配置文件是被主配置文件包含的,是全局配置,所有的虛擬主機都將繼承這個配置2024年5月30日CreativeCommonsLicense(BY-NC-SA)62…………ScriptAlias/awstats/"/usr/share/awstats/wwwroot/cgi-bin/"<Directory"/usr/share/awstats/wwwroot">OptionsNoneAllowOverrideNoneOrderallow,denyAllowfrom</Directory>…………AWStats配置舉例為虛擬主機配置AWStats在Apache中為AWStats的訪問配置主機訪問控制、認證授權生成虛擬主機的AWStats配置文件更新指定配置文件的AWStats的統(tǒng)計數(shù)據(jù)庫訪問CGI腳本獲得AWStats的統(tǒng)計輸出2024年5月30日CreativeCommonsLicense(BY-NC-SA)63參見教材的操作步驟LAMP的環(huán)境配置及應用2024年5月30日64CreativeCommonsLicense(BY-NC-SA)LAMP簡介LAMP是首字母縮略語(Acronym)L:Linux操作系統(tǒng)A:ApacheWeb服務器M:MySQL數(shù)據(jù)庫P:PHP、Perl、Python或Ruby腳本語言LAMP的特點開放靈活、開發(fā)迅速、部署方便高可配置、安全可靠、成本低廉等與Java平臺和.NET平臺鼎足三分尤其受中小企業(yè)的歡迎2024年5月30日CreativeCommonsLicense(BY-NC-SA)65狹義LAMPLinux+Apache+MySQL+PHP是最常用的開源平臺組合2024年5月30日CreativeCommonsLicense(BY-NC-SA)66基于腳本語言的

知名Web框架2024年5月30日CreativeCommonsLicense(BY-NC-SA)67語言Web框架主頁PHPsymfony/Zend/CodeIgniter/CakePHP/PythonDjango/Pylons/TurboGears/Grok/RubyRubyonRails/PerlCatalyst/安裝配置LAMP環(huán)境安裝配置PHP安裝和測試phpMyAdmin2024年5月30日CreativeCommonsLicense(BY-NC-SA)68安裝PHP安裝PHP及其相關的軟件包2024年5月30日CreativeCommonsLicense(BY-NC-SA)69#yuminstallphpphp-cliphp-pear#yuminstallphp-pdophp-mysql#yuminstallphp-mcryptphp-mbstring#yuminstallphp-xmlphp-pecl-yaml#yuminstallphp-gdphp-pecl-imagick#yuminstallphp-pecl-apc#yuminstallphp-pecl-memcachedphp-pecl-redis查看PHP的配置查看PHP的配置查看PHP已加載的模塊#php-m顯示phpinfo()的信息輸出#php-I查看PHP的配置文件2024年5月30日CreativeCommonsLicense(BY-NC-SA)70#less/etc/php.ini#ls/etc/php.dapc.inijson.inimysql.inipdo_sqlite.inixmlwriter.inicurl.inimbstring.iniodbc.iniphar.inixsl.ini………………配置PHP的主配置文件#vi/etc/php.ini2024年5月30日CreativeCommonsLicense(BY-NC-SA)71#對于生產(chǎn)平臺,應將display_errors設置為Offdisplay_errors=Off#將log_errors設置為Onlog_errors=On#使用zlib庫壓縮輸出并設置壓縮級別zlib.output_compression=Onzlib.output_compression_level=1#不暴露PHP被安裝在服務器上的事實expose_php=Off#限制一個PHP腳本可能消耗的最大內(nèi)存量#這有助于防止寫得不好的腳本消耗服務器上的可用內(nèi)存。memory_limit=256M配置PHP的主配置文件(續(xù))#vi/etc/php.ini2024年5月30日CreativeCommonsLicense(BY-NC-SA)72#為POST方法指定可接受的最大尺寸post_max_size=512M#設置可上傳文件的最大尺寸upload_max_filesize=20M#不能使用URL(如:http://或ftp://)直接打開文件allow_url_fopen=Off[Date]#為日期函數(shù)定義默認時區(qū)date.timezone=Asia/Shanghai配置PHP的APC模塊#vi/etc/php.d/apc.ini2024年5月30日CreativeCommonsLicense(BY-NC-SA)73#是否啟用APCopcodecache,若系統(tǒng)中無其他OPcache可以設置為1apc.enable_opcode_cache=0#啟用APC(這是默認配置,1是啟用)apc.enabled=1#每個共享內(nèi)存塊的大小,(可以使用單位后綴M/G)apc.shm_size=64M#緩存條目在緩沖區(qū)中允許逗留的秒數(shù)。0表示永不超時。建議值為7200~36000apc.ttl=7200#緩存條目在垃圾回收表中能夠存在的秒數(shù)apc.gc_ttl=3600#是否啟用腳本更新檢查。改變這個指令值要非常小心。#默認值On表示APC在每次請求腳本時都檢查腳本是否被更新,#若檢查到更新則自動重新編譯和緩存編譯后的內(nèi)容。apc.stat=1PHP的ZendGuard支持有些PHP應用程序需要Zend組件(ZendOptimizer/ZendGuardLoader)的支持ZendGuard為獨立的軟件供應商和IT管理者提供保護PHP應用程序源代碼的能力。ZendGuardLoader是一個免費的應用程序,運行使用ZendGuard編碼的文件并提高PHP應用程序的整體性能。對于PHP5.4版,只能安裝ZendGuardLoader。2024年5月30日CreativeCommonsLicense(BY-NC-SA)74安裝配置ZendGuard(1)查看當前安裝的PHP版本#php-vPHP5.4.29(cli)(built:May28201415:02:43)Copyright(c)1997-2014ThePHPGroupZendEnginev2.4.0,Copyright(c)1998-2014ZendTechnologies下載ZendGuardLoader/en/products/guard/downloads下載符合$(arch)的用于Linux的PHP5.4的最新版本ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz2024年5月30日CreativeCommonsLicense(BY-NC-SA)75安裝配置ZendGuard(2)解壓并將ZendGuardLoader.so復制到PHP模塊目錄/usr/lib64/php/modules/配置ZendGuardLoader的模塊配置文件#vi/etc/php.d/ZendGuardLoader.ini檢測安裝#php-v……withZendGuardLoaderv3.3,Copyright(c)1998-2013,byZendTechnologies2024年5月30日CreativeCommonsLicense(BY-NC-SA)76zend_extension=/usr/lib64/php/modules/ZendGuardLoader.sozend_loader.enable=1配置Apache的php模塊/etc/httpd/conf.d/php.conf2024年5月30日CreativeCommonsLicense(BY-NC-SA)77<IfModuleprefork.c>LoadModulephp5_modulemodules/libphp5.so</IfModule><IfModule!prefork.c>LoadModulephp5_modulemodules/libphp5-zts.so</IfModule><FilesMatch\.php$>SetHandlerapplication/x-httpd-php</FilesMatch>AddTypetext/html.phpDirectoryIndexindex.phpphp_valuesession.save_handler"files"php_valuesession.save_path"/var/lib/php/session"測試PHP和MySQL重新啟動Apache#servicehttpdrestart在/var/www/html目錄下編寫一個測試腳本#echo‘<?phpphpinfo()?>’>/var/www/html/info.php使用瀏覽器進行測試#elinkshttp://olabs.lan/info.php2024年5月30日CreativeCommonsLicense(BY-NC-SA)78phpMyAdminphpMyAdmin是一個用PHP編寫的基于Web的Mysql管理工具phpMyAdmin界面友好,操作簡單phpMyAdmin的主頁/phpMyAdmin的安裝和配置#yuminstallphpMyAdmin2024年5月30日CreativeCommonsLicense(BY-NC-SA)79參考教材操作步驟常用的LAMP應用PortalCMSLMS/LCMSWikiBLOGForumGroupwareWebMailBugTrackersphpDBadminWebHostingControlPanel2024年5月30日CreativeCommonsLicense(BY-NC-SA)80常用的LAMP應用軟件MoodleWordpressDrupalphpBB…………2024年5月30日CreativeCommonsLicense(BY-NC-SA)81Moodle簡介Moodle為遠程教育提供了一種優(yōu)秀的開源解決方案是使用PHP編寫的面向對象的模塊化動態(tài)教學環(huán)境是由澳大利亞教師MartinDougiamas基于建構主義教育理論而開發(fā)的免費、開源的課程管理系統(tǒng)(CourseManagementSystem,CMS)具有內(nèi)容管理、學習管理和課程管理三大功能包含論壇、測驗、資源、投票、問卷、作業(yè)、聊天和博客等模塊具有大量功能豐富的第三方插件是目前全球范圍內(nèi)應用最廣泛的在線教學平臺之一2024年5月30日CreativeCommonsLicense(BY-NC-SA)82Moodle配置舉例下載最新版Moodle配置MySQL服務的InnoDB存儲支持配置Apache運行Moodle的安裝配置腳本或使用瀏覽器實現(xiàn)交互式安裝安排Moodle的cron任務2024年5月30日CreativeCommonsLicense(BY-NC-SA)83參考教材操作步驟JDK和Tomcat2024年5月30日84CreativeCommonsLicense(BY-NC-SA)CentOS7下的Java運行環(huán)境CentOS支持的JDKOpenJDK(/)Oracle的JavaSE(JDK)CentOS7提供了三種版本的OpenJDK2024年5月30日CreativeCommonsLicense(BY-NC-SA)85#yumsearchopenjdk|grep'OpenJDKRuntimeEnvironment‘java-1.6.0-openjdk.x86_64:OpenJDKRuntimeEnvironmentjava-1.7.0-openjdk.x86_64:OpenJDKRuntimeEnvironmentjava-1.8.0-openjdk.x86_64:OpenJDKRuntimeEnvironment安裝Oracle的JavaSE(JDK)下載安裝并配置2024年5月30日CreativeCommonsLicense(BY-NC-SA)86#aria2c--header="Cookie:oraclelicense=accept-securebackup-cookie"\/otn-pub/java/jdk/8u65-b17/jdk-8u65-linux-x64.rpm#rpm-ivhjdk-8u65-linux-x64.rpm#alternatives--install/usr/bin/javajava/usr/java/jdk1.8.0_65/bin/java2000000#alternatives--install/usr/bin/javacjavac/usr/java/jdk1.8.0_65/bin/javac2000000#alternatives--install/usr/bin/javawsjavaws/usr/java/jdk1.8.0_65/jre/bin/javaws2000000#alternatives--install/usr/bin/jarjar/usr/java/jdk1.8.0_65/bin/jar2000000/technetwork/java/javase/downloads/index.html配置Oracle的JavaSE(JDK)配置方法2測試#./etc/profile.d/java.sh#java-version2024年5月30日CreativeCommonsLicense(BY-NC-SA)87#echo'exportJAVA_HOME=/usr/java/defaultexportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATHexportCLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH'>/etc/profile.d/java.sh#chmod+x/etc/profile.d/java.shTomcat簡介是一個免費的開源的Jsp和Servlet的運行平臺是Apache基金會的Jakarta項目中的一個核心項目由Apache、Sun/Oracle和其它一些公司及個人共同開發(fā)而成Tomcat技術先進、性能穩(wěn)定,而且免費Tomcat同時也具有傳統(tǒng)的Web服務器的功能與Apache/Nginx相比,它的處理靜態(tài)Html的能力不如Apache/Nginx通??梢詫omcat和Apache/Nginx集成到一起,讓Apache/Nginx處理靜態(tài)Html,而讓Tomcat處理Jsp和Servlet。2024年5月30日CreativeCommonsLicense(BY-NC-SA)88安裝和啟動Tomcat安裝Tomcat7(EPEL倉庫)#yuminstalltomcatlog4jtomcat-native\tomcat-jsp-2.2-apitomcat-servlet-3.0-api2024年5月30日CreativeCommonsLicense(BY-NC-SA)89管理Tomcat服務對于默認的tomcat實例#systemctl{start|stop|status|restart}tomcat#systemctl{enable|disable}tomcat對于非默認的tomcat實例#systemctl{start|stop|status|restart}tomcat@NAME#systemctl{enable|disable}tomcat@NAME2024年5月30日CreativeCommonsLicense(BY-NC-SA)90配置Tomcat

——配置Tomcat的工作環(huán)境#vi/etc/tomcat/tomcat.conf2024年5月30日CreativeCommonsLicense(BY-NC-SA)91//修改環(huán)境變量JAVA_HOMEJAVA_HOME="/usr/java/default"http://修改環(huán)境變量JAVA_OPTSJAVA_OPTS="-Xms2048m-Xmx2048m-XX:PermSize=512m-XX:MaxPermSize=512m”配置Tomcat

——配置Tomcat的服務#vi/etc/tomcat/server.xml2024年5月30日CreativeCommonsLicense(BY-NC-SA)92<Connectorport="8080"protocol="HTTP/1.1"

connectionTimeout="30000"http://指定網(wǎng)絡連接超時,單位:毫秒redirectPort="8443"http://指定Tomcat服務器的重定向端口號

enableLookups="false"http://為了提高處理能力,禁止域名反向查詢

acceptCount="200"http://指定當所有可以使用的處理請求的線程數(shù)都被使用時,//可以放到處理隊列中的請求數(shù),超過這個數(shù)的請求將不予處理

maxThreads="400"http://指定Tomcat可創(chuàng)建的最大的線程數(shù)。

keepAliveTimeout="600000"http://指定keepAlive的時效時間,單位:毫秒

URIEncoding="UTF-8"/>//指定對URI使用UTF-8編碼Apache與Tomcat2024年5月30日93CreativeCommonsLicense(BY-NC-SA)反向代理簡介反向代理(ReverseProxy)服務器是指用代理服務器來接受來自Internet上的連接請求,然后將請求轉發(fā)給內(nèi)部網(wǎng)絡上的應用服務器(Web/Mail服務器等);并將從應用服務器上得到的響應結果返回給請求連接的客戶端。反向代理服務器對客戶來說表現(xiàn)為一個應用服務器使用反向代理服務,必須將被代理的后端應用服務器的DNS解析指向反向代理服務器2024年5月30日CreativeCommonsLicense(BY-NC-SA)94代理服務器與反向代理服務器2024年5月30日CreativeCommonsLicense(BY-NC-SA)95反向代理的處理步驟步驟1:Web客戶端的Web請求發(fā)送給反向代理服務器。步驟2:反向代理服務器接到客戶端的請求后將其轉發(fā)給后端的Web應用服務器。大多數(shù)反向代理服務器具有緩存功能。若反向代理服務器啟用了緩存功能,則反向代理服務器接到客戶端的請求后首先在自己的緩存中查找是否緩存過與之對應的響應,若找到相應的緩存對象且未失效則直接將其返回給客戶端;否則將請求轉發(fā)給后端的Web應用服務器。2024年5月30日CreativeCommonsLicense(BY-NC-SA)96反向代理的處理步驟(續(xù))步驟3:后端Web應用服務器接到反向代理服務器的Web請求,Web服務器經(jīng)過處理將響應發(fā)送給反向代理服務器。步驟4:反向代理服務器接到后端的Web應用服務器發(fā)來的響應后將其發(fā)送給客戶端。若反向代理服務器啟用了緩存功能,同時還會在其自己的緩存中保留一份響應結果,以加快相同請求的后續(xù)訪問。2024年5月30日CreativeCommonsLicense(BY-NC-SA)97反向代理的優(yōu)缺點優(yōu)點反向代理作為后臺應用服務器的替身,大大地提高了安全性,保護了敏感信息不外泄缺點反向代理作為后臺應用服務器的替身,一旦其宕機便無法對外提供服務。為了避免反向代理成為單點故障,通常的做法是架設兩臺或兩臺以上的反向代理服務器,使用高可用技術(如:Keepalive、Heartbeat等)實現(xiàn)故障切換。2024年5月30日CreativeCommonsLicense(BY-NC-SA)98Apache的代理支持Apache通過mod_proxy模塊提供代理支持,它既支持正向代理也支持反向代理通過模塊實現(xiàn)各種協(xié)議/方案的代理功能mod_proxy_http:支持HTTP協(xié)議mod_proxy_connect:支持HTTP協(xié)議的CONNECT方法,用于SSL請求mod_proxy_ftp:支持FTP協(xié)議mod_proxy_ajp:支持AJP13(ApacheJServeProtocolversion1.3)協(xié)議mod_proxy_fcgi:支持FastCGImod_proxy_scgi:支持SCGImod_proxy_wstunnel:支持WebSocket協(xié)議2024年5月30日CreativeCommonsLicense(BY-NC-SA)99Apache與代理相關的配置指令ProxyRequestsProxyPreserveHostProxyPassProxyPassMatchProxyPassReverse<Proxy></Proxy><ProxyMatch></ProxyMatch>2024年5月30日CreativeCommonsLicense(BY-NC-SA)100使用Apache反向代理HTTP2024年5月30日CreativeCommonsLicense(BY-NC-SA)101<VirtualHost_default_:80>DocumentRoot/var/www/htmlServerNamewww.olabs.lan

ProxyRequestsOff //關閉正向代理ProxyPreserveHostOn<Proxyhttp://www.olabs.lan> //允許對http://www.olabs.lan的訪問使用代理AllowOverrideNoneRequireallgranted</Proxy>ProxyPass/8848/http://www.olabs.lan:8848/ProxyPassReverse/8848/http://www.olabs.lan:8848/</VirtualHost>使用Apache反向代理Tomcat2024年5月30日CreativeCommonsLicense(BY-NC-SA)102<VirtualHost_default_:80>DocumentRoot/var/www/htmlServerNamewww.olabs.lan…………Alias/docs/usr/share/tomcat/webapps/docs<Directory/usr/share/tomcat/webapps/docs>OptionsIndexesFollowSymlinksRequireallgranted

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論