目錄
php簡介
官網php安裝包
選擇下載穩定版本
(建議使用此版本,文章以此版本為例)
安裝php解析環境
準備工作
安裝依賴
?zlib-devel?和?libxml2-devel包。?
安裝擴展工具庫?
安裝?libmcrypt
安裝?mhash
?安裝mcrypt
安裝php
選項含義:?
?php.ini配置調整
創建配置文件
配置文件部分信息
修改配置文件
啟動php-fpm服務:
添加防火墻配置
添加nginx配置(server中添加)
完整nginx.conf配置文件(例子)
壓力測試
安裝httpd-tools軟件包使用ab工具
ab命令
php簡介
百度搜索php鏈接
PHP是一種流行的開源服務器端腳本語言,特別適用于網頁開發,并且可以嵌入HTML中使用。它全稱是“超文本預處理器”(Hypertext Preprocessor),由Rasmus Lerdorf于1994年創建。php的語法混合了C、java、perl及部分自創的新語法、擁有更好的網頁執行速度、更重要的是php支持絕大多數流行的數據庫、且支持linux、windows、unix等多種操作系統。PHP主要用于創建動態的網頁或應用程序,可以生成動態內容、管理數據庫、處理表單數據、會話跟蹤等。由于其靈活性、可擴展性和廣泛的社區支持,PHP被全球的網站廣泛采用,從簡單的個人博客到復雜的電子商務系統。
PHP腳本通常在服務器上執行,并將結果以HTML的形式發送給客戶端瀏覽器。它支持多種數據庫,如MySQL、PostgreSQL、SQLite等,并且可以與多種服務器如Apache、Nginx、IIS等協同工作。
官網php安裝包
php官網下載鏈接(建議使用穩定版5.X)
選擇下載穩定版本
(建議使用此版本,文章以此版本為例)
php.5.6.27版本官網下載鏈接 下載位置:php、downloads、Old archives
wget -O /usr/local/src/ https://www.php.net/distributions/php-5.6.27.tar.gz --no-check-certificate
php.8.3.7版本官網下載鏈接 下載位置:php、downloads、Current stable php?.tar.gz? ?[19299kb]
php.8.3.7版本官網下載鏈接 下載位置:php、downloads、Current stable php?tar.bz2? [15480kb]
php.8.3.7版本官網下載鏈接 下載位置:php、downloads、Current stable php?tar.xg? ?[12164kb]
PHP For Windows: Binaries and sources Releases?windows系統
安裝php解析環境
準備工作
為了避免發生程序沖突等現象,建議先將RPM?方式安裝的?php及相關依賴包(如果已存在)卸載。根據實際安裝情況可卸載?php、php-cli、php-Idap、php-common、php-mysql等。
rpm -e php php-cli phpldap php-common php-mysql --nodeps
#!/bin/bash
# 列出所有PHP相關的包
php_packages=$(rpm -qa | grep 'php')
# 檢查并卸載每個包
for package in $php_packages; doif [[ -n "$package" ]]; thenecho "正在卸載: $package"yum -y remove "$package"fi
done
安裝依賴
yum install -y gd gcc make autoconf automake libtool openssl-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel bzip2-devel libmcrypt-devel zlib-devel libxm12-devel
PHP?已經自帶?FPM(FastCGl?Process?Manager,FastCGl?進程管理器)模塊,?用來對PHP?解析實例進行管理、優化解析效率。單服務器的LNMP?架構通常使用這種方式,因此在配置?PHP?編譯選項時應添加“--enable-fpm”?以啟用此模塊。為了提高?PHP?解析效率,建議將相應版本的ZendGuardLoader?也裝上。
?zlib-devel?和?libxml2-devel包。?
zlib包
-
zlib-devel
?包提供了 zlib 庫的開發文件,包括頭文件和靜態庫。- zlib 是一個廣泛使用的壓縮庫,它提供了一種用于壓縮和解壓縮數據的方法,特別是在網絡傳輸和文件存儲中。
- 在 PHP 中,zlib 庫用于支持?
gzencode()
、gzdecode()
、gzdeflate()
、gzinflate()
?等壓縮和解壓縮功能。 - 如果在構建 PHP 環境時沒有安裝?
zlib-devel
,那么 PHP 的 zlib 相關模塊將無法編譯,這可能會導致一些依賴于這些模塊的功能無法正常工作。
-
libxml2-devel:
libxml2-devel
?包提供了 libxml2 庫的開發文件,包括頭文件和鏈接庫。- libxml2 是一個用于解析和構建 XML 和 HTML 文檔的庫。
- 在 PHP 中,libxml2 庫用于支持各種 XML 處理函數,如?
simplexml_load_string()
、dom_import_simplexml()
、xml_parse()
?等。 - 如果在構建 PHP 環境時沒有安裝?
libxml2-devel
,那么 PHP 的 XML 相關模塊將無法編譯,這會影響所有與 XML 處理相關的功能。
安裝擴展工具庫?
在實際企業應用中,一部分基于php開發的web應用系統會需要額外的擴展工具,、數據加密攻擊libmcrypt、mhash、mcrypt等、??站點?http://sourceforge.net??下載
安裝?libmcrypt
wget -O / https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
tar xf libmcrypt-2.5.8.tar.gz -C /usr/src
cd /usr/src/libmcrypt-2.5.8/
. /configure
make &&make install
ln -s /usr/local/bin/libmcrypt_config /usr/bin/libmcrypt_config
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
安裝?mhash
wget -O / https://acelnmp.googlecode.com/files/mhash-0.9.9.9.tar.gz
tar xf /mhash-0.9.9.9.tar.gz -C /usr/src/
cd /usr/src/mhash-0.9.9.9/
. /configure
make &&make install
ln-s/usr/local/lib/libmhash*/usr/lib/
?安裝mcrypt
wget -O / https://lcmp.googlecode.com/files/mcrypt-2.6.8.tar.gz
tar xf /mcrypt-2.6.8.tar.gz -C /usr/src/
export LD_LIBRARY_PATH=/usr/local/lib
. /configure
make && make install
安裝php
tar xf php-5.6.27.tar.gz -C /usr/src
cd /usr/src/php-5.6.27
./configure --prefix=/usr/local/php5.6 \
--with-gd \
--with-zlib \
--with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-config-file-path=/usr/local/php5 \
--enable-mbstring \
--enable-fpm \
--with-jpeg-dir=/usr/lib && make && make install
選項含義:?
選項 | 說明 |
--prefix: | 指定將PHP程序安裝到哪個目錄下,如/usr/?local/php5.6 |
--with-mcrypt: | 加載數據加密等擴展工具支持。 |
--with-apxs2: | 設置 Apache HTTP Server提供的apxs模塊支持程序的文件位置。 |
--with-mysql: | 設置MySQL數據庫服務程序的安裝位置。 |
--with-mysqli: | 添加 mysqli擴展支持。包含訪問的mysql的一些命令 |
--with-config--file-path: | 設置PHP的配置文件php.ini將要存放的位置。 |
--enable-mbstring: | 啟用多字節字符串功能,以便支持中文等代碼。 |
–with-pdo-mysql | 使用 MySQL Native Driver 作為 PDO MySQL 支持庫。 |
–with-openssl | 啟用 OpenSSL 支持。 |
–enable-fpm | 啟用 FastCGI 進程管理器(PHP-FPM)。 |
–enable-sockets | 啟用套接字支持。 |
–enable-sysvshm | 啟用 System V 共享內存支持。 |
–enable-mbstring | 啟用多字節字符串支持。 |
–with-freetype-dir | 指定 FreeType2 安裝路徑(通常自動檢測)。 |
–with-jpeg-dir | 指定 JPEG 安裝路徑(通常自動檢測)。 |
–with-png-dir | 指定 PNG 安裝路徑(通常自動檢測)。 |
–with-zlib | 啟用 Zlib 支持(通常自動檢測)。 |
–with-libxml-dir | 指定 libxml2 安裝路徑。 |
–enable-xml | 啟用 XML 支持。 |
–with-mhash | 啟用 mhash 支持。 |
–with-bz2 | 啟用 BZip2 支持。 |
–enable-maintainer-zts | 啟用線程安全支持(僅適用于開發人員)。 |
?php.ini配置調整
在lnmp環境中設置,主要包括php的配置文件php.ini-development和php.ini-production
php.ini-development????????????????開發版樣例文件,用于學習、測試。
php.ini-production? ? ? ? ? ? ? ? ? ??生產版樣例文件,用于實際運營。
創建配置文件
cp php.ini-production /etc /php.ini
#提供php-fpm腳本
cp /usr/local/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpmon
配置文件部分信息
default_charset = "UTF-8 //設置默認字符集為utf-8
file_uploads = On //允許通過PHP網頁上傳文件
upload_max_filesize = 2M // 允許上傳的文件大小限制
max_file_uploads = 20 //每個http最多允許請求上傳的文件數量
post_max_size = 8M //每次通過表單post提交的數據量限制
short_open_tag = On //允許識別PHP短語法標記,即<?…?>
extension=php_mysqli.dll //添加mysql支持(修改或添加均可)
修改配置文件
pid = run/php-fpm.pid listen = 0.0.0.0 :9000
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
啟動php-fpm服務:
systemctl start php-fpm
netstat -anptl|grep php-fpm
添加防火墻配置
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --reload
添加nginx配置(server中添加)
location ~ .*\.(php|php5)?$ { root html;fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php;include fastcgi.conf;fastcgi_cache cache_fastcgi;fastcgi_cache_valid 200 302 1h; fastcgi_cache_valid 301 1d;fastcgi_cache_valid any 1m; fastcgi_cache_min_uses 1;fastcgi_cache_use_stale error timeout invalid_header http_500; fastcgi_cache_key http://$host$request_uri;
}
完整nginx.conf配置文件(例子)
user www www;worker_processes 4;worker_cpu_affinity 0001 0010 0100 1000; error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;pid logs/nginx.pid;
events {
use epoll;
worker_connections 65535;
multi_accept on; }http {
include
default_typemime.types;
application/octet-stream;#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main;sendfile on;
tcp_nopush on;
keepalive_timeout 65; tcp_nodelay on;
client_header_buffer_size 4k;
open_file_cache max=102400 inactive=20s; open_file_cache_valid 30s;
open_file_cache_min_uses 1; client_header_timeout 15;
client_body_timeout 15;
reset_timedout_connection on;
send_timeout 15; server_tokens off;
client_max_body_size 10m;fastcgi_connect_timeout 600;
fastcgi_send_timeout 600;
fastcgi_read_timeout 600;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
fastcgi_temp_path /usr/local/nginx1.10/nginx_tmp;
fastcgi_intercept_errors on;
fastcgi_cache_path /usr/local/nginx1.10/fastcgi_cache levels=1:2
keys_zone=cache_fastcgi:128m inactive=1d max_size=10g;gzip on;
gzip_min_length 2k;
gzip_buffers 4 32k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
gzip_vary on;
gzip_proxiedany;
server {listen 80;server_name www.csdn-jingyu.com;
#charset koi8-r;
#access_log logs/host.access.log main;location ~* ^.+\.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ { valid_referers none blocked www.benet.combenet.com;if ($invalid_referer) {#return 302 http://www.benet.com/img/nolink.jpg;return 404; break;
}
access_log off;}
location / {root html;index index.php index.html index.htm;
}
location ~* \.(ico|jpe?g|gif|png|bmp|swf|flv)$ { expires 30d;#log_not_found off; access_log off;
}
location ~* \.(js|css)$ { expires 7d;log_not_found off; access_log off;
}location = /(favicon.ico|roboots.txt) { access_log off;log_not_found off;
}
location /status {
stub_status on;
}
location ~ .*\.(php|php5)?$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_cache cache_fastcgi;
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_cache_key http://$host$request_uri;
}
#error_page 404 /404.html;# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;location = /50x.html { root html;} }
}
重啟或重載nginx服務
壓力測試
安裝httpd-tools軟件包使用ab工具
yum -y install httpd-tools
ab -c 5000 -n 50000 #地址或者域名
ab命令
選項 | 參數 | 說明 |
-n | 請求數 | 執行的請求總數 |
-c | 并發數 | 同時發送的請求個數 |
-t | 時間 | 測試持續的秒數(與?-n ?二選一) |
-p | POST 文件 | 包含 POST 請求的數據文件 |
-T | 內容類型 | POST 請求的內容類型(如?application/x-www-form-urlencoded ) |
-H | 自定義頭 | 添加自定義 HTTP 頭 |
-C | Cookie | 設置 Cookie 值 |
-k | 啟用 HTTP KeepAlive | 在多次請求之間保持連接打開 |
-v | 詳細輸出 | 顯示更多的細節信息 |
-w | 以 HTML 表格形式輸出 | 將結果以 HTML 表格的形式輸出到文件中 |
-x | 表格標簽屬性 | 與?-w ?一起使用,設置 HTML 表格的屬性 |
-y | CSV 輸出 | 將結果以 CSV 格式輸出到文件中 |
-Z | SSL 加密 | 使用 SSL 加密(需要 Apache 2.2.12 或更高版本) |
-z | HTTP 壓縮 | 使用 HTTP 壓縮 |
-i | 使用 HEAD 方法 | 使用 HTTP HEAD 方法而不是 GET 方法 |
-X | 使用代理 | 通過指定的代理服務器發送請求 |
-A | 認證 | 使用基本認證(需要用戶名和密碼) |
-P | SSL 私鑰文件 | SSL 私鑰文件路徑(用于客戶端證書認證) |
-F | SSL 證書格式 | SSL 證書格式(PEM 或 DER) |
-E | SSL 證書文件 | SSL 證書文件路徑(用于客戶端證書認證) |