更多內容請點擊:javascript
Linux學習從入門到打死也不放棄,徹底筆記整理(持續更新,求收藏,求點贊~~~~)
php
https://blog.51cto.com/13683480/2095439html
第24章,實現LAMP架構java
本章內容:python
LAMP介紹mysql
PHP介紹與配置linux
module方式實現LAMP程序員
php-fpm方式實現LAMPweb
部署phpmyadminsql
部署wordpress
部署discuz!
實現php的 Xcache加速
源碼編譯:安裝LAMP
LAMP介紹:
LAM(M)P 含義:
L:linux
A:apache(httpd)
M: mysql,mariadb
(M): memcached
P: php,perl,python
WEB資源類型:
靜態資源:原始形式與相應內容一致,在客戶端瀏覽器執行
動態資源:原始形式一般爲程序文件,須要在服務器端執行以後,將執行結果
返回給客戶端
WEB相關術語:
客戶端技術:html,javascript
服務器端技術:php,jsp,python,asp
CGI:Common Gateway Interface
可讓一個客戶端,從網頁瀏覽器經過http服務器向執行在網絡服務器上的
程序傳輸數據
CGI描述了客戶端和服務器程序之間的一種標準
請求流程:
Client --(httpd)--> httpd --(cgi) -->
application server(program file)--(mysql) --> mysql
php:
腳本編程語言,嵌入到html中的嵌入式web程序語言
基於zend編譯成opcode(二進制格式的字節碼,重複運行,可省略編譯環境)
PHP簡介:
官網:http://www.php.net/
PHP是通用服務器端腳本編程語言,主要用於web開發實現動態web頁面,也是最先實現將腳
本嵌入HTML源碼文檔中的服務器端腳本語言之一。同時,php還提供了一個命令行接口,所以,
其也能夠在大多數系統上做爲一個獨立的shell來使用
Rasmus Lerdorf於1994年開始開發PHP,它是初是一組被Rasmus Lerdorf稱做「Personal
Home Page Tool」 的Perl腳本, 這些腳本能夠用於顯示做者的簡歷並記錄用戶對其網站的訪
問。後來,Rasmus Lerdorf使用C語言將這些Perl腳本重寫爲CGI程序,還爲其增長了運行Web
forms的能力以及與數據庫交互的特性,並將其重命名爲「Personal Home Page/Forms
Interpreter」或「PHP/FI」。此時,PHP/FI已經能夠用於開發簡單的動態web程序了,這即
PHP1.0。1995年6月,Rasmus Lerdorf把它的PHP發佈於
comp.infosystems.www.authoring.cgi Usenet討論組,今後PHP開始走進人們的視野。1997
年,其2.0版本發佈。
1997年,兩名以色列程序員Zeev Suraski和Andi Gutmans重寫的PHP的分析器(parser)成爲
PHP發展到3.0的基礎,並且今後將PHP重命名爲PHP: Hypertext Preprocessor。此後,這兩
名程序員開始重寫整個PHP核心,並於1999年發佈了Zend Engine 1.0,這也意味着PHP 4.0的
誕生。2004年7月,Zend Engine 2.0發佈,由此也將PHP帶入了PHP 5時代。PHP5包含了許
多重要的新特性,如加強的面向對象編程的支持、支持PDO(PHP Data Objects)擴展機制以及
一系列對PHP性能的改進
Zend Engine是開源的、PHP腳本語言的解釋器,它最先是由以色列理工學院
(Technion)的學生Andi Gutmans和Zeev Suraski所開發,Zend也正是此二人
名字的合稱。後來兩人聯合創立了Zend Technologies公司
Zend Engine 1.0於1999年隨PHP 4發佈,由C語言開發且通過高度優化,並能
夠作爲PHP的後端模塊使用。Zend Engine爲PHP提供了內存和資源管理的功
能以及其它的一些標準服務,其高性能、可靠性和可擴展性在促進PHP成爲一
種流行的語言方面發揮了重要做用
Zend Engine的出現將PHP代碼的處理過程分紅了兩個階段:首先是分析PHP
代碼並將其轉換爲稱做Zend opcode的二進制格式(相似Java的字節碼),並將
其存儲於內存中;第二階段是使用Zend Engine去執行這些轉換後的Opcode
Opcode是一種PHP腳本編譯後的中間語言,相似於Java的ByteCode,或
者.NET的MSL。PHP執行PHP腳本代碼通常會通過以下4個步驟(確切的來講,
應該是PHP的語言引擎Zend)
一、Scanning 詞法分析,將PHP代碼轉換爲語言片斷(Tokens)
二、Parsing 語義分析,將Tokens轉換成簡單而有意義的表達式
三、Compilation 將表達式編譯成Opocdes
四、Execution 順次執行Opcodes,每次一條,從而實現PHP腳本的功能
掃描-->分析-->編譯-->執行
php配置:
php:腳本語言解釋器
配置文件:
/etc/php.ini,/etc/php.d/*.ini
配置文件在php解釋器啓動時被讀取
對配置文件的修改生效方式:
modules:重啓httpd服務
FastCGI:重啓php-fpm服務
/etc/php.ini 配置文件格式:
[foo]:Section Header
directive = value
註釋符:較新的版本中,已經徹底使用;進行註釋
# 純粹的註釋信息
; 用於註釋可啓用的directive
經常使用配置指令:
max_execution_time= 30 最長執行時間30s
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.ini的核心配置選項文檔:
http://php.net/manual/zh/ini.core.php
php.ini配置選項列表
http://php.net/manual/zh/ini.list.php
php語言格式:
<?php
...php code
?>
php的加速器:
php的加速器:基於PHP的特殊擴展機制如opcode緩存擴展也能夠將opcode
緩存於php的共享內存中,從而可讓同一段代碼的後續重複執行時跳過編譯
階段以提升性能。這些加速器並不是真正提升了opcode的運行速度,而僅是經過
分析opcode後並將它們從新排列以達到快速執行的目的
常見的php加速器有:
一、APC (Alternative PHP Cache)
遵循PHP License的開源框架,PHP opcode緩存加速器,目前的版本不適用於
PHP 5.4
項目地址http://pecl.php.net/package/APC
二、eAccelerator
源於Turck MMCache,早期的版本包含了一個PHP encoder和PHP loader,
目前encoder已經不在支持。項目地址 http://eaccelerator.net/
三、XCache
快速並且穩定的PHP opcode緩存,通過嚴格測試且被大量用於生產環境。項
目地址:http://xcache.lighttpd.net/,收錄EPEL源
四、Zend Optimizer和Zend Guard Loader
Zend Optimizer並不是一個opcode加速器,它是由Zend Technologies爲
PHP5.2及之前的版本提供的一個免費、閉源的PHP擴展,其可以運行由Zend
Guard生成的加密的PHP代碼或模糊代碼。 而Zend Guard Loader則是專爲
PHP5.3提供的相似於Zend Optimizer功能的擴展。項目地址
http://www.zend.com/en/products/guard/runtime-decoders
五、NuSphere PhpExpress
NuSphere的一款開源PHP加速器,它支持裝載經過NuSphere PHP Encoder
編碼的PHP程序文件,並可以實現對常規PHP文件的執行加速。項目地址,
http://www.nusphere.com/products/phpexpress.htm
---------------------------------------------------------------------------
部署LAMP:
httpd:接收用戶的web請求;靜態資源則直接響應;動態資源爲php腳本,
對此類資源的請求將交由php來運行
php:運行php程序
MariaDB:數據管理系統
http與php結合的方式
CGI
FastCGI:php-fpm
modules:php (將php編譯成爲httpd的模塊,默認方式)
MPM:
prefork : libphp5.so
event, worker: libphp5-zts.so
centos7:
modules:httpd, php, php-mysql, mariadb-server
FastCGI:httpd,php-fpm,php-mysql,mariadb-server
centos6:
modules:httpd,php,php-mysql,mysql-server
默認不支持FastCGI
安裝LAMP:
CentOS 6:
yum install httpd php mysql-server php-mysql
service httpd start
service mysqld start
CentOS 7:
yum install httpd php php-mysql mariadb-server
systemctl start httpd.service
systemctl start mariadb.service
注意:要使用prefork模型
測試php是否正常鏈接:
vim /var/www/html/index.php
<?php
echo date("Y/m/d H:i:s");
phpinfo();
?>
php使用mysql擴展鏈接數據庫
只能鏈接mysql數據庫
注意:php7 已啓用此函數
1 執行 mysql_secure_installation 設置root 密碼
2 登陸mysql 添加受權帳號:
GRANT ALL ON *.* TO 'user1'@'192.168.65.%' IDENTIFIED BY 'centos';
3 編寫測試文件:
vim /var/www/html/mysql.php
<?php
#$conn = mysql_connect( 'servername','user','password');
$conn = mysql_connect( '127.0.0.1','user1','centos');
if($conn)
echo "OK";
else
echo "Failure";
echo mysql_error();
mysql_close();
?>
或者
<?php
$conn = mysql_connect( '192.168.65.132','user1','centos');
if($conn)
echo "OK";
else
echo "Failure";
echo mysql_error();
mysql_close();
?>
4 瀏覽器輸入 192.168.65.132/mysql.php 訪問測試
php使用mysqli擴展鏈接數據庫
只能鏈接mysql數據庫
vim /var/www/html/mysql2.php
<?php
$mysqli=new mysqli('192.168.65.155','user1','centos');
if(mysqli_connect_errno()){
echo "Failure";
$mysqli=null;
exit;
}
echo "OK";
$mysqli->close();
?>
php使用pdo擴展鏈接數據庫
能夠鏈接主流各類數據庫
代碼1
vim /var/www/html/mysql3.php
<?php
$dsn='mysql:host=localhost;dbname=mysql';
$username='root';
$passwd='centos';
$dbh=new PDO($dsn,$username,$passwd);
var_dump($dbh);
?>
代碼2
vim /var/www/html/mysql4.php
<?php
try {
$user='root';
$pass='centos';
$dbh = new PDO('mysql:host=localhost;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應用:
PhpMyAdmin:
是一個以PHP爲基礎,以Web-Base方式架構在網站主機上的MYSQL的數據庫管理工具
讓管理者可用web接口管理Mysql數據庫
WordPress:
是一種使用PHP語言開發的博客平臺,用戶能夠在支持PHP和Mysql數據庫的服務器
上架設屬於本身的網站。也可把Wordpress看成一個內容管理系統(CMS)來使用
PHPWind:
2003年發佈了PHPWind的前身版本ofstar,並發展稱爲包含BBS,CMS,博客,SNS等
一系列程序的通用型建站軟件,於2008年加入阿里巴巴集團
Crossday discuz! Board(簡稱discuz!):
是一套通用的社區論壇軟件系統。自2001年6月面世以來,是全球成熟度最高,覆蓋率
最大的論壇軟件系統之一。
2010年8月23日,與騰訊達成收購協議
ECShop:
是一款B2C獨立網店系統,適合企業及我的快速構建個性化網上商店。系統是基於
PHP語言及MYSQL數據庫架構開發的跨平臺開源程序。
2006年6月,ECShop推出第一個版本1.0
部署phpMyadmin:
1 安裝並啓動lamp
yum install httpd php mariadb-server mysql-server
yum install php-mbstring
systemctl start httpd mariadb
2 執行mysql_secure_installation,設置管理員密碼
3 下載phpmyadmin,注意查看支持的php和數據庫版本
下載地址:
4.0版本,PHP 5.2 and MySQL 5. Does
https://files.phpmyadmin.net/phpMyAdmin/4.0.10.20/phpMyAdmin-4.0.10.20-all-languages.zip
4.8版本,PHP 5.2 and MySQL 5. Does not support PHP 5.5 or newer
https://files.phpmyadmin.net/phpMyAdmin/4.8.2/phpMyAdmin-4.8.2-all-languages.zip
4 解壓並複製到/var/www/html/目錄下
unzip phpMyAdmin-4.3.5-all-languages.zip
cp -a phpMyAdmin-4.3.5-all-languages /var/www/html/mysql
5 準備配置文件
cd /var/www/html/mysql
cp config.sample.inc.php config.inc.php
6 重啓服務
systemctl restart httpd
7 瀏覽器輸入 server-ip/mysql
使用root帳號登陸
部署wordpress:
1 下載軟件:
官網:https://cn.wordpress.org/
wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.zip
2 解壓並複製
unzip wordpress-4.9.4-zh_CN.zip
cp -a wordpress /var/www/html/blog
chown -R apache:apache /var/www/html/blog
3 準備數據庫和帳號
mysql>CREATE DATABASE wordpress
mysql>GRANT ALL ON wordpress.* TO 'wpuser'@'localhost' IDENTIFIED BY 'centos';
4 準備配置文件:
cp wp-config-sample.php wp-config.php
vim wp-config.php
數據庫登陸信息
5 重啓httpd
6 server-ip/blog 登陸執行初始化
部署discuz:
1 下載軟件:
http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip
2 解壓縮並複製的網站目錄下
unzip Discuz_X3.2_SC_UTF8.zip
cp upload/* /data/dz/ -a
chown -R apache:apache /data/dz
3 重啓httpd 並測試訪問
centos7 編譯php-xcache 加速訪問:
官網:http://xcache.lighttpd.net/wiki/ReleaseArchive
安裝方法:
rpm安裝,來自epel源
編譯安裝:
1 裝備環境,安裝開發包組development tools
yum install php-devel
2 下載並解壓縮 xcache-3.2.0.tar.bz2
cd xcache-3.2.0
3 phpize 生成編譯環境
4 ./configure --enable-xcache --with-php-config=/usr/bin/php-config
make && make install
5 cp xcache-3.2.0/xcache.ini /etc/php.d/
systemctl reload httpd
------------------------------------------------------------------------------
fastcgi:
centos6:
PHP-5.3.2以前:默認不支持fpm機制,須要自行打補丁並編譯安裝
httpd2.2:默認不支持fcgi協議,須要自行編譯此模塊
解決方案:編譯安裝http-2.4,php-5.3.3+
centos7:
httpd-2.4:rpm包默認編譯支持fcgi模塊
php-fpm包:專用於將php運行與fpm模式
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 最大處理請求數
daemonize = no //是否將程序運行在後臺
listen = 127.0.0.1:9000 //FPM 監聽地址
listen.backlog = -1 //等待隊列的長度 -1表示無限制
listen.allowed_clients = 127.0.0.1 //僅容許哪些主機訪問
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
確保運行php-fpm 進程的用戶對session目錄有讀寫權限
mkdir /var/lib/php/session
chown apache.apache /var/lib/php/session
centos7,yum實現fastfcgi
同一臺主機:
1 安裝服務並啓動服務
yum install httpd mariadb-server php-fpm php-mysql
systemctl start httpd php-fpm mariadb
2 配置http
確認httpd服務器上必須啓用proxy_fcgi_module模塊,充當php客戶端
httpd -M |grep fcgi
cat /etc/httpd/conf.modules.d/00-proxy.conf
添加/etc/httpd/conf.d/fcgi.conf 配置文件,內容參照
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
3 登陸數據庫添加受權帳號
4 測試鏈接php和mysql鏈接書否正常
不一樣主機:
注意:httpd和php-fpm需爲同一主機
如分別使用不一樣主機,即便使用相同目錄路徑,會致使圖片信息無識別
數據庫最好使用單獨主機,只需在應用程序配置地址,帳號信息便可
----------------------------------------------------------------------------
實現:同一服務器使用虛擬主機配置多應用:
php,module方式:
1 yum install httpd mariadb-server php php-mysql
yum install php-string 安裝phpmyadmin須要此包
註釋掉httpd主配置文件中 documentroot 項
添加配置文件
vim /etc/httpd/conf.d/vhosts.conf
<virtualhost *:80>
servername www.blog.com
documentroot "/data/blog/"
errorlog "/var/log/httpd/error_blog_log"
customlog "/var/log/httpd/access_blog_log" conbined
<directory "/data/blog">
options none
allowoverride none
require all granted
</directory>
alias /pma "/data/pma"
<directory "/data/pma">
options none
allowoverride none
require all granted
</directory>
</virtualhost>
<virtualhost *:80>
servername www.dz.com
documentroot "/data/dz"
errorlog "/var/log/httpd/error_dz_log"
customlog "/var/log/httpd/access_dz_log" conbined
<directory "/data/dz">
options none
allowoverride none
require all granted
</directory>
</virtualhost>
2 下載,解壓縮應用程序文件,分別複製到相應目錄下
cp -a wordpress/* /data/blog/
cp -a phpMyAdmin-4.3.5-all-languages/* /data/pma/
cp -a upload/* /data/dz/
其中dz爲discuz解壓以後的一個目錄,注意只複製此目錄便可
chown -R apache:apache /data/blog /data/dz
3 修改配置文件:
cp /data/blog/wp-config-sample.php /data/blog/wp-config.php
vim /data/blog/wp-config.php
填寫數據庫登陸信息
cp /data/pma/config.sample.inc.php /data/pma/config.inc.php
vim /data/pma/config.inc.php
填寫blowfish 中的隨機字符
4 數據庫受權帳號
5 重啓服務 並作 頁面測試
fastcgi方式:
安裝程序包時 php換成 php-fpm
特別注意:
mkdir /var/lib/php/session
chown -R apache:apache /var/lib/php/session
不然,phpmyadmin沒法使用
配置文件中:以下,
且以後步驟徹底和modules方式一致
vim /etc/httpd/conf.d/fcgi.conf
directoryindex index.php
<virtualhost *:80>
servername www.blog.com
documentroot "/data/blog/"
errorlog "/var/log/httpd/error_blog_log"
customlog "/var/log/httpd/access_blog_log" conbined
proxyrequests off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/blog/$1
<directory "/data/blog">
options none
allowoverride none
require all granted
</directory>
</virtualhost>
<virtualhost *:80>
servername www.pma.com
documentroot "/data/pma"
errorlog "/var/log/httpd/error_pma_log"
customlog "/var/log/httpd/access_pma_log" combined
proxyrequests off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/pma/$1
<directory "/data/pma">
options none
allowoverride none
require all granted
</directory>
</virtualhost>
<virtualhost *:80>
servername www.dz.com
documentroot "/data/dz"
errorlog "/var/log/httpd/error_dz_log"
customlog "/var/log/httpd/access_dz_log" conbined
proxyrequests off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/dz/$1
<directory "/data/dz">
options none
allowoverride none
require all granted
</directory>
</virtualhost>
------------------------------------------------------------------------------------
編譯安裝LAMP:
在centos7編譯安裝LAMP:
安裝程序順序
mariadb:通用二進制格式:mariadb-10.2.15
下載地址:
需提早準備好二進制安裝包
httpd: 編譯安裝,httpd-2.4.33
下載地址:
官網:http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.33.tar.bz2
搜狐:http://mirrors.sohu.com/apache/httpd-2.4.33.tar.bz2
須要更新apr,apr-util
下載地址:
APR: http://mirrors.hust.edu.cn/apache//apr/apr-1.6.3.tar.gz
APR-UTIL: http://mirrors.hust.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
php7:編譯安裝,php-7.2.7
下載地址:http://mirrors.sohu.com/php/php-7.2.7.tar.bz2
phpmyadmin:安裝phpmyadmin4.8.2
下載地址:https://files.phpmyadmin.net/phpMyAdmin/4.8.2/phpMyAdmin-4.8.2-all-languages.zip
xcache:php7 之內置加速功能,不須要安裝xcache
對比測試:使用yum一件安裝腳本安裝lamp+wordpress
使用ab -c 10 -n 100 http://192.168.65.132/
測試結果Requests per second: 5.08 [#/sec] (mean)
測試屢次大概5個左右 phpmuadmin 大約26個左右
yum安裝上php-xcache以後測試結果爲:仍是5個 26個
編譯安裝流程:
1 準備開發環境
yum groupinstall "development tools" -y
yum install pcre-devel openssl-devel expat-devel -y
2 二進制安裝mariadb-10.2.15
##若是沒有mysql帳號,需先建立
groupadd -r -g 306 mysql
useradd -r -u 306 -g 306 -d /data/mysqldb
tar -xf mariadb-10.2.15-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/
ln -sv mariadb-10.2.15-linux-x86_64 mysql
cd mysql
chown -R mysql:mysql ./*
mkdir /data/mysqldb -p
chown -R mysql:mysql /data/mysqldb
mkdir /etc/mysql
cp support-files/my-huge.cnf /etc/mysql/my.cnf
修改配置文件,若是要寫成腳本,此項需注意,使用sed
vim /etc/mysql/my.cnf
[mysqld]
datadir = /data/mysqldb
innodb_file_per_table = on
skip_name_resolve = on
./scripts/mysql_install_db --datadir=/data/mysqldb --user=mysql
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
service mysqld start
3 源碼編譯httpd-2.4
cd
wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.33.tar.bz2
wget http://mirrors.hust.edu.cn/apache//apr/apr-1.6.3.tar.gz
wget http://mirrors.hust.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
tar -xf httpd-2.4.33.tar.bz2
tar -xf apr-1.6.3.tar.gz
tar -xf apr-util-1.6.1.tar.gz
cp -a apr-1.6.3 httpd-2.4.33/srclib/apr
cp -a apr-util-1.6.1 httpd-2.4.33/srclib/apr-util
cd httpd-2.4.33/
./configure --prefix=/app/httpd24 \
--sysconfdir=/etc/httpd24 \
--enable-so --enable-ssl --enable-cgi \
--enable-rewrite --with-zlib --with-pcre \
--with-includedapr --enable-modules=most \
--enable-mpms-shared=all --with-mpm=prefork
make -j 4 && make install
cd /app/httpd24/
echo 'PATH=/app/httpd24/bin/:$PATH' > /etc/profile.d/httpd24.sh
. /etc/profile.d/httpd24.sh
修改配置文件中的user和group
sed -i '/^User/s/.*/User apache/' /etc/httpd24/httpd.conf
sed -i '/^Group/s/.*/Group apache/' /etc/httpd24/httpd.conf
重啓服務
apachectl start
4 源碼編譯安裝PHP:
cd
yum install libxml2-devel bzip2-devel libmcrypt-devel -y
wget http://mirrors.sohu.com/php/php-7.2.7.tar.bz2
模塊方式:
tar -xf php-7.2.7.tar.bz2
cd php-7.2.7/
參考編譯選項:php5.6
./configure --prefix=/app/php \
--with-mysql=/usr/local/mysql \
--with-openssl \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--enable-mbstring --with-png-dir \
--with-jpeg-dir --with-freetype-dir \
--with-zlib --with-libxml-dir=/usr \
--enable-xml --enable-sockets \
--with-apxs2=/appl/httpd24/bin/apxs \
--with-mcrypt --with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--with-bz2
編譯選項:php7.0+
./configure --prefix=/app/php \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-openssl \
--with-pdo-mysql=mysqlnd \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--enable-sockets \
--with-apxs2=/app/httpd24/bin/apxs \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--disable-fileinfo \
--enable-maintainer-zts
注意: php-7.0以上版本使用--enable-mysqlnd --with-mysqli=mysqlnd ,
原--with-mysql再也不支持
--enable-maintainer-zts
若是http編譯成event或者worker,必須加上此項
make -j 4 && make install
準備配置文件:
cp php.ini-production /etc/php.ini
編譯apache配置文件httpd.conf,使apache支持php
vim /etc/httpd24/httpd.conf
添加2行:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
定位至: DirectoryIndex index.html
修改成: DirectoryIndex index.php index.html
重複服務:
apachectl restart
5 源碼編譯安裝PHP: fpm方式
tar -xf php-7.2.7.tar.bz2
cd php-7.2.7/
./configure --prefix=/app/php \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-openssl \
--with-pdo-mysql=mysqlnd \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--enable-sockets \
--enable-fpm \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--enable-maintainer-zts \
--disable-fileinfo
make -j 4 && make install
安裝後配置:
cp php.ini-production /etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
cd /app/php/etc
cp php-fpm.conf.default php-fpm.conf
cp php-fpm.d/www.conf.default php-fpm.d/www.conf
vim php-fpm.d/www.conf
user = apache
group = apache
修改php-fpm程序的用戶和組,可選項,不修改也能夠
rename ini so /etc/php.d/*
修改/etc/php.d/*.ini ===> /etc/php.d/*.so
php7.2.7須要,不然啓動會有一堆報錯
service php-fpm start
配置httpd.conf
vim /etc/http24/httpd.conf
取消下面兩行的註釋:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
定位至:DirectoryIndex index.html
修改成:DirectoryIndex index.php index.html
添加下面四行:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1
重啓服務:
apachectl restart
編譯過程報錯記錄:
1 make[1]: Warning: File `/root/php-7.2.7/ext/date/php_date.c' has
modification time 1.9e+06 s in the future
問題緣由:
系統時間設置不正確,致使安裝時間是系統時間將來的時間
解決方案:
修改正確系統時間
2 PHP Startup: Unable to load dynamic library 'curl.so' ....
解決方案:
rename ini so /etc/php.d/*
LAMP 一鍵安裝腳本:
1 yum安裝module方式
2 yum安裝fpm方式
3 編譯安裝方式