構建php環境、安裝、依賴、nginx配置、ab壓力測試命令

目錄

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 相關模塊將無法編譯,這可能會導致一些依賴于這些模塊的功能無法正常工作。
  1. 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?二選一)
-pPOST 文件包含 POST 請求的數據文件
-T內容類型POST 請求的內容類型(如?application/x-www-form-urlencoded
-H自定義頭添加自定義 HTTP 頭
-CCookie設置 Cookie 值
-k啟用 HTTP KeepAlive在多次請求之間保持連接打開
-v詳細輸出顯示更多的細節信息
-w以 HTML 表格形式輸出將結果以 HTML 表格的形式輸出到文件中
-x表格標簽屬性與?-w?一起使用,設置 HTML 表格的屬性
-yCSV 輸出將結果以 CSV 格式輸出到文件中
-ZSSL 加密使用 SSL 加密(需要 Apache 2.2.12 或更高版本)
-zHTTP 壓縮使用 HTTP 壓縮
-i使用 HEAD 方法使用 HTTP HEAD 方法而不是 GET 方法
-X使用代理通過指定的代理服務器發送請求
-A認證使用基本認證(需要用戶名和密碼)
-PSSL 私鑰文件SSL 私鑰文件路徑(用于客戶端證書認證)
-FSSL 證書格式SSL 證書格式(PEM 或 DER)
-ESSL 證書文件SSL 證書文件路徑(用于客戶端證書認證)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/16899.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/16899.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/16899.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入理解一下棧

1、棧:數據結構 為什么 main()方法 最先執行,最后結束? 當然是因為 main()方法入棧啦。 2、棧:棧內存,主管程序的運行,生命周期和現成同步; 線程結束,棧內內存也就釋放了&#xff0c…

STM32_RCC

1、RCC RCC即Reset and Clock Control,復位和時鐘控制。通過stm32f10x結構圖可以看出RCC控制著stm32的AHB系統總線,而AHB總線又橋接APB1和APB2,分別通過它們控制不同的片上外設。如果要使用某個片上外設的功能,必須先通過…

SpringBoot集成騰訊IM流程

1.application.yaml中添加IM配置信息 #im模塊 im: identifier: admin sdkappid: 1400888888 key: ccf2dc88c1ca232cfabbd24906d5091ab81ba0250224abc 2.封裝IM工具類 Component Getter RefreshScope public class ImAdminSignConfig {/*** 簽名*/private String usersig;…

Apache Doris 基礎(一) -- Getting Started

Apache Doris 開源、實時數據倉庫 Apache Doris是一個用于實時分析的現代數據倉庫。 它提供大規模閃電般的實時數據分析。 實時獲取和存儲 在一秒鐘內基于推的微批處理和基于拉的流數據獲取。實時更新,追加和預聚合的存儲引擎閃電般的查詢 使用列式存儲引擎、MPP架構…

CDGP|數據治理策略揭秘:因企制宜,實現精準管控新高度

隨著信息化、數字化的深入推進,數據已經成為企業最重要的資產之一。如何高效、安全地管理和利用數據,成為企業面臨的重要課題。數據治理策略的制定與實施,成為解決這一問題的關鍵所在。本文將探討如何因企制宜,制定符合企業實際情…

23種設計模式全面總結 | 快速復習(附PDF+MD版本)

本篇文章是對于23種設計模式的一個全面的總結,受限于文章篇幅無法對每個設計模式做到全面的解析,但幾乎每個設計模式都提供了案例和類圖結構,非常適合快速復習和在學習設計模式之前的全預習把握。 💡文章的 pdf markdown 版本可通…

Mysql的復制技術

一、異步復制: 主服務器上的事務更新了數據后,就不管從服務器是否立刻跟上,主服務器繼續處理其他事務,而從服務器會在它空閑的時候去檢查并應用這些更新。 ——老師(源服務器)給學生(從服務器&…

JSP期末要點復習

一、JSP工作原理 1.客戶端請求JSP頁面:用戶通過瀏覽器發送一個請求到服務器,請求一個特定的JSP頁面。這個請求被服務器上的Web容器(如Apache Tomcat)接收。 2.JSP轉換為Servlet:當JSP頁面第一次被請求時&#xff0…

一戰中海洋敗,二戰梭哈兩電一郵!

這個系列會邀請上岸學長學姐進行經驗分享~ 經驗分享 大家好哇,能寫這個帖子,本人倍感榮幸。 先介紹一下個人情況吧,我本科就讀于中北大學,GPA:3.61/5,有電子類競賽,大創項目,大學…

JavaSE 字符串String及相關API StringBuilder StringJoiner 底層原理 詳解

字符串和相關API java不會字符串即涼一半 學好字符串很重要 API 為應用程序編程接口 獲得字符串對象 1.直接賦值 空參構造 string s1“abc”; s1 記錄的是串池里的地址 2.用new的方式 string s2new string(); new(在堆內存里開辟空…

opencv調用攝像頭保存視頻

opencv調用攝像頭保存視頻 文章目錄 opencv調用攝像頭保存視頻保存視頻(采用默認分辨率640 x 480)保存視頻(指定分辨率,例1280720) 保存視頻(采用默認分辨率640 x 480) import cv2 import time # 定義視頻捕捉對象 cap cv2.Vide…

SD4054單節鋰電子恒定電壓線性充電器SOT-23-5封裝電源適配器

SD4054是一款完整的單節鋰離子電池采用恒定電流/恒定電壓線性充電器。它采用的 SOT-23-5封裝,只需外接極少的外部元件,使得SD4054成為便攜式應用的理想選擇。 SD4054可以適合USB電源和適配器電源工作。 采用了內部PMOSFET架構,加上防倒充電路…

數據安全革命:Web3帶來的隱私保護創新

隨著數字化時代的發展,數據安全和隱私保護問題日益突出。傳統的中心化數據存儲和管理方式已經無法滿足日益增長的數據安全需求,而Web3作為下一代互聯網的新興力量,正以其去中心化、加密安全的特性,引領著一場數據安全革命。本文將…

pyinstaller打包提示“文件所在的卷已被外部更改,因此打開的文件不再有效。”

環境 anaconda : 24.1.2python : 3.7.13pyinstaller : 5.13.0 問題描述 之前使用pyintaller執行spec文件打包都是能成功,今天打包報了“文件所在的卷已被外部更改,因此打開的文件不再有效。”的錯誤 Traceback (most recent call last):File "C…

「架構」微服務

微服務架構是一種軟件開發架構,它將應用程序作為一組小的服務構建,每個服務實現特定的業務功能,并通過輕量級的通信機制(通常是HTTP RESTful API)進行交互。這些服務是松耦合的,可以獨立部署、擴展和更新。 核心功能: 服務分解:將應用程序分解為一組小型、獨立的服務。…

ecc dsa rsa des

ECC(橢圓曲線密碼學)、DSA(數字簽名算法)、RSA(一種公鑰加密技術)和DES(數據加密標準)都是密碼學領域中重要的加密和安全技術。下面是對這四種技術的簡要介紹: 橢圓曲線密…

想提升,應該學PMP還是NPDP?

NPDP(新產品開發專業認證)是由美國產品開發與管理協會(PDMA)發起的國際認證,涵蓋新產品開發的理論、方法和實踐,為公司提供全方位的知識體系支持。通過考試獲得NPDP認證證書,能夠提升個人工作能…

條款8:了解各種不同意義的new和delete

有時候我們覺得,C的術語仿佛是要故意讓人難以理解似的。 這里就有一個例子:請說明new operator 和operator new 之間的差異(譯注:本書所說的new operator,即某些C教程如C Primer 所謂的new expression) 當你寫出這樣…

粒子愛心特效||輕松實現浪漫效果||完整代碼

關注微信公眾號「ClassmateJie」有完整代碼以及更多驚喜等待你的發現。 簡介/效果展示 你是否曾經想過,在特殊的日子里給你的愛人一個驚喜?或者在朋友的生日派對上,給他們展示一個充滿愛意的特效?今天,我要分享一個我…