2012-04-25 2 views
4

Я пытаюсь добавить блог Wordpress на сайт, который был построен в рубине на рельсах. Мне просто нужно, чтобы он находился в подкаталоге. Я создал папку в общедоступном каталоге и помещал туда файлы Wordpress, и теперь я получаю ошибку маршрутизации, и я действительно не знаком с рельсами. Может кто-нибудь помочь мне выяснить способ сделать это?добавление wordpress в сайт, который был построен в рельсах

+2

Что именно вы пытаетесь сделать? Возможно, вы можете просто перенаправить с Apache вместо того, чтобы поместить его прямо в подкаталог – eveevans

ответ

0

Вы можете получить PHP и рельсы, работающие в одном проекте, если у вас есть доступ к конфигурации сервера. Через несколько минут я смог заставить все работать над тестовым VPS. Я не тестировал с помощью wordpress, просто простой вызов phpinfo(), но я не вижу причин, по которым он потерпел неудачу.

Моя установка использует NGINX для веб-сервера, Unicorn for Rails и spawn-fcgi и php-cgi для обработки PHP.

У меня уже было приложение для рельсов, поэтому я просто добавил PHP к этому. Приложение rails использует NGINX для прокси-запросов для Unicorn, поэтому он уже обслуживает общий каталог как статический. Я отправлю свой файл виртуального хоста ниже, чтобы вы могли видеть, как это было сделано.

Все это делается на ArchLinux VPS, но другие дистрибутивы должны быть похожими.

Мой виртуальный хост-файл:

upstream unicorn { 
    server unix:/tmp/unicorn.jrosw.sock fail_timeout=0; 
} 

server { 
    listen 80 default deferred; 
    server_name example.com www.example.com; 
    root /home/example/app/current/public; 

    location ^~ /assets/ { 
    gzip_static on; 
    expires max; 
    add_header Cache-Control public; 
    } 

    try_files $uri/index.html $uri @unicorn; 
    location @unicorn { 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
    proxy_pass http://unicorn; 
    } 

    error_page 500 502 503 504 /500.html; 
    client_max_body_size 4G; 
    keepalive_timeout 10; 

    location ~ \.php$ { 
    try_files $uri =404; 
    include /etc/nginx/conf/fastcgi_params; 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME /home/example/app/current/public$fastcgi_script$ 
    } 
} 

А затем небольшой скрипт для вызова PHP-CGI:

#!/bin/sh 

# You may want to just set this to run as your app user 
# if you upload files to the php app, just to avoid 
# permissions problems 

if [ `grep -c "nginx" /etc/passwd` = "1" ]; then 
    FASTCGI_USER=nginx 
elif [ `grep -c "www-data" /etc/passwd` = "1" ]; then 
    FASTCGI_USER=www-data 
elif [ `grep -c "http" /etc/passwd` = "1" ]; then 
    FASTCGI_USER=http 
else 
# Set the FASTCGI_USER variable below to the user that 
# you want to run the php-fastcgi processes as 

FASTCGI_USER= 
fi 

# Change 3 to the number of cgi instances you want. 

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 3 -u $FASTCGI_USER -f /usr/bin/php-cgi 

Единственная проблема, которую я имел получал возможность fastcgi_index работать, так что вы «Возможно, вам нужно изучить возможности nginx's url rewriting, чтобы работать с функцией permalink Wordpress.

Я знаю, что этот метод не идеален, но, надеюсь, он доставит вас на правильный путь.

Смежные вопросы