作者ireullin (raison detre)
看板Linux
标题[问题] nginx php-fpm与rails并存
时间Sun Mar 22 22:46:08 2015
请问一下各位
我想让php与rails并存於同一个网站上
并且使用path去区分网站
目前我有三个目录分别是
/var/work/rails 存放rails的
/var/work/php 存放php程式
/var/work/nginx_root 存放404等错误的静态网页
目前我的设定档为
worker_processes 1;
events {
worker_connections 1024;
}
http {
passenger_root /usr/local/rvm/gems/ruby-2.1.2/gems/passenger-4.0.53;
passenger_ruby /usr/local/rvm/gems/ruby-2.1.2/wrappers/ruby;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
rewrite_log on;
error_log /opt/nginx/logs/error.log debug;
listen 80;
server_name localhost;
root /var/work/nginx_root;
error_page 403 404 405 406 500 501 502 503 504 /index.html;
# for rails
location /rails/assets {
passenger_base_uri /rails/assets;
passenger_enabled off;
alias /var/work/rails/public/assets;
}
location /rails {
alias /var/work/rails/public;
passenger_base_uri /rails;
passenger_app_root /var/work/rails;
passenger_document_root /var/work/rails/public;
passenger_enabled on;
}
}
}
这个设定档运作是正常的
rails与错误网页的导向都可以正常运作
但我现在要加入php-fpm的设定
让连入的网址如果是
http://192.168.1.1/php/test.php
会采用php执行请问该如何做
我加入了以以下的设定
location /php {
alias /var/work/php;
passenger_enabled off;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index test.php;
fastcgi_param DOCUMENT_ROOT /var/work/php;
fastcgi_param SCRIPT_FILENAME /var/work/php/$fastcgi_script_name;
include fastcgi_params;
}
但会得到错误
/var/work/nginx_root/test.php failed (2: No such file or directory)
也就是说他还是跑到 nginx_root 下面去了
请问我该如何做调整
以下是我使用的版本
nginx version: nginx/1.6.2
built by gcc 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
TLS SNI support enabled
configure arguments: --prefix=/opt/nginx --with-http_ssl_module
--with-http_gzip_static_module --with-http_stub_status_module
--with-cc-opt=-Wno-error
--add-module=/usr/local/rvm/gems/ruby-2.1.2/gems/passenger-4.0.55/ext/nginx
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 27.105.48.107
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1427035575.A.AF5.html
1F:→ justdoitmmo: php_fpm用proxy_pass去做吧,我没记错的话 03/23 00:17
2F:→ justdoitmmo: php_fpm是启动9000 port,导给本地9000就可以了 03/23 00:18
3F:→ justdoitmmo: 抱歉我记错,是fastcgi_pass没错,你没设错= = 03/23 00:21
4F:→ bamchisu: 可以试着更改match条件为对於所有php档pass到fastcgi: 03/25 18:36
5F:→ bamchisu: 如下:location ~ .*.php$ { 03/25 18:37
6F:→ bamchisu: fastcgi_pass 127.0.0.1:9000; 03/25 18:38
7F:→ bamchisu: fastcgi_index index.php; 03/25 18:38
8F:→ bamchisu: fastcgi_param SCRIPT_FILENAME $document_root$fastcg\ 03/25 18:39
9F:→ bamchisu: i_script_name; 03/25 18:39
10F:→ bamchisu: include fastcgi_params; } 03/25 18:39
11F:→ bamchisu: 先看看php跑的对不对再来debug你的document_root设定 03/25 18:43
12F:→ bamchisu: 另外一种可能的解法是设定link: 03/25 18:59
13F:→ bamchisu: sudo ln -sv /var/work/php /var/work/nginx_root 03/25 18:59
14F:→ bamchisu: ls -la /var/work/nginx_root/php 03/25 18:59