Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: nginx php-fpm  (Прочитано 1255 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн avtlg

  • Автор темы
  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
nginx php-fpm
« : 18 Декабря 2013, 15:53:15 »
Здравствуйте!
Задача настроить web server и разместить на нем форум (phpBB3) и MediaWiki.В качестве субд - PostgreSQL.
Проблема в понимании работы всей этой конструкции.
Были проинсталлированы следующие пакеты: postgresql, nginx, php5, php5-fpm. Скачал соответствующие архивы  mediawiki-1.22.0.tar.gz и phpBB-3.0.12.zip. Все это дело распаковал в каталог /var/www
Создал файлы /etc/nginx/sites-available/phpBB3
server          {
        listen          10.4.5.21:80;
        server_name     forum.domain.com www.domain.com;
        rewrite ^/(.*)$ https://$host/$1 permanent;
        }

server  {
        listen 10.4.5.21:443;
        server_name *.forum.domain.com;
        server_name_in_redirect on;

        ssl on;
        ssl_certificate         /etc/ssl/certs/forum.crt;            # сертификат (можно свободно распространять)
        ssl_certificate_key     /etc/ssl/private/forum.key;  # приватный ключ (секретный файл)
        ssl_session_timeout     5m;
        ssl_protocols           SSLv3 TLSv1;    # указание протоколов шифрования
        ssl_ciphers             ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
        ssl_prefer_server_ciphers       on;

        root /var/www/phpBB3;

        location / {
            # phpbb uses index.htm
            index index.php index.html index.htm;
        }

        # Deny access to internal phpbb files.
        location ~ /(config\.php|common\.php|includes|cache|files|store|images/avatars/upload) {
            deny all;
            # deny was ignored before 0.8.40 for connections over IPv6.
            # Use internal directive to prohibit access on older versions.
            internal;
        }

        # Pass the php scripts to fastcgi server specified in upstream declaration.
        location ~ \.php$ {
                fastcgi_pass    unix:/var/run/php5-fpm.sock;
                #fastcgi_pass   php;
                fastcgi_index   index.php;
                # Necessary for php.
                fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                # Unmodified fastcgi_params from nginx distribution.
                include         fastcgi_params;
        }

        # Deny access to version control system directories.
        location ~ /\.svn|/\.git {
            deny all;
            internal;
        }
    }

    # If running php as fastcgi, specify php upstream.
    upstream php {
        server unix:/tmp/php.sock;
}
/etc/nginx/sites-available/mediawiki
server  {
        listen 10.4.5.21:80;
        server_name wiki.domain.com;

        root /var/www/mediawiki;

        location / {
        index index.php5;
        error_page 404 = @mediawiki;
        }

        location @mediawiki {
        rewrite ^/([^?]*)(?:\?(.*))? /index.php5?title=$1&$2 last;
        }

        location ~ \.php5?$ {
        include         /etc/nginx/fastcgi_params;
        fastcgi_pass    unix:/var/run/php5-fpm.sock;
        fastcgi_index   index.php5;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
}
Не понимаю, как сделать, чтобы эти два ресурса работали на одной машине.  В данный момент у меня открывается только форум.
Спасибо.

Оффлайн avi9526

  • Активист
  • *
  • Сообщений: 618
  • ахтыжъёшкинкот
    • Просмотр профиля
    • Блог av9526
Re: nginx php-fpm
« Ответ #1 : 29 Декабря 2013, 18:32:14 »
Я, как бы это сказать, дилетант по серверам, но раз никто Вам не отвечает - попробую я…

У Вас два сайта забиндены на один IP, так, вроде, дела не будет…

У меня сделано так:
1) Создал файл главного конфига сайта «/etc/nginx/sites-available/avi9526» там описаны настройки сервера (порты, и т.п.)
Там и указана корневая директория сайта «/var/www».
2) В каталоге «/var/www/» у меня созданы папки «dokuwiki/», «wordpress/» и когда-то были и «mediawiki/», и «phpbb/». В этих папках и лежат соответствующие веб-приложения - так же как у Вас, видимо…
3) В конфиге сайта (см. п. 1) подключены конфиги для этих папок

# Wordpress
include avi9526/locations/wordpress;
#──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
# Dokuwiki
include avi9526/locations/dokuwiki;
#──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
# MediaWiki
include avi9526/locations/mediawiki;

Эти подключаемые конфиги лежат у меня в «/etc/nginx/avi9526/locations/» и там описаны ограничения и настройки доступа к содержимому каталога «/var/www/», например, файл «/etc/nginx/avi9526/locations/mediawiki»
# Ограничение доспупа к файлам MediaWiki
location ~* "^/mediawiki/(cache|maintenance|includes|tests|serialized|extensions/Math/math|languages)((/.*)?)$"
{
deny all;
return 404;
}
4) Затем в конфиге сайта описано перенаправление к бек-энду PHP-FPM.
5) Как Вы уже поняли, обращаться к под-сайтам приходится так:
http://мой_домен_или_IP/wordpress
http://мой_домен_или_IP/mediawiki
http://мой_домен_или_IP/phpbb

Но можно сделать перенаправление если идёт обращение к корневой директории сайта:
(почти сразу после описания портов, до перенаправления к PHP-FPM)

# Корневая директория
location "/"
{
index index.php index.html index.htm;
try_files $uri $uri/ /wordpress/;
rewrite "^/$" "/wordpress/" redirect;
}

Вот Вам ещё почитать на всякий случай
« Последнее редактирование: 29 Декабря 2013, 18:37:51 от avi9526 »
Ubuntu 14.10

 

Страница сгенерирована за 0.02 секунд. Запросов: 22.