From: https://blog.csdn.net/u011105165/article/details/124941307
#常规功能
yum install -y libevent libevent-devel curl-devel libxml2-devel libsqlite3-devel
#GD2
yum install -y libjpeg-devel freetype-devel libpng-devel
#ubuntu
apt install pkg-config libxml2 libxml2-dev openssl libssl-dev sqlite3 libsqlite3-dev libpng-dev libjpeg-dev libfreetype-dev
#oniguruma
#centos7直接yum install oniguruma oniguruma-devel
#
wget -c https://github.com/kkos/oniguruma/releases/download/v6.9.7.1/onig-6.9.7.1.tar.gz -O oniguruma-6.9.7.1.tar.gz
tar -zxf oniguruma-6.9.7.1.tar.gz
cd onig-6.9.7
./configure –prefix=/usr
make && make install
./configure –prefix=/usr/local/php/ –with-config-file-path=/usr/local/php/etc/ \
–with-pear \
–enable-fpm \
–enable-exif \
–enable-bcmath \
–enable-mbregex \
–enable-mbstring \
–enable-libgcc \
–with-openssl \
–enable-gd \
–with-jpeg \
–with-freetype \
–without-pdo-sqlite \
–with-pdo-mysql=shared,mysqlnd \
–enable-pcntl \
–enable-bcmath \
–with-zlib-dir \
–enable-sockets
make && make install
#编译安装完成后,初始化一些配置文件
cp php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
#service启动脚本
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
service php-fpm start
chkconfig php-fpm
#systemd 启动脚本 注意ProtectSystem配置可能需要修改
#部分系统的sytemctl可能因为版本问题无法使用 直接使用下面php-fpm.service配置进行修改或使用service代替
cp sapi/fpm/php-fpm.service /lib/systemd/system/
systemctl daemon-reload
systemctl start php-fpm
systemctl status php-fpm #查看状态
systemctl enable php-fpm #开机启动
#环境变量
vim /etc/profile
export PATH=/usr/local/php/bin:$PATH
:wq
source /etc/profile
#编译安装扩展(常规)
phpize && ./configure –with-php-config=/usr/local/php/bin/php-config && make && make install
pecl install redis
pecl install event #扩展依赖 apt install libevent-dev
readline扩展依赖 apt install libedit-dev
curl扩展依赖 apt install libcurl4-openssl-dev
#其他编译参数
–with-zlib-dir //pdo_mysql依赖它
–with-gettext //文案国际化扩展
–with-mhash //加密扩展,新版都使用openssl,这个用不上了 https://baike.baidu.com/item/php%20Mhash/6372547?fr=aladdin
–with-iconv //iconv函数,字符集转换用
–with-bz2 //bz2压缩工具
–enable-soap //启用soap协议
–enable-sockets //官方sockets扩展 event扩展依赖于它
–enable-sysvsem //进程通信信号管理,共享内存插件和shmop配合使用
–enable-xml
–enable-libxml
–enable-shmop //启用shmop支持,此模块是一个易于使用的功能集,允许php读,写,创建和删除UNIX共享内存段
–enable-wddx
–enable-intl
#/usr/local/php/etc/php-fpm.d/www.conf
[global]
;请勿随意修改pid配置,该配置systemctl启动项有关联
pid = run/php-fpm.pid
error_log = /var/log/php/php-fpm.log
log_level = notice
daemonize = yes
rlimit_files = 65535
events.mechanism = epoll
[www]
user = www
group = www
listen = 127.0.0.1:9000
listen.backlog = 65535
listen.owner = www
listen.group = www
listen.mode = 0666
pm = dynamic
pm.max_children = 400
pm.start_servers = 70
pm.min_spare_servers = 20
pm.max_spare_servers = 120
pm.process_idle_timeout = 10s;
pm.max_requests = 100000
request_terminate_timeout = 60
rlimit_files = 65535
#opcache配置
zend_extension=opcache.so
;opcache可用内存 Mb
opcache.memory_consumption=128
opcache.enable=1
opcache.enable_cli=1
;Zend Optimizer + 暂存池中字符串的占内存总量.(单位:MB)
opcache.interned_strings_buffer=8
;对多缓存文件限制, 命中率不到 100% 的话, 可以试着提高这个值 最大缓存文件
opcache.max_accelerated_files=4000
;内存“浪费”达到此值对应的百分比,就会发起一个重启调度.
opcache.max_wasted_percentage=5
; Opcache 会在一定时间内去检查文件的修改时间, 这里设置检查的时间周期, 默认为 2, 定位为秒
opcache.revalidate_freq=60
; 打开快速关闭, 打开这个在PHP Request Shutdown的时候回收内存的速度会提高
opcache.fast_shutdown=1
; 开启这条指令, Zend Optimizer + 会自动将当前工作目录的名字追加到脚本键上,
; 以此消除同名文件间的键值命名冲突.关闭这条指令会提升性能,
; 但是会对已存在的应用造成破坏.
opcache.use_cwd=0
; 开启文件时间戳验证 关闭后不再自动刷新文件
opcache.validate_timestamps=1
; 允许或禁止在 include_path 中进行文件搜索的优化
;opcache.revalidate_path=0
http://www.cnblogs.com/HD/p/4554455.html
#加入systemctl 目录一般在 /lib/systemd/system/ 下
#systemctl daemon-reload
#systemctl start php-fpm
#systemctl enable php-fpm
#PID FILE ExecStart需要根据实际情况修改
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm –nodaemonize –fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[Xdebug]
zend_extension=D:/phpstudy_pro/Extensions/php/php7.4.3nts/ext/php_xdebug.dll
xdebug.default_enable=On
xdebug.var_display_max_children=-1
xdebug.var_display_max_data=-1
xdebug.var_display_max_depth=-1
xdebug.collect_params=1
xdebug.collect_return=1
xdebug.auto_trace=Off
xdebug.profiler_enable=Off
xdebug.remote_enable=Off
;xdebug.trace_output_dir=D:/phpstudy_pro/Extensions/php_log/php7.3.4nts.xdebug.trace
;xdebug.profiler_output_dir =”D:\phpstudy_pro\Extensions\tmp\xdebug”
;xdebug.remote_host=localhost
;xdebug.remote_port=9000
;xdebug.remote_handler=dbgp
configure 配置PHP 7.4.9以适应多种系统。
用法:./ configure [OPTION] … [VAR = VALUE] …
要分配环境变量(例如CC,CFLAGS …),请将其指定为
VAR = VALUE。有关某些有用变量的说明,请参见下文。
选项的默认值在方括号中指定。
configure:
-h,–help 显示此帮助并退出
–help=short 简短显示此软件包的选项
–help=recursive 显示所有包含的软件包的简短帮助
-V,–version 显示版本信息并退出
-q,-quiet,-silent 不打印“检查中…”消息
–cache-file=FILE 缓存测试结果在FILE中[已禁用]
-C,“-cache-file=config.cache”的–config-cache别名
-n,–no-create不创建输出文件
–srcdir = DIR在DIR中找到源[configure dir或..]
安装目录:
–prefix=PREFIX 在PREFIX中安装与体系结构无关的文件
[/usr/local]
–exec-prefix=EPREFIX 在EPREFIX中安装与体系结构相关的文件
[PREFIX]
默认情况下,“make install”将安装所有文件
/usr/local/ bin,/usr/local/lib 等。您可以指定
使用--prefix的/usr/local以外的安装前缀,
例如--prefix=$HOME。
为了更好地控制,请使用以下选项。
微调安装目录:
–bindir=DIR 用户可执行文件[EPREFIX/bin]
–sbindir=DIR 系统管理员可执行文件[EPREFIX/sbin]
–libexecdir=DIR 程序可执行文件[EPREFIX/libexec]
–sysconfdir=DIR 只读单机数据[PREFIX/etc]
–sharedstatedir=DIR 可修改的体系结构独立数据[PREFIX/com]
–localstatedir=DIR 可修改的单机数据[PREFIX/var]
–libdir=DIR 目标代码库[EPREFIX/lib]
–includedir=DIR C头文件[PREFIX/include]
–oldincludedir=DIR 非gcc的DIR C头文件[/usr/include]
–datarootdir=DIR 只读的独立于拱的数据根[PREFIX/share]
–datadir=DIR 与架构无关的只读数据[DATAROOTDIR]
–infodir=DIR 信息文档[DATAROOTDIR/info]
–localedir=DIR 依赖于语言环境的数据[DATAROOTDIR / locale]
–mandir=DIR 手册文件[DATAROOTDIR/man]
–docdir=DIR 文档根[DATAROOTDIR/doc/ php]
–htmldir=DIR html文档 [DOCDIR]
–dvidir=DIR dvi文档 [DOCDIR]
–pdfdir=DIR pdf文档 [DOCDIR]
–psdir=DIR ps文档 [DOCDIR]
程序名称:
–program-prefix=PREFIX 在已安装的程序名称前加上PREFIX
–program-suffix=SUFFIX 将SUFFIX附加到已安装的程序名称
–program-transform-name=PROGRAM 在已安装的程序名称上运行sed PROGRAM
系统类型:
–build=BUILD 配置在 BUILD [guessed] 上构建
–host=HOST 交叉编译以构建要在 HOST [BUILD] 上运行的程序
–target=TARGET 配置为 TARGET [HOST] 构建编译器
可选功能和包:
–disable-option-checking 忽略无法识别的 –enable/-with options
–disable-FEATURE 不包含FEATURE(与 –enable-FEATURE=no 相同)
–enable-FEATURE[=ARG] 包括功能 [ARG=yes]
–with-PACKAGE[=ARG] 使用包 [ARG=yes]
–without-PACKAGE 不要使用PACKAGE(与 –with-PACKAGE=no 相同)
–with-libdir=NAME 在 …/NAME 中查找库,而不是在 …/lib 中查找
–disable-rpath 禁用传递附加的运行时库搜索
路径
–enable-re2c-cgoto 启用-g标志以re2c使用计算的goto gcc延期
–disable-gcc-global-regs
是否启用GCC全局寄存器变量
SAPI模块:
–with-apxs2[=FILE] 构建共享的Apache 2处理程序模块。FILE是
Apache apxs工具[apxs]的可选路径名
–disable-cli 禁用构建PHP的CLI版本(这将强制
–without-pear)
–enable-embed[=TYPE] 实验:启用构建嵌入式SAPI
库TYPE是“共享的”或“静态的”。
[TYPE=shared]
–enable-fpm 启用fpm SAPI可执行文件的构建
–with-fpm-user[=USER] 设置php-fpm的用户身份。 (默认:nobody)
–with-fpm-group[=GRP] 设置php-fpm的运行组。对于系统
用户,通常应将其设置为与fpm匹配
用户名(默认:nobody)
–with-fpm-systemd 激活系统集成
–with-fpm-acl 使用POSIX访问控制列表
–enable-litespeed 将PHP构建为litespeed模块
–enable-phpdbg 构建phpdbg
–enable-phpdbg-webhelper
————————————————
