天天看點

LAMP基本概念以及在單台主機上實作wordpress基于LAMP的安裝

    lamp基本架構以及在單台主機上實作wordpress基于lamp的安裝

-----------------------------------------------------------------------------------------------------------------------------------------------

一、lamp架構

1、lamp

    l: linux

    a: apache (httpd)

    m: mysql, mariadb

    m:memcached

    p: php, perl, python

2、web資源類型:

靜态資源:原始形式與響應内容一緻,在用戶端浏覽器執行

動态資源:原始形式通常為程式檔案,需要在伺服器端執行之後,将執行結果傳回給用戶端

3、web相關語言

用戶端技術:html,javascript,css,jpg

伺服器端技術:php,jsp,python,asp

二、cgi

1、cgi:common gateway interface,公共網關接口,可以讓一個用戶端,從網頁浏覽器通過http伺服器向執行在網絡伺服器上的程式傳輸資料,它描述了用戶端和伺服器程式之間傳輸的一種标準,比如說通過浏覽器注冊某網站使用者,該操作通過cgi接口連接配接到該網站的資料庫并且新增了一條使用者記錄

2、請求流程:

client --(httpd) --> httpd--(cgi) --> application server (program file) --(mysql) --> mysql

3、php: 腳本程式設計語言、嵌入到html中的嵌入式web程式語言

基于zend編譯成opcode(二進制格式的位元組碼,重複運作,可省略編譯環境)

三、工作原理

LAMP基本概念以及在單台主機上實作wordpress基于LAMP的安裝

四、php配置

php:腳本語言解釋器

1、配置檔案:/etc/php.ini, /etc/php.d/*.ini

2、配置檔案在php解釋器啟動時被讀取

3、對配置檔案的修改生效方法

modules:重新開機httpd服務

fastcgi:重新開機php-fpm服務

4、/etc/php.ini,php主配置檔案格式:

[foo]:section header

directive = value

注釋符:較新的版本中,已經完全使用;進行注釋

#:純粹的注釋資訊

;:用于注釋可啟用的directive

5、php主配置檔案說明項

max_execution_time= 30 最長執行時間30s,運作多久後還未結束認為逾時,可适當調短

max_input_time = 60 上傳多長時間算逾時,使用者多久不寫東西算逾時

memory_limit 128m 記憶體可使用多大,生産不夠,根據實際情況可調大

display_errors off 調試使用,不要打開,否則可能暴露重要資訊

display_startup_errors off 啟動時是否顯示錯誤提示,建議關閉

post_max_size 8m 使用者上傳時總共上傳最大資料大小,生産可能臨時要調大,比下面項要大

upload_max_filesize 2m 使用者上傳檔案時單個檔案上傳資料大小,隻是檔案,生産可能要調大

max_file_uploads = 20 同時上傳最多檔案數

date.timezone = asia/shanghai 指定時區

short_open_tag = on 開啟短标簽,如<? phpinfo();?>

五、php的加速器

1、php的加速器:基于php的特殊擴充機制如opcode緩存擴充也可以将opcode緩存于php的共享記憶體中,進而可以讓同一段代碼的後續重複執行時跳過編譯階段以提高性能。這些加速器并非真正提高了opcode的運作速度,而僅是通過分析opcode後并将它們重新排列以達到快速執行的目的

2、常見的php加速器有:

(1)apc (alternative php cache),遵循php license的開源架構,php opcode緩存加速器,目前的版本不适用于php 5.4項目位址。

(2)eaccelerator,源于turckmmcache,早期的版本包含了一個php encoder和php loader,目前encoder已經不在支援。

(3)xcache快速而且穩定的php opcode緩存,經過嚴格測試且被大量用于生産環境,收錄epel源,現常用此加速器

(4)zend optimizer和zend guard loader,zend optimizer并非一個opcode加速器,它是由zend technologies為php5.2及以前的版本提供的一個免費、閉源的php擴充,其能夠運作由zend guard生成的加密的php代碼或模糊代碼。而zend guard loader則是專為php5.3提供的類似于zend optimizer功能的擴充。

(5)nuspherephpexpress,nusphere的一款開源php加速器,它支援裝載通過nuspherephp encoder編碼的php程式檔案,并能夠實作對正常php檔案的執行加速。

六、lamp

(1)httpd:接收使用者的web請求;靜态資源則直接響應;動态資源為php腳本,對此類資源的請求将交由php來運作

(2)php:運作php程式

(3)mariadb:資料管理系統

2、http與php結合的方式

php沒有獨立的程序,它隻是附加在httpd上的一個獨立子產品

cgi

fastcgi

modules (将php編譯成為httpd的子產品,預設方式)

mpm:

prefork: libphp5.so

event, worker: libphp5-zts.so

3、部署環境

centos 7:

modules:httpd, php, php-mysql, mariadb-server

fastcgi:httpd, php-fpm, php-mysql, mariadb-server

centos 6:

modules:httpd, php, php-mysql, mysql-server

fastcgi:預設不支援

4、用pdo(php data object)擴充連接配接資料庫

在httpd目錄下,預設/var/www/html,建立*.php檔案并複制以下内容,對資料庫測試是否連通

<?php

try {

$user='root';

$pass='chenux';

$dbh= new pdo('mysql:host=192.168.239.70;dbname=mysql', $user, $pass);

foreach($dbh->query('select user,host from user') as $row) {

print_r($row);

}

$dbh= null;

} catch (pdoexception$e) {

print "error!: " . $e->getmessage() . "<br/>";

die();

?>

LAMP基本概念以及在單台主機上實作wordpress基于LAMP的安裝

測試結果成功

LAMP基本概念以及在單台主機上實作wordpress基于LAMP的安裝

七、常見lamp應用

1、phpmyadmin、wordpress、phpwind、crossday discuz! board、ecshop

2、phpmyadmin:www.phpmyadmin.net/downloads/

yum -y install httpdmariadb-server phpphp-mysql

systemctlstart httpd

systemctlstart mariadb

mysql_secure_installation

下載下傳:https://www.phpmyadmin.net/downloads/

tar xvf phpmyadmin-4.0.10.20-all-languages.tar.xz cd /var/www/html

cd phpadmin/

cp config.sample.inc.phpconfig.inc.php

yum -y install php-mbstring

systemctl reload httpd

3、wordpress安裝:

(1)cn.wordpress.org,下載下傳wordpress-version-zh_cn.zip,

(2)unzip wordpress-version-zh_cn.zip 至網站目錄下

(3)建立wordpress資料庫,并建立wordpress使用的資料使用者

mysql>create database wpdb;

mysql> grant all privileges on wpdb.* to wpuser@'%' identified by 'wppass'

LAMP基本概念以及在單台主機上實作wordpress基于LAMP的安裝

(4)進入wordpress目錄,cp wp-config-sample.php wp-config.php

進行修改

LAMP基本概念以及在單台主機上實作wordpress基于LAMP的安裝

(5)打開http://server/wordpress進行頁面安裝

LAMP基本概念以及在單台主機上實作wordpress基于LAMP的安裝

按剛建立的填寫

LAMP基本概念以及在單台主機上實作wordpress基于LAMP的安裝

開始安裝

LAMP基本概念以及在單台主機上實作wordpress基于LAMP的安裝

繼續填寫

LAMP基本概念以及在單台主機上實作wordpress基于LAMP的安裝

完成後登陸

LAMP基本概念以及在單台主機上實作wordpress基于LAMP的安裝

(6)注意wordpress目錄權限setfacl -r -m u:apache:rwx wordpress

LAMP基本概念以及在單台主機上實作wordpress基于LAMP的安裝

八、php-fpm模式

1、php配置

配置檔案:/etc/php.ini,/etc/php.d/*.ini

module下,重新開機httpd服務

fastcgi模式下,重新開機php-fpm服務,配置檔案/etc/php-fpm.conf,/etc/php-fpm.d/www.conf

配置檔案格式

配置檔案格式:[foo]:section header

directive=value

注釋符:# 純粹的注釋資訊

; 用于注釋可啟動的指令

說明:在較新的版本中,已經完全使用”;”進行注釋

2、php.ini核心配置的詳細說明:http://php.net/manual/zh/ini.core.php

3、php.ini配置選項清單:http://php.net/manual/zh/ini.list.php

4、fcgi服務配置檔案:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf

5、連接配接池:

pm = static|dynamic

static:固定數量的子程序;pm.max_children

dynamic:子程序數量以動态模式管理

pm.max_children

pm.start_servers

pm.min_spare_servers

pm.max_spare_servers

pm.max_requests= 500

6、確定運作php-fpm程序的使用者對session目錄有讀寫權限

mkdir /var/lib/php/session

chown apache.apache /var/lib/php/session

通路httpd動态資源跳轉到php-fpm服務

(1) 配置httpd,添加/etc/httpd/conf.d/fcgi.conf配置檔案,内容類似

directoryindex index.php

proxyrequests off

proxypassmatch ^/(.*\.php)$ fcgi://phpipsever:9000/var/www/html/$1

注意:在httpd伺服器上必須啟用proxy_fcgi_module子產品,充當php用戶端

httpd–m |grep fcgi

cat /etc/httpd/conf.modules.d/00-proxy.conf

(2) 虛拟主機配置

vim /etc/httpd/conf.d/vhosts.conf

<virtualhost*:80>

servername www.b.net

documentroot /apps/vhosts/b.net

proxypassmatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/apps/vhosts/b.net/$1

<directory "/apps/vhosts/b.net">

options none

allowoverride none

require all granted

</directory>

</virtualhost>

7、php-fpm常見配置,/etc/php-fpm.d/www.conf

daemonize= no //是否将程式運作在背景

listen = 127.0.0.1:9000 //fpm 監聽位址

listen.backlog= -1 //等待隊列的長度-1表示無限制listen.allowed_clients= 127.0.0.1 //僅允許哪些主機通路

LAMP基本概念以及在單台主機上實作wordpress基于LAMP的安裝

pm = dynamic //pm是動态運作還是靜态運作

//static 固定數量的子程序,pm.max_childen

//dynamic子程序資料以動态模式管理

pm.max_children = 500,最大程序數

pm.start_servers = 50,剛開始啟動多少程序

pm.min_spare_servers = 50,最少保留白閑程序

pm.max_spare_servers = 100,最大保留白閑程序

php_value[session.save_handler] = files

php_value[session.save_path] = /var/lib/php/session,設定session存放位置

8、啟動php-fpm:systemctl start php-fpm

9、安裝httpd包:yum install httpd

10、檢視httpdmod_fcgi子產品是否加載

httpd-m | grep fcgi

proxy_fcgi_module(shared)

11、添加fcgi的配置檔案

proxyrequests off //是否開啟正向代理

proxypassmatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1 //開啟fcgi反向代理,//前面的/相對于後面的/var/www/html而言,後面的$1是指前面的/(.*\.php)

12、重新開機httpd:systemctl start httpd

繼續閱讀