Apache web服務器(LAMP架構)


Apache web服務器(LAMP架構) 

apache介紹

 

1).世界上使用率最高的網站服務器,最高時可達70%;官方網站:apache.org

2).http 超文本協議 HTML 超文本標記語言

3).URL 統一資源定位符

http://www.sina.com.cn:80/admin/index.php

http:// -- ssl 安全套接字

www.sina.com.cn -- 域名

:80 -- 端口 http對應80端口,https對應443端口

/admin/index.php -- 網址目錄和文件名

4).LAMP安裝說明

①源碼包安裝  自定義 開發版本選擇方便 效率高

生產環境 安全 穩定

開發環境 局域網(內網)

②二進制包安裝 yum命令安裝 官方版本比較低

Apache的三種工作模式

Apache 一共有3種穩定的 MPM 模式(多進程處理模塊),它們分別是 prefork、worker、event。http-2.2版本的httpd默認的mpm工作模式為prefork,2.4版本的httpd默認是event工作模式。可以通過 httpd -V 來查看。

[root@ken ~]# httpd -V | grep -i "server mpm"
Server MPM:     Prefork

 

編譯的時候,可以通過 configure 的參數來指定:

--with-mpm=prefork|worker|event

1、prefork 工作模式

(作用:用一個進程處理一個用戶請求)

Apache在啟動之初,就預先fork一些子進程,然后等待請求進來。之所以這樣做,是為了減少頻繁創建和銷毀進程的開銷。每個子進程只有一個線程,在一個時間點內,只能處理一個請求。

優點:成熟穩定,兼容所有新老模塊。同時,不需要擔心線程安全的問題。

缺點:一個進程相對占用更多的系統資源,消耗更多的內存。而且,它並不擅長處理高並發請求。

 

2、worker 工作模式

(作用:一個進程生成多個線程,一個線程處理一個用戶請求)

使用了多進程和多線程的混合模式。它也預先fork了幾個子進程(數量比較少),然后每個子進程創建一些線程,同時包括一個監聽線程。每個請求過來,會被分配到1個線程來服務。線程比起進程會更輕量,

因為線程通常會共享父進程的內存空間,因此,內存的占用會減少一些。在高並發的場景下,因為比起prefork有更多的可用線程,表現會更優秀一些。

優點:占據更少的內存,高並發下表現更優秀。

缺點:必須考慮線程安全的問題。

 

3、event 工作模式

(用一個線程處理一個用戶請求)

它和worker模式很像,最大的區別在於,它解決了keep-alive場景下,長期被占用的線程的資源浪費問題。event MPM中,會有一個專門的線程來管理這些keep-alive類型的線程,當有真實請求過來的時候,

將請求傳遞給服務線程,執行完畢后,又允許它釋放。這樣增強了高並發場景下的請求處理能力。

HTTP采用keepalive方式減少TCP連接數量,但是由於需要與服務器線程或進程進行綁定,導致一個繁忙的服務器會消耗完所有的線程。Event MPM是解決這個問題的一種新模型,它把服務進程從連接中分

離出來。在服務器處理速度很快,同時具有非常高的點擊率時,可用的線程數量就是關鍵的資源限 制,此時Event MPM方式是最有效的,但不能在HTTPS訪問下工作。

 

apache基本信息

apache為企業中常用的web服務,用來提供http://(超文本傳輸協議)

主配置目錄:/etc/httpd/conf

主配置文件:/etc/httpd/conf/http.conf

子配置目錄:/etc/httpd/conf.d

子配置文件:/etc/httpd/conf.d/*.conf

默認發布目錄:/var/www/html/

默認發布文件:index.html

默認端口:80

服務器的返回狀態值

(表示請求的是否成功等信息)

1xx:一般不用,就是一些描述信息

2xx:表示請求成功

200:ok,請求下載成功

201:create ok,上傳成功

3xx:表示請求的資源被重定向

301:moved permanently,永久重定向

302:Found,臨時重定向

304:not modified,標識一個緩存的資源是否發生過更改

4xx:請求失敗,因為客戶端原因導致失敗

403:forbidden,表示客戶端沒有權限訪問所請求的資源

404:Not Found,表示客戶端所請求的資源不存在

405:Method Not Allowd:表示客戶端所用的方法不被允許

5xx:請求失敗,因為服務器端原因導致失敗

500:Internal Server Error,服務器內部錯誤

502:Bad Gateway,代理服務器從上游服務器獲取到的是偽響應

503:service unavailable,服務器暫時不可用

 

為什么要編譯安裝

一般來說,我們軟件的安裝方式有yum(rpm),和源碼編譯兩種方式,那么為什么我們需要源碼編譯安裝一部分軟件?選擇源碼編譯安裝軟件有以下幾個原因:

          1:滿足不同的運行平台,我們Linux發型版本眾多,但是每個版本采用的軟件或者內核版本都不一樣,而我們的二進制包所依賴的環境不一定能夠正常運行,所以大部分軟件直接提供源碼!

          2:方便定制,滿足不同的需求,很多時候我們所需要的軟件都是可以定制的,我需要什么就安裝什么,大多數二進制代碼都是一鍵裝全,所以自由度並不高!

          3:方便運維、開發人員維護,我們的源碼是可以打包二進制的,但是對於這個軟件的打包都會有一份代價不小的額外工作,包括維護,所以如果是源碼的話,軟件產商會直接維護,但是如果是二進制的話,一般都是Linux發行商提供!

 

什么是LAMP

LAMP=Linux Apache Mysql/MariaDB PHP/Perl/Python 這些軟件都是開源免費的軟件,幾個程序各自是獨立的,經常為了達到我們需要的效果而協同工作,組成了我們

常見的LAMP架構平台!LAMP是世界上最流行的組合,當然同時也有Nginx,也就是LNMP: LAMP 相對於 NGINX 來說較為安全,但是Nginx處理高並發比Apache要強,

NGINX 相對於 LAMP 來說安全較為差一點,同樣的配制環境負載遠遠高於 LAMP 向國內的一些大公司,淘寶、新浪都在用這一些 NGINX,向那么大的公司網站需要用到服務器群用LAMP搭建環境成本遠遠大於NGINX。打個比方本來1000000W訪問量需要 10台LAMP環境服務器才能完成,但是使用NGINX也許只需要5、6台這樣一來對於這樣的公司來說就大大的節約了成本。

從網站的流量上來說,70%以上的訪問流量是LAMP來提供的,LAMP是最強大的網站解決方案,在以前這句話沒有錯,但是在現在,這句話有待證實!!!因為在以后的過程中,會發現我們會使用的架構是Nginx和Apache結合使用:使用Nginx可以做集群等相關配置,可以和apache一起使用,有的會用apache去跑php,然后用nginx做反向代理,比如apache運行在8080端口,nginx在80端口,訪問php文件時,反向代理到apache,靜態頁通過nginx處理。nginx支持高並發,apache對php的運行比較穩定。

         常見的網頁類型:htm,html,shtml,stm.php,asp,aspx,shtm,jsp等等Apache本事只處理靜態頁面,處理動態頁面需要使用libphp5.so這個模塊去工作,編譯php也其實

是將一個至關重要的模塊打入到apache內部,然后apache收到php請求,將請求交給這個模塊來處理!

 

Apache工作原理

Apache本身只處理html靜態語言頁面,當客戶端需要訪問php頁面的時候,Apache會調用libphp5.so這個模塊去工作,這個模塊會把php頁面轉換成html靜態頁面,讓Apache處理,Apache處理過,會返回給客戶端

 

LAMP相關網站

Apache=http://httpd.apache.org/                                                      httpd主程序包

MySQL=http://dev.mysql.com/downloads/mysql/                          mysql主程序包

PHP=http://php.net/downloads.php                                                 php主程序包

apr=http://apr.apache.org/                                               apr是httpd的依賴包

apr-util=http://apr.apache.org/                               apr-util是httpd的第二個依賴包

apr和apr-util這個兩個軟件是對后端服務軟件進行優化的,

apr-util只是在apr的基礎上提供了更多的數據結構和操作系統封裝接口而已。

 pcre 是httpd的第三個依賴包 http://pcre.org/    

PCRE(Perl Compatible Regular Expressions中文含義:perl語言兼容正則表達式)是一個用C語言編寫的正則表達式函數庫,PCRE被廣泛使用在許多開源軟件之中,最著名的莫過於Apache HTTP服務器和PHP腳本語言、R腳本語言,此外,正如從其名字所能看到的,PCRE也是perl語言的缺省正則庫。

 

 編譯安裝Apache

第一步:安裝依賴包

[root@ken ~]#  yum install gcc gcc-c++ ncurses-devel ncurses pcre pcre-devel openssl-devel zlib-devel -y

 

第二步:上傳安裝包

[root@ken ~]# ls
apr-1.5.2.tar.gz  apr-util-1.5.4.tar.gz  httpd-2.4.20.tar.gz

 

第三步:解壓apr,apr-util安裝包

[root@ken ~]# tar -xf apr-util-1.5.4.tar.gz 
[root@ken ~]# tar -xf apr-1.5.2.tar.gz 

 

第四步:編譯安裝apr

[root@ken ~]# cd apr-1.5.2
[root@ken apr-1.5.2]# ./configure --prefix=/usr/local/apr
[root@ken apr-1.5.2]# make && make install

 

第五步:編譯安裝apr-util

[root@ken apr-1.5.2]# cd ..
[root@ken ~]# cd  apr-util-1.5.4
[root@ken apr-util-1.5.4]# ./configure --with-apr=/usr/local/apr/ --prefix=/usr/local/apr-util 
[root@ken apr-util-1.5.4]# make && make install

 

第六步:安裝apache

[root@ken apr-util-1.5.4]# cd ..
[root@ken ~]# tar xf httpd-2.4.20.tar.gz 
[root@ken ~]# cd httpd-2.4.20
[root@ken httpd-2.4.20]# ./configure \
> --prefix=/usr/local/httpd2.4/ \
> --sysconfdir=/etc/httpd2.4/conf/ \
> --enable-so \
> --enable-ssl \
> --enable-cgi \
> --enable-rewrite \
> --enable-zlib \
> --enable-pcre \
> --with-apr=/usr/local/apr \
> --with-apr-util=/usr/local/apr-util \
> --with-mpm=event \
> --enable-deflate \
> --enable-mpms-shared=all \
> --enable-modules=all && make && make install

 

第七步:啟動apache

[root@ken httpd-2.4.20]# cd /usr/local/httpd2.4/bin/
[root@ken bin]# ls
ab         checkgid   envvars-std   htdbm     httpd       rotatelogs
apachectl  dbmmanage  fcgistarter   htdigest  httxt2dbm
apxs       envvars    htcacheclean  htpasswd  logresolve
[root@ken bin]# ./apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe13:a149. Set the 'ServerName' directive globally to suppress this message     
[root@ken bin]# ss -tnl | grep 80
LISTEN     0      128         :::80                      :::*               

 

第八步:瀏覽器訪問

輸入Linux主機IP地址即可訪問

使用apache部署京東網站(靜態網站)

 

第一步:關閉防火牆

[root@ken ~]# setenforce 0
[root@ken ~]# systemctl stop firewalld

 

第二步:下載httpd

[root@ken ~]# yum install httpd -y

 

第三步:上傳京東安裝包至網站根目錄之下

[root@ken ~]# cd /var/www/html/
[root@ken html]# ls
[root@ken html]# rz

[root@ken html]# ls
jd.zip
[root@ken html]# 

 

第四步:下載unzip並解壓

[root@ken html]# yum install unzip -y
[root@ken html]# unzip jd.zip

 [root@ken html]# ls
 jd jd.zip

 

第五步:啟動httpd

[root@ken html]# systemctl restart httpd

 

第六步:瀏覽器訪問

 

 

 

 yum一鍵安裝LAMP架構

 

[root@ken ~]# yum install httpd mariadb-server php php-mysql -y

php-mysql用於php與數據庫的通信

 

 基於LAMP架構上線博客系統(動態網站)

 

第一步:安裝LAMP

[root@ken ~]# yum install httpd mariadb-server php php-mysql -y

 

第二步:啟動數據庫並創建數據庫

[root@ken ~]# mysql
...
mysql> create database ken;                      #創建數據庫ken
Query OK, 1 row affected (0.00 sec)

mysql> grant all on ken.* to ken@"localhost" identified by "123";  #創建用戶ken,密碼為123
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;                     #刷新授權表
Query OK, 0 rows affected (0.00 sec)

 

第三步:准備wordpress安裝包

[root@ken ~]# cd /var/www/html
[root@ken html]# rz
z waiting to receive.**B0100000023be50
[root@ken html]# ls
wordpress-3.3.1-zh_CN.zip
[root@ken html]# yum install unzip -y
[root@ken html]# unzip wordpress-3.3.1-zh_CN.zip
[root@ken html]# ls
wordpress  wordpress-3.3.1-zh_CN.zip

 

第四步:配置wordpress

[root@ken html]# cd wordpress
[root@ken wordpress]# cp wp-config-sample.php wp-config.php 
[root@ken wordpress]# vim wp-config.php
...
// ** MySQL 設置 - 具體信息來自您正在使用的主機 ** //
/** WordPress 數據庫的名稱 */
define('DB_NAME', 'ken');           #填寫數據庫名

/** MySQL 數據庫用戶名 */
define('DB_USER', 'ken');           #填寫數據庫用戶名

/** MySQL 數據庫密碼 */
define('DB_PASSWORD', '123');       #數據庫密碼

/** MySQL 主機 */
define('DB_HOST', 'localhost');     #主機名
...

 

第五步:重啟httpd服務

[root@ken ~]# systemctl restart httpd

 

第六步:瀏覽器測試

電腦瀏覽器輸入IP/wordpress/index.php

 

輸入用戶名和密碼

 

登錄成功

 

 -----本文借鑒於技術大牛Ken
標注以示感謝!!!
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM