运行环境:实验室虚拟环境
系统型号:CtenOS-8.4-x86_64
Linux版本:linux-8-x86_64
CPU&内存:4H + 4GB
系统内核:
uname -r
4.18.0-305.10.2.el8_4.x86_64
Apache
,查看安装的版本。源码编译安装【Apache】的方法请参阅……apachectl -v
#Server version: Apache/2.4.37 (centos)
#Server built: May 20 2021 04:33:06
#或者...
httpd -v
Nginx
,查看安装的版本。源码编译安装【Ninux】的方法请参阅……nginx -v
#nginx version: nginx/1.20.1
MySQL
,查看安装的版本。源码编译安装【MySQL】的方法请参阅……mysql -V
#mysql Ver 8.0.25 for Linux on x86_64 (Source distribution)
#或者...登录数据库...
status
CentOS-8*
软件包:dnf update
yum install epel-release
php
源码包 & 扩展文件存放目录:mkdir lanmpp
cd /root/lanmpp
mkdir php8
cd php8/
oniguruma
所需的工具&依赖:yum -y install autoconf automake libtool make gcc gcc-c++ vim wget
oniguruma
:wget https://github.com/kkos/oniguruma/archive/refs/tags/v6.9.7.1.tar.gz -O oniguruma-6.9.7.1.tar.gz
oniguruma
:tar -xf oniguruma-6.9.7.1.tar.gz
rm -rf oniguruma-6.9.7.1.tar.gz
cd oniguruma*/
./autogen.sh && ./configure --prefix=/usr
make && make install
libzip-devel
不用指定安装目录:cd ..
wget https://libzip.org/download/libzip-1.8.0.tar.gz
tar -xvf libzip-1.8.0.tar.gz
rm -rf libzip-1.8.0.tar.gz
cd libzip*/
libzip
,需要用 cmake
的方式才能编译安装,所以,得先安装上 cmake3
:yum -y install cmake3
#===安装后cmake3的版本确认===#
cmake --version
cmake version 3.20.2
cmake3
编译安装 libzip
:mkdir build && cd build
cmake3 ..
make && make install
libzip
环境变量echo export PATH=$PATH:/usr/local/bin/zipcmp >>/etc/profile
source /etc/profile # 让配置生效...
yum -y install bzip2 bzip2-devel curl curl-devel nano net-tools lsof gmp-devel libcurl libcurl-devel libXpm-devel libc-client-devel libicu-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel libicu-devel libxslt libxslt-devel libxml2-devel libedit openldap openldap-devel openssl openssl-devel postgresql-devel net-snmp-devel readline readline-devel unixODBC-devel mysql-devel sqlite-devel
cd /root/lnampp/php8
wget ftp://xmlsoft.org/libxml2/libxml2-2.9.12.tar.gz
tar -xvf libxml2-2.9.12.tar.gz
rm -rf libxml2-2.9.12.tar.gz
cd libxml2*/
./configure --prefix=/usr/local/libxml2/
make && make install
cd ..
wget https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
tar -xvf libmcrypt-2.5.8.tar.gz
rm -rf libmcrypt-2.5.8.tar.gz
cd libmcrypt*/
./configure --prefix=/usr/local/libmcrypt/
make && make install
cd libltdl/
./configure --enable-ltdl-install
make && make install
cd /root/lnampp/php8
wget https://jztkft.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz
tar -xf mhash-0.9.9.9.tar.gz
rm -rf mhash-0.9.9.9.tar.gz
cd mhash*/
./configure
make && make install
cd ..
wget https://udomain.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
tar -xvf mcrypt-2.6.8.tar.gz
rm -rf mcrypt-2.6.8.tar.gz
cd mcrypt*/
export LD_LIBRARY_PATH=/usr/local/libmcrypt/lib:/usr/local/lib # 环境变量设置
./configure --with-libmcrypt-prefix=/usr/local/libmcrypt
make && make install
cd ..
wget http://ijg.org/files/jpegsrc.v9d.tar.gz
tar -xvf jpegsrc.v9d.tar.gz
rm -rf jpegsrc.v9d.tar.gz
cd jpeg-9d/
./configure --prefix=/usr/local/jpeg9/ --enable-shared --enable-static
make && make install
cd ..
wget https://nav.dl.sourceforge.net/project/libpng/libpng16/1.6.37/libpng-1.6.37.tar.gz
tar -xvf libpng-1.6.37.tar.gz
rm -rf libpng-1.6.37.tar.gz
cd libpng*/
./configure --prefix=/usr/local/libpng
make && make install
cd ..
wget https://bigsearcher.com/mirrors/nongnu/freetype/freetype-2.11.0.tar.gz
tar -xvf freetype-2.11.0.tar.gz
rm -rf freetype-2.11.0.tar.gz
cd freetype*/
./configure --prefix=/usr/local/freetype/
make && make install
php
源码包:cd ..
wget https://www.php.net/distributions/php-8.0.9.tar.gz
tar -xvf php-8.0.9.tar.gz
rm -rf php-8.0.9.tar.gz
cd php*/
CentOS
原装镜像源下),应该会报错…configure: error: Package requirements (libedit) were not met:
//配置:错误:未满足程序包要求(libedit):
libedit
的,只是其扩展包 libedit-devel
,由于系统源中无此包,只能通过国外镜像来解决…dnf --enablerepo=powertools install libedit-devel
php
:./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-scan-dir=/usr/local/php/etc/conf.d \
--with-config-file-scan-dir=/usr/local/php/etc/php.d \
--with-libxml-dir=/usr/local/libxml2 \
--with-jpeg-dir=/usr/local/jpeg9 \
--with-png-dir=/usr/local/libpng \
--with-freetype-dir=/usr/local/freetype \
--with-mcrypt=/usr/local/libmcrypt \
--with-pdo-mysql=/usr/local/mysql \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql
--with-fpm-user=www \
--with-fpm-group=www \
--with-apache=DIR \
--with-nginx=DIR \
--with-mysql=DIR \
--with-bz2 \
--with-curl \
--with-curlwrappers \
--with-gd \
--with-gettext \
--with-imap-ssl \
--with-kerberos \
--with-libedit \
--with-mhash \
--with-mysqli \
--with-openssl \
--with-pear \
--with-readline \
--with-tidy \
--with-xsl \
--with-xmlrpc \
--with-zlib \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-openssl-dir \
--with-iconv-dir \
--with-libxml-dir \
--with-zlib-dir \
--without-gdbm \
--with-ldap=shared \
--disable-cgi \
--disable-rpath \
--disable-short-tags \
--disable-debug \
--disable-fileinfo \
--enable-bcmath \
--enable-calendar \
--enable-exif \
--enable-ftp \
--enable-fpm \
--enable-gd \
--enable-gd-jis-conv \
--enable-intl \
--enable-inline-optimization \
--enable-libxml \
--enable-mbregex \
--enable-mbstring=all \
--enable-mysqlnd \
--enable-mysqlnd-compression-support \
--enable-gd-jis-conv \
--enable-inline-optimizatio \
--enable-maintainer-zts \
--enable-opcache \
--enable-pcntl \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvshm \
--enable-sysvsem \
--enable-shmop \
--enable-soap \
--enable-sysvshm \
--enable-wddx \
--enable-xml \
--enable-zip
阿里云
镜像源下)报错…(这里只是举例)…configure: error: Package requirements (libxml-2.0 >= 2.9.0) were not met:
//配置:错误:未满足程序包要求(libxml-2.0>=2.9.0):
Package 'libxml-2.0', required by 'virtual:world', not found
//没有找到“virtual:world”所需要的包“libxml-2.0”...
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/libxml2/lib/pkgconfig"
php
:make -j 6
make test
make install
make test
,可以不执行,(共测试14749个文件)…php
至系统环境变量中:echo export PATH=$PATH:/usr/local/php/bin >>/etc/profile
#或者编辑...
vim /etc/profile
#末行加入...
export PATH=$PATH:/usr/local/php/bin
#让设置生效...
source /etc/profile
php
安装的版本:php -v
#以下是打印结果...
PHP 8.0.9 (cli) (built: Aug 9 2021 08:45:39) ( ZTS )
Copyright (c) The PHP Group
Zend Engine v4.0.9, Copyright (c) Zend Technologies
#或者执行以下命令,打印结果都一样...
php --version
php
映射软连接:ln -s /usr/local/php/bin/ /usr/bin/php
php.ini
:cp /root/lanmpp/php8/php-8.0.9/php.ini-production /usr/local/php/etc/php.ini
ls /usr/local/php/etc
pear.conf php-fpm.conf.default php-fpm.d php.ini
useradd --shell /sbin/nologin -g www www
Apache
配置文件 httpd.conf
,以支持对 *.php
页面进行解析…vim /usr/local/apache2/etc/httpd.conf
#ServerName localhost:80
ServerName 123.123.123.0:80
#或......
ServerName mytest.com:80
Require all denied
改为 Require all granted
:
AllowOverride none
Require all denied
AllowOverride none
Require all granted
之间添加
:AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .php8
AddType application/x-httpd-php-source .phps
index.php
,在模块
之间添加
:
DirectoryIndex index.html
DirectoryIndex index.php index.html
php
的模块:/usr/local/apache2/bin/apachectl -M
libphp.so
模块已被加载…php_module (shared)
libphp.so
的模块,那么检查是否有 php
模块的文件 libphp.so
:ls /usr/local/apache2/modules/libphp.so
#=======================================
#/usr/local/apache2/modules/libphp.so
libphp8.so
文件,则检查在 httpd.cnf
配置文件中是否加载…LoadModule php_module modules/libphp.so
apache
用户 & 属组User daemon
Group daemon
User www
Group www
apache
网站根目录 htdocs
下,新建 php
测试内容文件 phpinfo.php
:vim /usr/local/apache2/htdocs/phpinfo.php
<?php
phpinfo();
?>
apache
:/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start
phpinfo.php
…nginx.conf
:vim /usr/local/nginx/nginx.conf
php
位置模块,原字段(60-75行之间):# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
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;
}
server
模块,原字段(40-48行之间):location / {
root html;
index index.html index.htm;
}
location / {
root html;
index index.php index.html index.htm;
}
nginx
重新载入…nginx -s reload
php
【9000】端口:iptables
防火墙:yum install iptables-services
iptables
,开启 & 放行 php
【9000】端口:vim /etc/sysconfig/iptables
#将如下字段添加到相应的端口位置中...
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT
#保存退出...
:wq
systemctl restart iptables.service #重启【iptables】生效配置
systemctl enable iptables.service #设置【iptables】开机自启动
/usr/libexec/iptables/iptables.init restart #重置【iptables】
netstat -tnl
phpinfo.php
在 apache
中能成功运行(因为它只是一个 php
页面而已)。但自身并未启动,所以还得继续配置…www.conf
配置文件并修改:cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
vim /usr/local/php/etc/php-fpm.d/www.conf
user = www
group = www
pm = dynamic #【动态模式开启】
pm.start_servers = 20 #系统预设默认:pm.start_servers = 2【子进程数】
pm.min_spare_servers = 5 #系统预设默认:pm.min_spare_servers = 1【最小控程数,节省访问请求时间】
pm.max_spare_servers = 35 #系统预设默认:pm.max_spare_servers = 3【最大空闲进程数】
pm.max_children = 50 #系统预设默认:pm.max_children = 5【最大的进程数】
pm.max_requests = 500 #系统预设默认:;pm.max_requests = 500【垃圾冗余处理】
request_slowlog_timeout = 1 #系统预设默认:;request_slowlog_timeout = 0【慢查询超时设置】
request_terminate_timeout = 900 #系统预设默认:;request_terminate_timeout = 0【请求终止链接超时设置】
slowlog = /opt/$pool.log.slow #系统预设默认:;slowlog = /log/$pool.log.slow
www.conf
配置文件,以启动慢查询测试页面功能,路径可自定义:vim /usr/local/php/etc/php-fpm.d/www.conf
pm.status_path = /php_status
#系统预设默认:;pm.status_path = /status【启动慢查询测试页面功能】路径可自定义,但两个文件中的【status】名要相同...
nginx
配置文件 nginx.conf
:vim /usr/local/nginx/nginx.conf
#将
location ~ \.php$ {
#改为
location = /php_status {
nginx
重新载入…nginx -s reload
php-fpm
提供配置文件cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
php.ini
文件:vim /usr/local/php/etc/php.ini
post_max_size = 256M #系统预设默认:post_max_size = 8M
upload_max_filesize = 256M #系统预设默认:upload_max_filesize = 2M
php-fpm
:/usr/local/php/sbin/php-fpm
netstat -an | grep 9000
#【php-fpm】启动成功,【9000】端口已开启...
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
nginx
测试 test.php
页面:vim /usr/local/nginx/html/test.php
<?php
echo "php hello world!";
?>
nginx
重新载入…nginx -s reload
php-fpm
脚本文件:find / -name 'init.d.php-fpm'
#/root/lanmpp/php8/php-8.0.9/sapi/fpm/init.d.php-fpm
--------------------------------------------------------------------------
cp /root/lanmpp/php8/php-8.0.9/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
php-fpm
脚本可执行权限:chmod a+x /etc/init.d/php-fpm
php-fpm
:/usr/local/php/sbin/php-fpm
php-fpm
服务文件 php-fpm.service
:vim /usr/lib/systemd/system/php-fpm.service
[Unit]
Description=php-fpm
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
PrivateTmp=true
[Install]
WantedBy=multi-user.target
system
配置:systemctl daemon-reload
system
方式启动 php-fpm
服务:php-fpm start #服务帮助,安装软件包“php-fpm”以提供命令“php-fpm”? [N/y] n,可选择暂时不安装...
service php-fpm start #需添加php-fpm到service服务的配置...
systemctl start php-fpm
systemctl start php-fpm.service
#Starting php-fpm done
**注意:**若遇报错 。
或: 错误:FPM初始化失败……
则需先停止 php-fpm
进程,然后再执行启动命令…
killall php-fpm
php-fpm
服务:php-fpm stop #服务帮助,安装软件包“php-fpm”以提供命令“php-fpm”? [N/y] n,可选择暂时不安装...
systemctl stop php-fpm
systemctl stop php-fpm.service
php-fpm
服务:systemctl daemon-reload
systemctl restart php-fpm
systemctl restart php-fpm.service
php-fpm
服务:php-fpm restart #服务帮助,安装软件包“php-fpm”以提供命令“php-fpm”? [N/y] n,可选择暂时不安装...
service php-fpm restart
systemctl restart php-fpm
php-fpm
:php-fpm -R
/etc/init.d/php-fpm start
/usr/local/php/sbin/php-fpm
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf
php-fpm
:/etc/init.d/php-fpm stop
killall php-fpm
pkill php-fpm
kill -INT cat /usr/local/php/var/run/php-fpm.pid
php-fpm
:/etc/init.d/php-fpm reload
/etc/init.d/php-fpm restart
kill -USR2 #+ php-fpm的master主进程号 #查看php-fpm主进程号:ps -ef|grep php
/usr/local/php/sbin/php-fpm &
kill -USR2 cat /usr/local/php/var/run/php-fpm.pid
php
不匹配,从而影响安装扩展。待扩展安装完成了,再行安装 php-fpm
…php-fpm
服务 & 进程状态:systemctl status php-fpm -l
systemctl status php-fpm
systemctl status php-fpm.service
service php-fpm status
php-fpm
开机自启动systemctl enable php-fpm
----------------------------------
/usr/lib/systemd/systemd-sysv-install enable php-fpm
systemctl didable php-fpm
php-fpm
服务加入 chkconfig
系统 service
管理序列中…chkconfig --add /etc/init.d/php-fpm
chkconfig php-fpm on
#注意:正在将请求转发到“systemctl enable php-fpm.service”。
/usr/lib/systemd/systemd-sysv-install enable php-fpm
chkconfig --list php-fpm
#打印结果如下........
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
php-fpm 0:关 1:关 2:开 3:开 4:开 5:开 6:关
php-fpm
开机自行启动设置成功!reboot
php-fpm
服务状态(确认是否已自行启动)…systemctl status php-fpm.service
#或执行...
systemctl status php-fpm -l
P-22【PHP】测试 & 已安装模块检测:
cd /usr/local/php/bin
ls
pear peardev pecl phar phar.phar php php-config phpdbg phpize
------------------------------
vim test.php
------------------------------
/usr/local/php/bin/php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gettext
gmp
hash
iconv
intl
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
xsl
zlib
[Zend Modules]
#经查发现还有N个模块没装...
apache
网站根目录下的 test.php
文件:cd /usr/local/apache2/htdocs
vim test.php
--------------------------------------------
\n";
}
:wq
--------------------------------------------
/usr/local/php/bin/php test.php
cat test.php
OK!内测成功!
再通过浏览器,用 apache
执行:
php
文件挂载 apache
成功…这一步实际是多余的,因为测试过 phpinfo.php
配置文件,只是想再测试一下代码文件!22.1 编译安装 imagemagick
:
cd /root/lanmpp/php8
wget https://download.imagemagick.org/ImageMagick/download/ImageMagick-7.1.0-4.tar.gz
tar -xvf ImageMagick-7.1.0-4.tar.gz
rm -rf ImageMagick-7.1.0-4.tar.gz
cd ImageMagick*/
./configure --prefix=/usr/local/ImageMagick --enable-shared --enable-lzw --enable-modules --without-perl
make && make install
make check
convert -version
//*打印信息......
Version: ImageMagick 6.9.10-86 Q16 x86_64 2020-01-13 https://imagemagick.org
Copyright: © 1999-2020 ImageMagick Studio LLC
imagemagick
环境变量设置:export PKG_CONFIG_PATH=/usr/local/imagemagick/lib/pkgconfig/
phpize
方式安装 imagick
:phpize
是用来扩展 php
模块的,通过它可建立 php
所有内置的 & 外挂的模块。
autoconf
工具 ,刚需要安装,其作用是在执行 phpize
时,生成 configure
可执行文件:Autoconf
是一个用于生成 shell
脚本的工具,功能强大,并能跨平台自动配置软件源代码,以适应多种类似 POSIX
的系统。极其方便的让我们想使用的软件包,能在所有的不同系统中,均能进行编译。yum -y install autoconf
yum -y install ImageMagick-devel
cd ..
wget https://pecl.php.net/get/imagick-3.5.1.tgz
tar -xvf imagick-3.5.1.tgz
rm -rf imagick-3.5.1.tgz
cd imagick*/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-imagick=/usr/local/imagemagick
./configure --prefix=/usr/local/php/lib/php/extensions --with-php-config=/usr/local/php/bin/php-config --with-imagick=/usr/local/imagemagick
make && make install
make install
安装后,会自动生成新安装 php
扩展模块的扩展目录:Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20200930/
ls /usr/local/php/lib/php/extensions/no-debug-zts-20200930/
imagick.so opcache.so
#可以看到该目录中,已经有了【imagick.so】这个模块...
php
挂载支持 imagick
:vim /usr/local/php/etc/php.ini
#搜索关键词...
?extension
![php扩展模块目录](https://img-blog.csdnimg.cn/f8087779f5c44c43b7808f67e58439b0.png?x-oss-process=imag e/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NuZ2Vl,size_16,color_FFFFFF,t_70#pic_center)
php
扩展模块目录大约在php.ini
(950-970行之间),将新装模块目录放到结尾处…将 extension=imagick.so
模块添入其中…extension_dir="usr/local/php/lib/php/extensions/no-debug-zts-20200930/" /*添加这个目录*/
extension="imagick.so"
:wq
保存退出!通过浏览器查看 phpinfo.php
配置文件,看 php
是否成功挂载 imagick
模块 :
phpinfo.php
的方法,请参见本文(第15.2节: 启动【apache】测试【php】)…apache
。说明:每当修改 php
的配置文件后,只需要重启 apache
即可,不需要重启 php-fpm
的操作。/usr/local/apache2/bin/apachectl restart
php
配置文件: OK!php
已成功挂载 imagick
模块…
查看模块是否添加:
grep '^extension=' /usr/local/php/etc/php.ini
extension=opcache.so
extension=imagick.so
......
igbinary
:cd /root/lanmpp/php8
wget http://pecl.php.net/get/igbinary-3.1.6.tgz
tar -xvf igbinary*
rm -rf igbinary-3.2.6.tgz
cd igbinary*/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
php
扩展模块目录大约在 php.ini
(950~970行之间),将新装模块目录放到结尾处…将 extension=igbinary.so
添入其中…vim /usr/local/php/etc/php.ini
extension_dir="usr/local/php/lib/php/extensions/no-debug-zts-20200930/"
extension=igbinary.so
apache
服务配置,打开浏览器查看…service apache restart
php
已成功挂载 igbinary
模块…phpize
&编译安装 gd
库:GD
库,用于创建图形&图像的函数库, C
语言编写,可在 PHP
、Perl
等多种语言中使用。GD
库中提供了一系列用来处理图片的 API
(应用程序编程接口),使用 GD
库可以处理图片、生成图片,也可以给图片加水印等。还能生成汉字验证码,或者对网站数据生成统计图,与 Ajax
技术结合还能制作出各种强大的动态图表等众多功能。但有几个版本的 gd
库,对 GIF
相关函数无法使用。cd /root/lanmpp/php8/php*/ext/gd
ls
config.m4 CREDITS gd.c gd_compat.h libgd tests
config.w32 gd_arginfo.h gd_compat.c gd.stub.php php_gd.h
#当前gd目录下,执行/usr/local/php/bin/phpize命令...
/usr/local/php/bin/phpize
#生成如下安装可执行文件...
configure
[root@localhost gd]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20200930
Zend Module Api No: 20200930
Zend Extension Api No: 420200930
[root@localhost gd]# ls
autom4te.cache config.m4 config.w32 gd.c gd.stub.php run-tests.php
build configure CREDITS gd_compat.c libgd tests
config.h.in configure.ac gd_arginfo.h gd_compat.h php_gd.h
OK!安装的可执行文件 configure
已生成,接下来可执行 gd
扩展安装了…
预编译 & 编译安装 libgd
,说明:因为 gd
库需要调用前面安装的zlib、jpeg、freetype和libpng,所以需指定它们的安装位置,才能正确调用这些软件。不过因为前面安装 zlib
时没有指定安装位置,所以指定不了【——with-zlib=/usr/local/zlib/】的位置选项,但 gd
会自动到默认安装位置中寻找 zlib
:
./configure --prefix=/usr/local/gd --with-php-config=/usr/local/php/bin/php-config --with-jpeg-dir=/user/local/jpeg9 --with-png-dir=/user/local/libpng --with-freetype-dir=/user/local/freetype --with-zlib
make && make install
make clean && make distclean
其中【–with-php-config】是指向安装 php
后生成的一个配置工具,主要用于扩展的编译配置…
与安装 imagick
一样,
执行完 make install
安装后,会自动生成新安装 php
扩展模块的扩展目录:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20200930/
ls /usr/local/php/lib/php/extensions/no-debug-zts-20200930/
gd.so imagick.so opcache.so
#可以看到该目录中,已经安装了【gd.so】这个模块...
php
挂载支持 gd
:
php
挂载支持 imagick
)方法一样,参考即可…#将"gd.so"添加到"php.ini"配置文件中...
extension_dir="usr/local/php/lib/php/extensions/no-debug-zts-20200930/"
extension=imagick.so
extension=igbinary.so
extension=gd.so
apache
,浏览器中打开 phpinfo.php
配置文件:service apache restart
php
已成功挂载 gd
库扩展模块…memcache
扩展模块:git clone git://github.com/memcached/memcached.git
cd /root/lanmpp/php8
wget https://pecl.php.net/get/memcache-8.0.tgz
tar -xvf memcache-8.0.tgz
rm -rf memcache-8.0.tgz
cd memcache*/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
ls /usr/local/php/lib/php/extensions/no-debug-zts-20200930/
gd.so memcache.so imagick.so opcache.so
memcache.so
模块添加到 php.ini
配置文件中:vim /usr/local/php/etc/php.ini
extension_dir="usr/local/php/lib/php/extensions/no-debug-zts-20200930/"
extension=memcache.so
apache
,浏览器中打开 phpinfo.php
配置文件:/usr/local/apache2/bin/apachectl restart
php
已成功挂载 memcache
库扩展模块…memcached
使用 libevent
来进行网络并发连接的处理,所以得先安装 libevent
依赖:yum -y install libevent-devel
cd ..
wget http://www.memcached.org/files/memcached-1.6.10.tar.gz
tar -xvf memcached-1.6.10.tar.gz
rm -rf memcached-1.6.10.tar.gz
cd memcached*/
./configure --prefix=/usr/local/memcache
make && make install
memcached
用户,该用户不用登录,所以不用设置登录密码:useradd -r -s /sbin/nologin memcache
memcache
服务,设置为后台运行:/usr/local/memcache/bin/memcached -umemcache &
memcache
是否正常启动,并监听了 11211
端口:netstat -an | grep :11211
-----------------------------------------
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN
tcp6 0 0 :::11211 :::* LISTEN
11211
端口连接测试:yum -y install telnet
telnet localhost 11211
#该方法可以访问到任何端口的信息......
-----------------------------------------
Trying ::1...
Connected to localhost.
Escape character is '^]'.
------------信息查询举例----------------
stats
STAT pid 209390
STAT uptime 970
STAT time 1628777740
STAT version 1.6.10
STAT libevent 2.1.8-stable
STAT pointer_size 64
STAT rusage_user 0.084402
STAT rusage_system 0.068763
STAT max_connections 1024
......
---------------
quit
Connection closed by foreign host.
memcached
服务器运行的状态信息。add
命令相同。flush_all
指令。MemCache
协议会对错误部分做出提示。
Redis
最新稳定版cd ..
wget https://download.redis.io/releases/redis-6.2.5.tar.gz
Redis
属于 iso
软件,所以不用预编译配置,直接 make install
编译 & 安装 Redis
:tar -xvf redis-6.2.5.tar.gz
rm -rf redis-6.2.5.tar.gz
cd redis*/
make install PREFIX=/usr/local/redis
-----------------
make[1]: 离开目录“/root/lanmpp/php8/redis-6.2.5/src”
redis
etc
目录:mkdir /usr/local/redis/etc
redis.conf
文件:mv /root/lanmpp/php8/redis-6.2.5/redis.conf /usr/local/etc/redis.conf
redis.conf
文件,并将其设置为后台启动:vim /usr/local/etc/redis.conf
#将daemonize no 改成 daemonize yes (大约在255-260行之间)
Redis
服务:/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
Redis
是否正常启动,并监听了 6379
端口:netstat -an | grep :6379
------------------------------------------------
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN
tcp6 0 0 ::1:6379 :::* LISTEN
6379
端口连接测试:telnet localhost 6379
-----------连接成功-----------------
Trying ::1...
Connected to localhost.
Escape character is '^]'.
----------变量测试--------------
set one 1000
+OK
get one
$4
1000
quit
+OK
Connection closed by foreign host.
PHP
安装 redis
扩展模块:cd ..
wget https://codeload.github.com/phpredis/phpredis/zip/develop
unzip phpredis-develop.zip
cd phpredis-develop/
configure
:/usr/local/php/bin/phpize
redis
扩展模块:./configure --with-php-config=/usr/local/php/bin/php-config --enable-redis
make && make install
--------------------------------------------------
ls /usr/local/php/lib/php/extensions/no-debug-zts-20200930/
gd.so imagick.so memcache.so opcache.so redis.so
redis.so
模块添加到 php.ini
配置文件中:vim /usr/local/php/etc/php.ini
extension_dir="usr/local/php/lib/php/extensions/no-debug-zts-20200930/"
extension=redis.so
apache
,浏览器中打开 phpinfo.php
配置文件:/usr/local/apache2/bin/apachectl restart
php
已成功挂载 redis
库扩展模块…zend_opcache
扩展模块:vim /usr/local/php/etc/php.ini
----------大约(960行)----------
;zend_extension=opcache
------去掉前面的注释冒号';'------
zend_extension=opcache
zend_opcache
文件:#------采用官方开发组推荐的配置------
[zend_opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.fast_shutdown=1
opcache.revalidate_freq=60
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
#---就在'zend_extension=opcache'下面添加即可---
:wq
apache
,浏览器中打开 phpinfo.php
配置文件:/usr/local/apache2/bin/apachectl restart
php
已成功开启 zend_opcache
扩展模块… 下载 Composer
:
项目中常用的【Composer】代码包:
包 名 | 功 能 描 述 | 网 址 |
---|---|---|
guzzlehttp/guzzle | 功能强大的HTTP请求库 | https://packagist.org/packages/guzzlehttp/guzzle |
hashids/hashids | 数字ID转字符串,支持多语言 | https://packagist.org/packages/hashids/hashids |
intervention/image | 图片处理,获取图片信息、上传、格式转换、缩放、裁剪等 | https://packagist.org/packages/intervention/image |
phpmailer/phpmailer | 邮件发送 | https://packagist.org/packages/phpmailer/phpmailer |
phpoffice/phpexcel | excel操作类 | https://packagist.org/packages/phpoffice/phpexcel |
monolog/monolog | 日志操作, composer官方就是用它做例子的 | https://packagist.org/packages/monolog/monolog |
catfan/medoo | 简单易用的数据库操作类,支持各种常见数据库 | https://packagist.org/packages/catfan/medoo |
league/route | 路由调度 | https://packagist.org/packages/league/route |
Carbon/Carbon | 时间操作 | https://packagist.org/packages/nesbot/carbon |
composer
最新稳定版执行文件:cd /root/lanmpp/php8
wget https://getcomposer.org/download/latest-stable/composer.phar
composer
程序文件拷贝 & 移动至全局:sudo mv composer.phar /usr/local/bin/composer
composer
映射软链接:ln -s /usr/local/php/bin/php /usr/local/bin/
composer.phar
执行权限:chmod u+x /usr/local/bin/composer
Composer
属命令行工具,安装完成后,在命令行中输入composer-V
或 composer
命令后回车,即可执行成功:#提示:不要以超级用户root用户运行,不予理会,输入【yes】
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Continue as root/super user [yes]?
---------------------------------------------------------------------------
composer --version
Composer version 2.1.5 2021-07-23 10:35:47
---------------------------------------------------------------------------
/usr/local/bin/composer
Composer
命令,将镜像设置为国内镜像,以加速 php
运行速度:/usr/local/bin/composer \
config -g repo.packagist composer https://packagist.phpcomposer.com
#或者...
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
--------------------------------------------------------------------------
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Continue as root/super user [yes]? yes
yes
确认,国内镜像配置成功!附注: Composer
使用简要说明:
Composer
全局设置命令:/usr/local/bin/composer config -gl
composer
更新:composer selfupdate
在使用 composer install
、composer update
、composer require
这【3】个命令时,都会下载 PHP
类库。也都有可能要经过以下几个步骤。
Composer 执行命令需要经历的步骤
(1)Composer
读取 composer.json
文件,这个 json
在当前执行项目的目录下。
(2)Composer
通过读取的 json
数据去 Packagist.org
获取各个包的包名、作者、下载 URL
等信息。
(3)将从 Packagist.org
获取的元数据存放到当前目录下的 composer.lock
中。
(4)Composer
读取 composer.lock
中的元数据,根据元数据下载包,并且放到当前目录下的 vendor
目录里面。
其中, composer update
会将以上(1)、(2)、(3)、(4)这四个步骤都执行一遍,所以下载的类库是 composer.json
配置中匹配搭配的最新类库。
composer install
只执行步骤(4), composer require
会将配置写入 composer.json
…Packagist.org
中找到,因为每个开源项目都有安装和使用方法。PHP
安装 & 测试之后,为安全起见,应将 测试文件 phpinfo.php
删除! OK!VM-CentOS-8+Linux8中编译安装 php-8.0.9
& 配置详述完毕,够详细的吧!!!
内容相当全面,也有点难度,耗时也很长,发文辛苦!如果对你有帮助,就请点个赞!留下你的高见呗…
学如人生,砥砺前行…
互勉互励,志之所趋…