今天,我决定使用PHP-FPMtesting我的NextCloud安装为全局别名。 我目前使用mod_php7在/ var / www / cloud目录下有一个NextCloud工作实例作为别名,但是我希望切换到没有运气的PHP-FPM! 杰杰奥。
我目前的规格是:
因为我想用PHP 7.0启用PHP-FPM,所以我在/etc/php/7.0/fpm/pool.d中用这个configuration文件创build了一个PHP-FPMconfiguration文件:
[cloud] listen = /var/lib/php7.0-fpm/cloud.sock listen.owner = www-data listen.group = www-data listen.mode = 0660 user = www-data group = www-data pm = dynamic pm.max_children = 100 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 5 pm.max_requests = 400 env[HOSTNAME] = $HOSTNAME env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin php_admin_value[open_basedir] = /tmp:/dev/urandom:/usr/share/php:/var/www/cloud:/var/www/clients/client1/web2/tmp/phplogs/ php_admin_value[session.save_path] = /var/lib/php/sessions php_admin_value[upload_tmp_dir] = /tmp php_admin_value[sendmail_path] = "/usr/sbin/sendmail -t -i -f [email protected]"
之后,我在/ etc / apache2 / conf-a中创build了一个apache conf文件,如下所示:
# cloud default Apache configuration Alias /cloud /var/www/cloud <Directory /var/www/cloud> Options +FollowSymLinks DirectoryIndex index.php AllowOverride All Require all granted Satisfy Any <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" </IfModule> <IfModule mod_dav.c> Dav off </IfModule> <IfModule mod_dav_fs.c> Dav off </IfModule> <IfModule mod_env.c> SetEnv HOME /var/www/cloud SetEnv HTTP_HOME /var/www/cloud </IfModule> <IfModule mpm_itk_module> AssignUserId www-data www-data </IfModule> </Directory> <IfModule mod_fastcgi.c> KeepAlive On KeepAliveTimeout 100 MaxKeepAliveRequests 200 <Directory /var/www/cloud> Require all granted <FilesMatch "\.php[345]?$"> SetHandler php7-fcgi </FilesMatch> </Directory> <LocationMatch "/cloud/(fpm-ping|fpm-status)"> HostnameLookups Off SetHandler php7-fcgi-virt Action php7-fcgi-virt /php7-fcgi virtual </LocationMatch> Action php7-fcgi /php7-fcgi virtual Alias /php7-fcgi /var/www/cloud/php7-fcgi-cloud FastCgiExternalServer /var/www/cloud/php7-fcgi-cloud -idle-timeout 300 -socket /var/lib/php7.0-fpm/cloud.sock -pass-header Authorization </IfModule> <IfModule mod_proxy_fcgi.c> <Directory /var/www/cloud> <FilesMatch "\.php[345]?$"> SetHandler "proxy:unix:/var/lib/php7.0-fpm/cloud.sock|fcgi://localhost" </FilesMatch> </Directory> </IfModule> <IfModule mod_ssl.c> SSLUseStapling on SSLStaplingResponderTimeout 5 SSLStaplingReturnResponderErrors off SSLStaplingCache shmcb:/var/run/ocsp(128000) </IfModule>
这个conf已经启用了,因为我的NextCloud和mod_php7一样运行着这个apache conf文件,所以我刚刚重新启动了php7.0-fpm和apache2,好像没问题,重启时没有错误。
为了testing的目的,我用phpinfo()创build了一个test.php文件。 里面并启用fpm-ping和fpm-status位置,这样我就可以testing这个东西了,结果如下:
正如你所看到的,我在这里迷失了方向,因为它似乎有效,但是NextCloud会一直加载。
我也用这个简单的chmod.php文件进行了testing,实际上这个代码在同一个服务器的另一个虚拟主机上工作,但是在这里失败了,不断的加载下一个云:
<?php function chmodDirectory( $path = '.', $level = 0 ) { $ignore = array( 'cgi-bin', '.', '..' ); $dh = @opendir( $path ); while( false !== ( $file = readdir( $dh ) ) ) { // Loop through the directory if( !in_array( $file, $ignore ) ) { if( is_dir( "$path/$file" ) ) { chmod("$path/$file",0755); chmodDirectory( "$path/$file", ($level+1)); } else { chmod("$path/$file",0644); // desired permission settings }//elseif }//if in array }//while closedir( $dh ); }//function chmodDirectory("./",0); echo("done");
感谢您的build议!
Apache错误日志:
[Wed Aug 02 21:12:30.234671 2017] [fastcgi:error] [pid 23385] [client 10.0.0.77:59362] FastCGI:与服务器通信“/ var / www / cloud / php7-fcgi-cloud”aborted:idle超时(300秒)[Wed Aug 02 21:12:30.234731 2017] [fastcgi:error] [pid 23385] [client 10.0.0.77:59362] FastCGI:从服务器收到的不完整标题(0字节)“/ var / www /云/ PHP7-fcgi的云”