月度归档:2021年01月

PHP-FPM和Nginx使用Unix Domain Socket通讯

  • 第一步,创建 unix domain sock 文件
cd /run
mkdir php && cd $_
touch php7.4-fpm.sock
chown www-data:www-data php7.4-fpm.sock
chmod 777 ./php7.4-fpm.sock
  • 第二步,配置 php-fpm
cd /usr/local/php/php74/etc/php-fpm.d
vi www.conf

listen = 127.0.0.1:9074
改为
listen = /run/php/php7.4-fpm.sock

保存后,执行systemctl restart php7.4-fpm重启 php-fpm 。

  • 第三步,配置 nginx
fastcgi_pass 127.0.0.1:9074;
改为
fastcgi_pass unix:/run/php/php7.4-fpm.sock;

保存后,执行nginx -s reload使 nginx 配置生效。

P.S. 可以把 Unix Domain Socket 文件放到 /dev/shm 下以提高性能。因为这个目录不在硬盘上,而是在内存里。

Yet another post script: 这么改完之后,一定记得所有用到这个 PHP-FPM 的站点,nginx 配置都要做如上修改,不然网站就访问不了了。

Debian 10 PHP 7.4编译安装imagick扩展

下载 imagick 源码,解压并进入目录

wget https://pecl.php.net/get/imagick-3.4.4.tgz
tar xf imagick-3.4.4.tgz
cd imagick-3.4.4

安装依赖

apt install -y libmagickcore-dev libmagickwand-dev autoconf

进入 imagick 代码目录后执行 phpize

/usr/local/php/php74/bin/phpize

配置

./configure --with-php-config=/usr/local/php/php74/bin/php-config --with-imagick=/usr/local/imagemagick

编译安装

make && make install

编译安装完成后会显示扩展模块编译到了哪个目录,记录下这个目录的路径,以便在 php.ini 中进行配置,我这里是 /usr/local/php/php74/lib/php/extensions/no-debug-non-zts-20190902/

配置 php.ini

extension_dir = "/usr/local/php/php74/lib/php/extensions/no-debug-non-zts-20190902/"
extension=imagick.so

保存并退出,重启 php-fpm 即可。