CGI
CGI:Common Gateway Interface 公共網關接口
CGI 在2000年或更早的時候用得比較多,以前web服務器一般只處理靜態的請求,如果碰到一個動態請
求怎么辦呢?web服務器會根據這次請求的內容,然后會 fork 一個新進程來運行外部的 C 程序或者
bash,perl腳本等,這個進程會把處理完的數據返回給web服務器,最后web服務器把內容發送給用戶,
剛才fork的進程也隨之退出。 如果下次用戶還請求改動態腳本,那么web服務器又再次fork一個新進
程,周而復始的進行。
CGI 可以讓一個客戶端,從網頁瀏覽器通過http服務器向執行在網絡服務器上的程序傳輸數據;CGI描述
了客戶端和服務器程序之間傳輸的一種標准
請求流程:
Client -- (http協議) --> httpd -- (cgi協議) --> application server (program file) -- (mysql協議) --> mysql
范例:httpd 利用CGI運行shell腳本
fastcgi
fastcgi的方式是,web服務器收到一個請求時,不會重新fork一個進程(因為這個進程在web服務器啟
動時就開啟了,而且不會退出),web服務器直接把內容傳遞給這個進程(進程間通信,但fastcgi使用
了別的方式,tcp方式通信),這個進程收到請求后進行處理,把結果返回給web服務器,最后自己接着
等待下一個請求的到來,而不是退出
請求流程:
Client -- (http協議) --> httpd -- (fastcgi協議) --> fastcgi服務器 -- (mysql協議) --> mysql
CGI和fastcgi 比較
CGI: 兼職, 一次性的過河拆橋式的服務
FASTCGI: 專職,全周期的持續式的服務
名稱 | 在web服務器方面 | 在對數據進行處理的進程方面 |
---|---|---|
cgi | fork一個新的進程進行處理 | 讀取參數,處理數據,然后就結束生命期 |
fastcgi | 用tcp方式跟遠程機子上的進程或本地進程建立連接 | 要開啟tcp端口,進入循環,等待數據的到來,處理數據 |
PHP 配置
php 的配置文件:/etc/php.ini, /etc/php.d/*.ini
配置文件在php解釋器啟動時被讀取
對配置文件的修改生效方法
Modules:重啟httpd服務
FastCGI:重啟php-fpm服務
/etc/php.ini配置文件格式:
[foo]:Section Header
directive = value
注釋符:
以#開頭,純粹的注釋信息
以 ; 開頭,用於注釋可啟用的directive
提示:較新的版本中,已經完全使用 “ ; ” 進行注釋
php.ini 配置參考文檔:
php.ini的核心配置選項文檔: http://php.net/manual/zh/ini.core.php
php.ini配置選項列表:http://php.net/manual/zh/ini.list.php
php常見設置:
expose_php = On #響應報文顯示首部字段x-powered-by: PHP/x.y.z,暴露php版本,建議為off
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();?>
范例:
[root@centos7 ~]# yum -y install httpd php
[root@centos7 ~]# systemctl start httpd
[root@centos7 ~]# cat /var/www/html/test.php
<?php
phpinfo();
?>
[root@centos7 ~]#cat /var/www/html/session.php
<?php
session_start();
echo session_id();
?>
[root@centos6 ~]# curl -I 10.0.0.7/test.php
HTTP/1.1 200 OK
date: Thu, 02 Apr 2020 04:02:57 GMT
server: Apache/2.4.6 (CentOS) PHP/5.4.16
x-powered-by: PHP/5.4.16 # 暴露PHP版本信息
content-type: text/html; charset=UTF-8
cache-control: private
[root@centos7 ~]# vim /etc/php.ini
expose_php = Off
[root@centos7 ~]# systemctl restart httpd
PHP 語言格式
php語言有兩種使用格式:
格式 1
<?php
echo "<h1>Hello world!</h1>"
?>
格式 2
<h1>
<?php echo "Hello world!" ?>
</h1>
LAMP實現方式
httpd 接收用戶的web請求;靜態資源則直接響應;動態資源為php腳本,對此類資源的請求將交由php來運行
httpd與php結合的方式
modules :將php編譯成為httpd的模塊libphp5.so,只有prefork 模式才支持
FastCGI
LAMP架構實現
靜態資源:
Client -- http --> httpd
動態資源:
Client -- http --> httpd --> libphp5.so () -- mysql --> MySQL server
Client -- http --> httpd -->fastcgi-- mysql --> MySQL server
利用rpm包實現LAMP安裝部署
CentOS 8
Module 模塊方式
dnf install httpd mariadb-server php php-mysqlnd
FastCGI 方式
dnf install httpd mariadb-server php-fpm php-mysqlnd
CentOS 7
Module 模塊方式
yum install httpd mariadb-server php php-mysql
FastCGI 方式
yum install httpd php-fpm php-mysql mariadb-server
CentOS 6:
Module 模塊方式
yum install httpd, php, php-mysql, mysql-server
FastCGI方式:默認不支持
注意:基於module實現,httpd 需要 使用prefork模型
使用mysql擴展連接數據庫
使用mysql擴展模塊mysql.so連接數據,此方式已經在php 7 版后淘汰
范例:php使用mysql擴展連接數據庫的測試代碼
<?php
$conn = mysql_connect('mysqlserver','username','password');
if ($conn)
echo "OK";
else
echo "Failure";
#echo mysql_error();
mysql_close();
?>
使用mysqli擴展連接數據庫
使用mysqli擴展模塊mysqli.so連接數據,此方式只能連接MySQL數據庫,不支持其它數據庫
范例:php使用mysqli擴展連接數據庫的測試代碼
<?php
$mysqli=new mysqli("mysqlserver", "username", "password");
if(mysqli_connect_errno()){
echo "Failure";
$mysqli=null;
exit;
}
echo "OK";
$mysqli->close();
?>
使用PDO(PHP Data Object)擴展連接數據庫
使用PDO擴展模塊pdo_mysql.so連接數據庫,此方式可以支持連接MySQL,Oracle等多種數據庫
范例:php使用pdo擴展連接數據庫的測試代碼1
<?php
$dsn='mysql:host=mysqlhost;port=3306;dbname=mysql';
$username='root';
$passwd='magedu';
$dbh=new PDO($dsn,$username,$passwd);
var_dump($dbh);
?>
范例:php使用pdo擴展連接數據庫的測試代碼2
<?php
try {
$user='root';
$pass='magedu';
$dbh = new PDO('mysql:host=mysqlhost;port=3306;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實戰案例
范例:CentOS 8 默認使用factcgi模式,可以按下面步驟修改為httpd的模塊方式
[root@centos8 ~]# dnf -y install httpd php php-mysqlnd mariadb-server
#修改為prefork模式支持httpd 模塊方式
[root@centos8 ~]# vim /etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
#LoadModule mpm_event_module modules/mod_mpm_event.so
#CentOS 8的php 默認是factcgi模式 ,修改為httpd模塊方式,此步非必須,是可選做
[root@centos8 html]# vim /etc/httpd/conf.d/php.conf
#<IfModule !mod_php5.c>
# <IfModule !mod_php7.c>
# # Enable http authorization headers
# SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
#
# <FilesMatch \.(php|phar)$>
# SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
# </FilesMatch>
# </IfModule>
#</IfModule>
[root@centos8 ~]# vim /var/www/html/lamp.php
[root@centos8 ~]# cat /var/www/html/lamp.php
<?php
try {
$user='root';
$pass='';
$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();
}
phpinfo();
?>
[root@centos8 ~]# systemctl start httpd mariadb
打開chrome瀏覽器,訪問 http://httpd服務器IP/lamp.php 可以看到php頁面,說明LAMP 搭建成功
范例:CentOS 8 部署 phpMyAdmin-5.0.1
[root@centos8 ~]# yum -y install httpd mariadb-server php php-mysqlnd php-json
php-xml
[root@centos8 ~]# systemctl start httpd mariadb
[root@centos8 ~]# mysql_secure_installation
[root@centos8 ~]# unzip phpMyAdmin-5.0.1-all-languages.zip
[root@centos8 ~]# mv phpMyAdmin-5.0.1-all-languages /var/www/html/pma
#如果出錯,可以查看日志
[root@centos8 ~]# tail /var/log/php-fpm/www-error.log
#瀏覽器訪問http://LAMP服務器IP/pma/
范例:CentOS 7 利用清華Yum源安裝php 7.4 部署 phpMyAdmin-5.0.2
[root@centos7 ~]# yum -y install
https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm
[root@centos7 ~]# yum -y install httpd php74-php php74-php-mbstring php74-phpmysqlnd
mariadb-server unzip
[root@centos7 ~]# systemctl enable --now httpd mariadb
[root@centos7 ~]# mysqladmin password magedu
[root@centos7 ~]# wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-
5.0.2-all-languages.zip
[root@centos7 ~]# unzip phpMyAdmin-5.0.2-all-languages.zip
[root@centos7 ~]# mv phpMyAdmin-5.0.2-all-languages/ /var/www/html/pma
#瀏覽器訪問http://LAMP服務器IP/pma/
范例:CentOS 7 利用清華Yum源安裝php 7.2 部署 phpMyAdmin-5.0.1
[root@centos7 ~]# yum -y install https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remirelease-
7.rpm
[root@centos7 ~]# yum -y install httpd php72-php php72-php-mbstring php72-php-mysqlnd mariadbserver
[root@centos7 ~]# systemctl start httpd mariadb
[root@centos7 ~]# wget https://files.phpmyadmin.net/phpMyAdmin/5.0.1/phpMyAdmin-5.0.1-alllanguages.
zip
[root@centos7 ~]# yum install unzip -y
[root@centos7 ~]# unzip phpMyAdmin-5.0.1-all-languages.zip
[root@centos7 ~]# cd phpMyAdmin-5.0.1-all-languages/
[root@centos7 ~]# mv phpMyAdmin-5.0.1-all-languages /var/www/html/pma
#設置mysql的root密碼,phpMyadmin不允許空密碼登錄
[root@centos7 ~]# mysql_secure_installation
#瀏覽器訪問http://LAMP服務器IP/pma/
范例:CentOS 7 利用RPM包部署phpMyadmin4.4
[root@centos7 ~]# yum -y install httpd mariadb-server php php-mysql
[root@centos7 ~]# systemctl start mariadb
[root@centos7 ~]# mysql_secure_installation
#下載:https://www.phpmyadmin.net/downloads/
[root@centos7 ~]# unzip phpMyAdmin-4.4.15.10-all-languages.zip
[root@centos7 ~]# mv phpMyAdmin-4.4.15.10-all-languages /var/www/html/phpmyadmin
[root@centos7 ~]# cd /var/www/html/phpmyadmin/
[root@centos7 ~]# cp config.sample.inc.php config.inc.php
#如果mysql 服務器和phpmyadmin不在同一台主機,還需要修改以下設置
[root@centos7 ~]# vim config.inc.php
$cfg['Servers'][$i]['host'] = 'mysqlserverIP';
[root@centos7 ~]# yum -y install php-mbstring
[root@centos7 ~]# systemctl start httpd
#瀏覽器訪問:http://LAMP服務器IP/phpmyadmin,輸入root及口令即可登錄
范例:CentOS 8 利用RPM包部署 wordpress
[root@centos8 ~]# dnf -y install httpd php php-json php-mysqlnd mariadb-server
[root@centos8 ~]# systemctl enable --now httpd mariadb
[root@centos8 ~]# mysql
MariaDB [(none)]> create database wordpress;
MariaDB [(none)]> grant all on wordpress.* to wordpress@'localhost' identified
by '123456';
[root@centos8 ~]# wget https://cn.wordpress.org/latest-zh_CN.zip
[root@centos8 ~]# tar xvf wordpress-5.4.2-zh_CN.tar.gz
[root@centos8 ~]# mv wordpress/* /var/www/html/
[root@centos8 ~]# chown -R apache.apache /var/www/html/
#瀏覽器訪問
http://LAMP服務器/wordpress
#如果連接數據庫失敗,可以用127.0.0.1代替localhost
#安全加固
#用瀏覽器訪問https://api.wordpress.org/secret-key/1.1/salt/,替代下面wp-config.php內
容
[root@centos8 ~]# vim /var/www/html/wp-config.php
范例:CentOS 7 利用RPM包部署wordpress
#下載官網地址:https://cn.wordpress.org/
#解壓縮WordPress博客程序到網頁站點目錄下
[root@centos7 ~]# unzip wordpress-5.1.1-zh_CN.zip
[root@centos7 ~]# mv wordpress /var/www/html/
#新建wpdb庫和wpuser用戶
mysql> create database wpdb;
mysql> grant all on wpdb.* to wpuser@'%' identified by "wppass";
setfacl –R –m u:apache:rwx /var/www/html/wordpress/
#或者chown –R apache.apache /var/www/html/wordpress
#打開http://LAMP服務器IP/wordpress進行頁面安裝
范例:CentOS 8 利用RPM包部署Discuz!
[root@centos8 ~]# dnf -y install httpd php php-xml php-mysqlnd mariadb-server
[root@centos8 ~]# unzip Discuz_X3.4_SC_UTF8【20191201】.zip
[root@centos8 ~]# mv upload/ /var/www/html/forum
[root@centos8 ~]# chown -R apache.apache /var/www/html/forum
[root@centos8 ~]# mysql
MariaDB [ultrax]> create database ultrax;
MariaDB [ultrax]> grant all on ultrax.* to ultrax@'localhost' identified by
'123456';
范例:CentOS 7 利用RPM包部署Discuz!
#官網:http://www.discuz.net
#下載源碼:
[root@centos7 ~]# wget http://download.comsenz.com/DiscuzX/3.3/Discuz_X3.3_SC_UTF8.zip
[root@centos7 ~]# unzip Discuz_X3.3_SC_UTF8.zip
[root@centos7 ~]# mv upload/ /var/www/html/forum
[root@centos7 ~]# setfacl -R -m u:apache:rwx /var/www/html/forum
mysql> create database discuz;
mysql> grant all on discuz.* to discuz@'172.16.0.%’identified by"123456";
安裝向導:http://localhost/forum
實現 PowerDNS 應用部署
PowerDNS 是一個跨平台的開源DNS服務組件,PowerDNS為DNS數據提供純文本文件或第三方數據庫
(如MySQL,PostgreSQL,Microsoft SQL Server,Oracle或Sybase)中存儲的數據。PowerDNS同
時有Windows和Linux/Unix的版本。 PowerDNS在Windows下可以使用 Access的mdb文件記錄DNS信
息,而在Linux/Unix下則常使用MySQL來記錄DNS信息。
Poweradmin 是為 PowerDNS 服務器的提供基於PHP語言實現的 Web 界面的DNS 管理工具。此工具支
持 PowerDNS 的主要功能。
PowerDNS官網:https://www.powerdns.com/
PowerDNS文檔:https://doc.powerdns.com/
Poweradmin官網:http://www.poweradmin.org/
范例:CentOS 8 利用RPM包部署PowerDNS(目前20200311,不支持powerdns,缺少相關php包)
[root@centos8 ~]# yum install -y pdns pdns-backend-mysql mariadb-server
[root@centos8 ~]# systemctl start mariadb
[root@centos8 ~]# mysql < pdns.sql
[root@centos8 ~]# vim /etc/pdns/pdns.conf
launch=gmysql
gmysql-host=localhost
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=powerdns
gmysql-password=123456
[root@centos8 ~]# grep -Ev "^#|^$" /etc/pdns/pdns.conf
launch=gmysql #修改此行
gmysql-host=localhost #以下行是增加
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=powerdns
gmysql-password=123456
setgid=pdns #以下兩行不變
setuid=pdns
[root@centos8 ~]# systemctl enable --now pdns
[root@centos8 ~]# ss -ntlpu |grep pdns_server
udp UNCONN 0 0 0.0.0.0:53 0.0.0.0:*
users:(("pdns_server",pid=3073,fd=9))
udp UNCONN 0 0
[root@centos8 ~]# yum -y install httpd php php-devel php-gd php-ldap php-mysqlnd
php-odbc php-pear php-xml php-xmlrpc php-mhash gettext
[root@centos8 ~]# systemctl restart httpd
范例:CentOS 7 利用RPM包部署PowerDNS
#安裝包:基於EPEL源
[root@centos7 ~]# yum install -y pdns pdns-backend-mysql mariadb-server
[root@centos7 ~]# rpm -ql pdns
/etc/pdns
/etc/pdns/pdns.conf
/usr/bin/pdns_control
/usr/bin/pdns_zone2ldap
...
[root@centos7 ~]# systemctl enable --now mariadb
#准備mariadb中的數據庫,表和用戶
[root@centos7 ~]# mysql
MariaDB [(none)]> CREATE DATABASE powerdns;
MariaDB [(none)]> GRANT ALL ON powerdns.* TO 'powerdns'@'localhost' IDENTIFIED
BY '123456';
#創建powerdns數據庫中的表,參看下面文檔實現
#https://doc.powerdns.com/md/authoritative/backend-generic-mysql/
use powerdns;
CREATE TABLE domains (
id INT AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
master VARCHAR(128) DEFAULT NULL,
last_check INT DEFAULT NULL,
type VARCHAR(6) NOT NULL,
notified_serial INT DEFAULT NULL,
account VARCHAR(40) DEFAULT NULL,
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE UNIQUE INDEX name_index ON domains(name);
CREATE TABLE records (
id BIGINT AUTO_INCREMENT,
domain_id INT DEFAULT NULL,
name VARCHAR(255) DEFAULT NULL,
type VARCHAR(10) DEFAULT NULL,
content VARCHAR(64000) DEFAULT NULL,
ttl INT DEFAULT NULL,
prio INT DEFAULT NULL,
change_date INT DEFAULT NULL,
disabled TINYINT(1) DEFAULT 0,
ordername VARCHAR(255) BINARY DEFAULT NULL,
auth TINYINT(1) DEFAULT 1,
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
CREATE INDEX recordorder ON records (domain_id, ordername);
CREATE TABLE supermasters (
ip VARCHAR(64) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) NOT NULL,
PRIMARY KEY (ip, nameserver)
) Engine=InnoDB;
CREATE TABLE comments (
id INT AUTO_INCREMENT,
domain_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
type VARCHAR(10) NOT NULL,
modified_at INT NOT NULL,
account VARCHAR(40) NOT NULL,
comment VARCHAR(64000) NOT NULL,
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE INDEX comments_domain_id_idx ON comments (domain_id);
CREATE INDEX comments_name_type_idx ON comments (name, type);
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
CREATE TABLE domainmetadata (
id INT AUTO_INCREMENT,
domain_id INT NOT NULL,
kind VARCHAR(32),
content TEXT,
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);
CREATE TABLE cryptokeys (
id INT AUTO_INCREMENT,
domain_id INT NOT NULL,
flags INT NOT NULL,
active BOOL,
content TEXT,
PRIMARY KEY(id)
) Engine=InnoDB;
CREATE INDEX domainidindex ON cryptokeys(domain_id);
CREATE TABLE tsigkeys (
id INT AUTO_INCREMENT,
name VARCHAR(255),
algorithm VARCHAR(50),
secret VARCHAR(255),
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
#配置PowerDNS使用mariadb作為后台數據存儲
[root@centos7 ~]# vim /etc/pdns/pdns.conf,查找到包含launch= 的行,修改並添加下面的內容
launch=gmysql #修改此行
gmysql-host=localhost #以下行是增加的
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=powerdns
gmysql-password=123456
[root@centos7 ~]# grep -Ev "^#|^$" /etc/pdns/pdns.conf
launch=gmysql
gmysql-host=localhost
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=powerdns
gmysql-password=123456
setgid=pdns
setuid=pdns
#啟動服務
[root@centos7 ~]# systemctl enable --now pdns
[root@centos7 ~]# ss -ntlu
Netid State Recv-Q Send-Q Local Address:Port
Peer Address:Port
udp UNCONN 0 0 127.0.0.1:323
...
#安裝httpd和php相關包
[root@centos7 ~]# yum -y install httpd php php-devel php-gd php-mcrypt php-imap
php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mhash
gettext
[root@centos7 ~]# systemctl enable --now httpd
#下載poweradmin程序,並解壓縮到相應目錄
[root@centos7 ~]# wget
http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz
[root@centos7 ~]# tar xvf poweradmin-2.1.7.tgz -C /var/www/html
[root@centos7 ~]# cd /var/www/html
[root@centos7 ~]# mv poweradmin-2.1.7 poweradmin
訪問下面地址,啟動PowerAdmin的網頁安裝向導:
http://powerdns服務器IP/poweradmin/install/
提供先前配置的數據庫詳情,同時為網站的超級管理員admin用戶設置密碼為123456
為Poweradmin創建一個受限用戶
#說明:
Username:PowerAdmin用戶名
Password:上述用戶的密碼
Hostmaster:當創建SOA記錄指定默認主機管理員
Primary nameserver:主域名服務器
Secondary namesever:輔域名服務器
按照下面頁面說明,在數據庫中創建用戶並授權
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE ON powerdns.* TO
'poweradmin'@'localhost‘ IDENTIFIED BY '123456';
按下面頁面說明,創建config.in.php文件內容
[root@centos7 ~]# vim /var/www/html/poweradmin/inc/config.inc.php
安裝完畢后
刪除install目錄
rm -rf /var/www/html/poweradmin/install/
登錄http://powerdns服務器IP/poweradmin/
實現 xcache 加速 php 5.X
編譯php-xcache加速訪問,支持php 5.6版以下
官網:http://xcache.lighttpd.net/wiki/ReleaseArchive
案例:CentOS 7上安裝清華源的php56,並編譯安裝 xcache加速
[root@centos7 ~]# yum -install
https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm
[root@centos7 ~]# yum -y install php56-php php56-php-mysqlnd mariadb-server
[root@centos7 ~]# systemctl enable --now httpd mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to
/usr/lib/systemd/system/httpd.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service
to /usr/lib/systemd/system/mariadb.service.
[root@centos7 ~]# mysql
MariaDB [(none)]> create database wordpress;
MariaDB [(none)]> grant all on wordpress.* to wordpress@'localhost' identified
by '123456';
[root@centos7 ~]# tar xvf wordpress-5.3.2-zh_CN.tar.gz -C /var/www/html
[root@centos7 ~]# cd /var/www/html
[root@centos7 ~]# chown -R apache.apache wordpress/
[root@centos8 ~]# ab -c 10 -n 100 http://10.0.0.7/wordpress/
#安裝編譯xcache
[root@centos7 ~]# yum -y install gcc php56-php-devel
#下載並解壓縮xcache-3.2.0.tar.bz2
[root@centos7 ~]# tar xf xcache-3.2.0.tar.gz
#生成編譯環境
[root@centos7 ~]# cd xcache-3.2.0/
[root@centos7 xcache-3.2.0]# /opt/remi/php56/root/usr/bin/phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
[root@centos7 xcache-3.2.0]#./configure --enable-xcache --with-phpconfig=/
opt/remi/php56/root/usr/bin/php-config
[root@centos7 xcache-3.2.0]# make && make install
...省略...
Installing shared extensions: /opt/remi/php56/root/usr/lib64/php/modules/
[root@centos7 xcache-3.2.0]# cat xcache.ini >> /opt/remi/php56/root/etc/php.ini
#安裝base源中執行即可cp xcache.ini /etc/php.d/
[root@centos7 ~]# systemctl restart httpd.service
#測試性能
[root@centos8 ~]# ab -c10 -n 100 http://LAMP服務器/wordpress
Requests per second: 7.26
實現 opcache 加速 php 7.X
[root@centos8 ~]# dnf install php-opcache
[root@centos8 ~]# cat /etc/php.ini
[opcache]
zend_extension=opcache.so
opcache.enable=1
[root@centos8 ~]# systemctl restart php-fpm
范例:CentOS 8 實現 opache 加速
[root@centos8 ~]# dnf -y install httpd php php-mysqlnd mariadb-server php-opcache
php-json
[root@centos8 ~]# rpm -ql php-opcache
/etc/php.d/10-opcache.ini
/etc/php.d/opcache-default.blacklist
/usr/lib/.build-id
/usr/lib/.build-id/71
/usr/lib/.build-id/71/55ebb00f7ebcab9d708c1d5c7b7e634cce259c
/usr/lib64/php/modules/opcache.so
[root@centos8 ~]# grep opcache /etc/php.d/10-opcache.ini
zend_extension=opcache
opcache.enable=1
...省略...
#加速前,默認啟用,先禁用加速
[root@centos8 ~]# vim /etc/php.d/10-opcache.ini
opcache.enable=0
[root@centos8 ~]# systemctl restart php-fpm
[root@centos7 ~]# ab -c 10 -n 100 http://10.0.0.8/wordpress/
......
Requests per second: 4.31 [#/sec] (mean)
......
#啟用加速
[root@centos8 ~]# vim /etc/php.d/10-opcache.ini
opcache.enable=1
[root@centos8 ~]# systemctl restart php-fpm
##加速后
[root@centos7 ~]# ab -c 10 -n 100 http://10.0.0.8/wordpress/
......
Requests per second: 19.76 [#/sec] (mean)......