我正在 ubuntu 12.04 LTS(x64)上安装 nginx + php-fpm(5.4.11)服务器
我从存储库安装了 nginx,并自行编译了 PHP。当我启动 php-fpm 和 nginx 时,一切都运行正常
sudo /etc/init.d/php-5.4.11-fpm start
sudo service nginx start
我可以在网页上显示 phpinfo,到目前为止一切顺利。
pid 在 /etc/php-5.4.11/php-fpm.conf 中设置如下
pid = /var/run/php-5.4.11/php-fpm.pid
以及 /etc/nginx/sites-available/default
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-5.4.11/php-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
现在,我想在服务器重新启动时启动 PHP,因此我这样做了:
update-rc.d php-5.4.11-fpm defaults
但是当我重新启动服务器时,日志文件中出现了这个错误:
ERROR: unable to bind listening socket for address '/var/run/php-5.4.11/php-fpm.sock': No such file or directory (2)
确实,我自己创建的目录 /var/run/php-5.4.11/ 消失了。如果我再次创建它并执行 sudo /etc/init.d/php-5.4.11-fpm start,它可以工作。但是如果我重新启动服务器,该目录将被删除,php-fpm 将不会启动。
怎么了?我不明白?非常感谢!
答案1
可能,tmpfs 被挂载到 /var/run。换句话说,这是一个 RAM 磁盘,在 OS 启动时它是干净的。
在这种情况下,您应该将 php-fpm 池配置的“pid”和“listen”指令直接指向 /var/run:
pid = /var/run/php-fpm.pid
[www]
listen = /var/run/php-fpm.sock