LAMP是什么?
LAMP,也就是Linux-Apache-MySQL-PHP的簡稱。
這里我們需要了解兩個概念,靜態資源
和動態資源
。
靜態資源一般是用HTML編寫的網頁,實際上是一個文本文件。
靜態內容通過瀏覽器的輔助而展示出我們所看到的網站的內容。如網站布局等。
動態資源則是需要特定的解釋器翻譯之后,通過服務器運行,最后返回給用戶的結果。
在訪問一個PHP網站時,假如我們需要登錄賬號,這部分則是由PHP完成,而賬號密碼則保存在MySQL里面。
假如用戶在php網站請求登錄,請求順序是這樣的:
Apache有什么特色?
其實我們可以從他的名字中來理解他的一個最經典的特性。
Apache,原意為A Patchy Server。
意思是,一個打補丁、拼湊而成的服務器。
他主要的特點,就是支持DSO。Dynamic Shared Object
意思就是動態加載模塊的意思。
配置文件中通過加入LoadModule <模塊名字> <模塊路徑>
來調用模塊。
因為這樣調用模塊真的很方便,當時有許多人為Apache服務器編寫模塊文件。
這一點跟Nginx就有很大的不同,Nginx如果需要添加第三方模塊,是要重新編譯的。
另外,Apache支持MPM。Multipath Processing Modules
一般可以叫作:多路處理模塊。
他有兩種較為常用的模式:
Prefork模式:
我們可以拆開這個詞來理解他的特性,Pre-Fork。
Fork在英文里面其實就是產生子進程的意思。
Pre在英文中常有預先
的意思,例如Preview的意思則是預演。
Prefork模式的特點:
在空閑時通過預先產生多個子進程,通過進程來接受用戶的請求。
一般認為此種模式的好處有兩個:
a.假如平時流量少,但有突如其來的并發請求,Prefork模式可以更好地應對。
因為避免了在響應請求時,為了加大響應量再產生大量進程,而對資源產生額外的開銷。
b.而在進程因為某些原因崩潰的時候,不會影響到其他的進程。
注意:PHP一般都需要運行在Prefork模式下。
Worker模式的特點:
相對于Prefork模式,Worker模式也有使用子進程的概念。
但是Worker的特色在于他在進程內部產生多個線程,使用線程來處理請求。
一般認為worker模式的好處在于:
a.使用線程來響應,能夠接受更多的請求。
所以在并發的性能上,Worker模式的性能比Prefork模式更好。
b.使用線程,開銷比使用進程要小。
但是相比較于Prefork模型,由于使用了線程,穩定性不如Prefork。
因為當線程出現問題的時候,所在進程也會受到影響。
由于Apache的網絡IO模型的原因,Prefork模式和Worker模式最多同時響應1024個請求。
使用LAMP架設一個WordPress個人博客
這一次由于在單機上面操作,并沒有拓撲圖。
本文的實驗中,系統使用CentOS7.1,數據庫:MariaDB-5.5.50
注意:實驗中關閉了selinux,以及iptables。
(1)安裝LAMP具體的包
[root@node3 ~]yum install httpd mariadb-server mariadb php php-mysql
httpd是Apache的程序名字。MariaDB-server負責MySQL的數據存儲
php組件用于解析php請求,php-mysql組件用于php于mariadb交互。
(2)啟動Apache和MySQL服務并設置為開機啟動。
[root@node3 ~]# systemctl start mariadb.service
[root@node3 ~]# systemctl start httpd.service
[root@node3 ~]# systemctl enable mariadb.service
[root@node3 ~]# systemctl enable httpd.service
(3)查看httpd是否正常運行
當什么網站都沒有的時候,在瀏覽器中輸入IP地址就會出現一個測試頁.
證明Apache運行正常
(4)到官方網站下載WordPress,并解壓到特定目錄。
官方網站的下載地址很明顯,可以直接在機器上使用wget命令。
a.下載
[root@node3 ~]# wget https://wordpress.org/latest.tar.gz
--2016-12-11 15:56:17-- https://wordpress.org/latest.tar.gz
Resolving wordpress.org (wordpress.org)... 66.155.40.249, 66.155.40.250
Connecting to wordpress.org (wordpress.org)|66.155.40.249|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7993186 (7.6M) [application/octet-stream]
Saving to: ‘latest.tar.gz’
100%[======================================================>] 7,993,186 36.1KB/s in 2m 36s
b.解壓
[root@node3 ~]# tar xvf /root/latest.tar.gz -C /var/www/html/
(5)修改文件屬主
[root@node3 ~]# chown -R apache.apache /var/www/html/wordpress/
[root@node3 ~]# ll !$
ll /var/www/html/wordpress/
total 184
-rw-r--r--. 1 apache apache 418 Sep 25 2013 index.php
-rw-r--r--. 1 apache apache 19935 Mar 6 2016 license.txt
-rw-r--r--. 1 apache apache 7433 Dec 2 15:04 readme.html
-rw-r--r--. 1 apache apache 5447 Sep 28 05:36 wp-activate.php
drwxr-xr-x. 9 apache apache 4096 Dec 7 02:40 wp-admin
-rw-r--r--. 1 apache apache 364 Dec 19 2015 wp-blog-header.php
-rw-r--r--. 1 apache apache 1627 Aug 29 20:00 wp-comments-post.php
-rw-r--r--. 1 apache apache 2853 Dec 16 2015 wp-config-sample.php
drwxr-xr-x. 4 apache apache 49 Dec 7 02:40 wp-content
-rw-r--r--. 1 apache apache 3286 May 25 2015 wp-cron.php
drwxr-xr-x. 18 apache apache 8192 Dec 7 02:40 wp-includes
-rw-r--r--. 1 apache apache 2422 Nov 21 10:46 wp-links-opml.php
-rw-r--r--. 1 apache apache 3301 Oct 25 11:15 wp-load.php
-rw-r--r--. 1 apache apache 33939 Nov 21 10:46 wp-login.php
-rw-r--r--. 1 apache apache 7841 Nov 21 10:46 wp-mail.php
-rw-r--r--. 1 apache apache 16250 Nov 29 13:39 wp-settings.php
-rw-r--r--. 1 apache apache 29896 Oct 19 12:47 wp-signup.php
-rw-r--r--. 1 apache apache 4513 Oct 15 03:39 wp-trackback.php
-rw-r--r--. 1 apache apache 3065 Sep 1 00:31 xmlrpc.php
因為httpd.conf中定義了用戶和組,所以需要將網站文件的屬主屬組都改為對應用戶``默認都是apache
(6)數據庫創建一個數據庫,并授權一個用戶。
[root@node3 ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.50-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on wordpress.* to 'wordpress'@'%' identified by 'wordpress';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]>
(7)修改httpd的配置文件,將網站設置為虛擬主機。
<VirtualHost *:80>
DocumentRoot /var/www/html/wordpress/
ServerName node3.bc.com
ErrorLog "/var/log/httpd/node3-err_log"
CustomLog "/var/log/httpd/node3-access_log" common
</VirtualHost>
(8)圖形化界面,設置mysql地址,主機地址和密碼。
有兩種方式,任選其一。
a.直接配置安裝wordpress。
配置文件在網站根目錄下,此處為/var/www/html/wordpress/wp-config.php
vim /var/www/html/wordpress/wp-config.php
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'wordpress');
/** MySQL database password */
define('DB_PASSWORD', 'wordpress');
/** MySQL hostname */
define('DB_HOST', '192.168.2.203');
/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8mb4');
/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');
b.也可以直接在瀏覽器上面訪問主機地址
至此,我們已經成功地安裝LAMP并架設了一個十分常用的個人博客。
下一篇文章,我們將會比較Apache和Nginx,并用Nginx搭建一個phpMyAdmin。