天天看點

php源碼安裝,如何使用源碼的方式安裝PHP環境

作者:pythonschool

此頁内容

  • php介紹
  • php的應用
  • web工作原理
  • php源碼安裝
  • php相關配置資訊
  • nginx源碼安裝
  • nginx相關配置資訊
  • 配置nginx伺服器
  • 配置php解析器

#php介紹

PHP即“超文本預處理器”。

PHP原始為Personal Home Page的縮寫,已經正式更名為 "PHP: Hypertext Preprocessor"。

#php的應用

  • 服務端腳本,與web伺服器的公共網關接口(CGI)互動解析PHP程式
  • 指令行腳本,與cron結合做任務排程
  • 調用相關擴充支援處理更多的功能,如圖像,PDF,excel,郵件等.

#web工作原理

fastcgi是cgi的更新版,php-fpm是php-cgi的更新版,https是http的更新版.

用戶端與web伺服器通過超文本傳輸協定(等)進行通信.

web伺服器與php解析器(等)通過cgi(等)進行通信.

php源碼安裝,如何使用源碼的方式安裝PHP環境

web工作原理

#php源碼安裝

下載下傳位址: https://www.php.net/distributions/php-8.2.8.tar.bz2open in new window

配置階段:./configure

執行./configure時出現錯誤提示,大部分是因為預設相關軟體導緻,看提示安裝即可.

當出現Thank you for using PHP.即配置完成.

編譯階段:make

在1cpu,1G記憶體,1G交換空間的情況下,make指令會最高占用99%的cpu資源,記憶體最高使用600M左右.

如果說自有的ecs配置不高的情況下,選擇源碼編譯并不是一個好的選擇.

當出現Build complete.即編譯完成.

安裝階段:make install

檢視一看預設安裝了哪些子產品,php -m

其中發現了libxml和sqlite3這就是為什麼在配置階段會提示安裝libxml2-devel,sqlite-devel的原因了.

yum install -y wget
yum install -y bzip2
wget http://down.pythonschool.com/php/php-8.2.8.tar.bz2
bzip2 -d php-8.2.8.tar.bz2
tar -xf php-8.2.8.tar
cd php-8.2.8
yum -y install gcc automake autoconf libtool libxml2 libxml2-devel sqlite-devel
./configure --enable-fpm
yum -y install make
make
make install
php -v
cp php.ini-development /usr/local/php/php.ini
cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
cp sapi/fpm/php-fpm /usr/local/bin
useradd -s /sbin/nologin -M nginx
cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
php-fpm -t
           

vim /usr/local/php/php.ini

cgi.fix_pathinfo=0
           

vim /usr/local/etc/php-fpm.conf

// SHIFT+G
include=/usr/local/etc/php-fpm.d/*.conf
           

vim /usr/local/etc/php-fpm.d/www.conf

user = nginx
group = nginx
           

#php相關配置資訊

Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20220829/
Installing PHP CLI binary:        /usr/local/bin/
Installing PHP CLI man page:      /usr/local/php/man/man1/
Installing PHP FPM binary:        /usr/local/sbin/
Installing PHP FPM defconfig:     /usr/local/etc/
Installing PHP FPM man page:      /usr/local/php/man/man8/
Installing PHP FPM status page:   /usr/local/php/php/fpm/
Installing phpdbg binary:         /usr/local/bin/
Installing phpdbg man page:       /usr/local/php/man/man1/
Installing PHP CGI binary:        /usr/local/bin/
Installing PHP CGI man page:      /usr/local/php/man/man1/
Installing build environment:     /usr/local/lib/php/build/
Installing header files:          /usr/local/include/php/
Installing helper programs:       /usr/local/bin/
  program: phpize
  program: php-config
Installing man pages:             /usr/local/php/man/man1/
  page: phpize.1
  page: php-config.1
Installing PDO headers:           /usr/local/include/php/ext/pdo/
           

#nginx源碼安裝

下載下傳位址: http://nginx.org/download/nginx-1.25.1.tar.gzopen in new window

wget http://down.pythonschool.com/php/nginx-1.25.1.tar.gz
tar zxf nginx-1.25.1.tar.gz 
cd nginx-1.25.1
yum -y install pcre-devel openssl openssl-devel gzip
./configure --with-http_ssl_module --sbin-path=/usr/local/bin/nginx --user=nginx --group=nginx
make
make install
nginx -t
nginx -s reload
           

#nginx相關配置資訊

nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
           

[emerg] getpwnam("nginx") failed

useradd -s /sbin/nologin -M nginx
           

#配置nginx伺服器

在nginx裡配置fastcgi協定的相關參數,将資料通過9000端口傳遞出去.

vim /usr/local/nginx/conf/nginx.conf

location ~ \.php$ {
    root           /usr/local/nginx/html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}
           

生成一個測試檔案 http://localhost/index.phpopen in new window

echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php
           

#配置php解析器

監聽9000端口進行程式解析.

php-cgi

執行指令:

/usr/local/bin/php-cgi -b 127.0.0.1:9000 -c /usr/local/php/php.ini
           

php-fpm

執行指令:php-fpm

vim /usr/local/etc/php-fpm.d/www.conf

listen = 127.0.0.1:9000           

繼續閱讀