LAMP基本概念以及在單臺主機上實現wordpress基於LAMP的安裝

    LAMP基本架構以及在單臺主機上實現wordpress基於LAMP的安裝javascript

-----------------------------------------------------------------------------------------------------------------------------------------------
php

1、Lamp架構css

一、LAMPhtml

    L: linuxjava

    A: apache (httpd)python

    M: mysql, mariadbmysql

    M:memcachedlinux

    P: php, perl, pythonweb

二、WEB資源類型:sql

靜態資源:原始形式與響應內容一致,在客戶端瀏覽器執行

動態資源:原始形式一般爲程序文件,須要在服務器端執行以後,將執行結果返回給客戶端

三、web相關語言

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

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

2、CGI

一、CGI:Common Gateway Interface,公共網關接口,可讓一個客戶端,從網頁瀏覽器經過http服務器向執行在網絡服務器上的程序傳輸數據,它描述了客戶端和服務器程序之間傳輸的一種標準,好比說經過瀏覽器註冊某網站用戶,該操做經過CGI接口鏈接到該網站的數據庫而且新增了一條用戶記錄

二、請求流程:

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

三、php: 腳本編程語言、嵌入到html中的嵌入式web程序語言

基於zend編譯成opcode(二進制格式的字節碼,重複運行,可省略編譯環境)

3、工做原理

image.png

4、php配置

php:腳本語言解釋器

一、配置文件:/etc/php.ini, /etc/php.d/*.ini

二、配置文件在php解釋器啓動時被讀取

三、對配置文件的修改生效方法

Modules:重啓httpd服務

FastCGI:重啓php-fpm服務

四、/etc/php.ini,php主配置文件格式:

[foo]:Section Header

directive = value

註釋符:較新的版本中,已經徹底使用;進行註釋

#:純粹的註釋信息

;:用於註釋可啓用的directive

五、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();?>

5、php的加速器

一、php的加速器:基於PHP的特殊擴展機制如opcode緩存擴展也能夠將opcode緩存於php的共享內存中,從而可讓同一段代碼的後續重複執行時跳過編譯階段以提升性能。這些加速器並不是真正提升了opcode的運行速度,而僅是經過分析opcode後並將它們從新排列以達到快速執行的目的

二、常見的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文件的執行加速。

6、LAMP

一、LAMP

(1)httpd:接收用戶的web請求;靜態資源則直接響應;動態資源爲php腳本,對此類資源的請求將交由php來運行

(2)php:運行php程序

(3)MariaDB:數據管理系統

二、http與php結合的方式

php沒有獨立的進程,它只是附加在httpd上的一個獨立模塊

CGI

FastCGI

modules (將php編譯成爲httpd的模塊,默認方式)

MPM:

prefork: libphp5.so

event, worker: libphp5-zts.so

三、部署環境

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:默認不支持

四、用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();

}

?>

image.png

測試結果成功

image.png

7、常見LAMP應用

一、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

三、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'

image.png

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

進行修改

image.png

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

image.png

按剛建立的填寫

image.png

開始安裝

image.png

繼續填寫

image.png

完成後登錄

image.png

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

image.png

8、php-fpm模式

一、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

註釋符:# 純粹的註釋信息

; 用於註釋可啓動的指令

說明:在較新的版本中,已經徹底使用」;」進行註釋

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

三、Php.ini配置選項列表:http://php.net/manual/zh/ini.list.php

四、fcgi服務配置文件:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf

五、鏈接池:

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

六、確保運行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

DirectoryIndex index.php

<VirtualHost*:80>

ServerName www.b.net

DocumentRoot /apps/vhosts/b.net

ProxyRequests Off

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>

七、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 //僅容許哪些主機訪問

image.png

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,最大保留空閒進程

pm.max_requests= 500

php_value[session.save_handler] = files

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

八、啓動PHP-FPM:systemctl start php-fpm

九、安裝httpd包:yum install httpd

十、查看Httpdmod_fcgi模塊是否加載

httpd-M | grep fcgi

proxy_fcgi_module(shared)

十一、添加FCGI的配置文件

DirectoryIndex index.php

ProxyRequests off //是否開啓正向代理

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

十二、重啓Httpd:systemctl start httpd

相關文章
相關標籤/搜索