Задать вопрос
@EmmGold

Две версии php на одном сайте без домена на одном ip на одном порту в разных папках?

Настроил VirtualHost. Первый отрабатывает второй нет, если местами поменять - ситуация повторяется. ServerPath просто игнорится...

<VirtualHost 192.168.1.1/8080:80>
     ServerAdmin admin@8080
     ServerPath /8080/
     ServerName 192.168.1.1/8080
     DocumentRoot /var/www/8080
     DirectoryIndex 7.php
     SetHandler "proxy:fcgi://127.0.0.1:8080
     ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
     AddHandler php74-fcgi .php
     Action php74-fcgi /cgi-bin/php74.fcgi
     ErrorLog /var/log/httpd/8080_2.log
     CustomLog /var/log/httpd/8080_2.log combined
</VirtualHost>

<virtualHost 192.168.1.1/8082:80>
     ServerAdmin admin@8082
     ServerPath /8082/
     ServerName 192.168.1.1/8082
     DocumentRoot /var/www/8082
     DirectoryIndex 8.php
     SetHandler "proxy:fcgi://127.0.0.1:8082
     ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
     AddHandler php82-fcgi .php
     Action php82-fcgi /cgi-bin/php82.fcgi
     ErrorLog /var/log/httpd/8082.log
     CustomLog /var/log/httpd/8082.log combined
</VirtualHost>


Хочу:
192.168.1.1/8080/7.php - седьмую php
192.168.1.1/8082/8.php - соответсвенно восьмую php

php-fpm есть, fcgi настроил.
Возможно нужно ковырять Mapping URL, но не представляю как это сюда прикрутить.
Возможно я не в ту стерь ушел и тут вообще VirtualHost не нужен.
  • Вопрос задан
  • 260 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Откуда вы взяли такой синтаксис VirtualHost?
<VirtualHost addr[:port] [addr[:port]] ...> ... </VirtualHost>

https://httpd.apache.org/docs/2.4/mod/core.html#vi...
Вам надо делить на основе Directory, как-то так:
<VirtualHost 192.168.1.1:80>
    ServerAdmin admin@8080
    ServerName 192.168.1.1
    DocumentRoot /var/www
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
    <Directory "/var/www/8080">
        DirectoryIndex 7.php
        SetHandler "proxy:fcgi://127.0.0.1:8080
        AddHandler php74-fcgi .php
        Action php74-fcgi /cgi-bin/php74.fcgi
    </Directory>
    <Directory>
        DirectoryIndex 8.php
        SetHandler "proxy:fcgi://127.0.0.1:8082
        AddHandler php82-fcgi .php
        Action php82-fcgi /cgi-bin/php82.fcgi
    </Directory>
    ErrorLog /var/log/httpd/8080.log
    CustomLog /var/log/httpd/8080.log combined
</VirtualHost>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@HellWalk
1. Устанавливаете 2 версии php
2. Выкидываете апач, ставите и настраиваете nginx-конфиг для каждого домена/порта нужным образом

Пример моего тестового конфига:

server {
    listen 80;

    server_name test.loc;

    root /var/www/test.loc;

    index index.php index.html index.html;

    access_log /var/log/nginx/test.loc.log;
    error_log /var/log/nginx/test.loc.error;

    gzip   on;
    gzip_vary on;
    gzip_min_length 1000;
    gzip_proxied    expired no-cache no-store private auth;
    gzip_types      text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;
    charset utf-8;
    client_max_body_size 32m;

    location / { 
        try_files $uri $uri/ /index.php$is_args$args; 
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        #fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param  QUERY_STRING     $query_string;
        fastcgi_param  REQUEST_METHOD   $request_method;
        fastcgi_param  CONTENT_TYPE     $content_type;
        fastcgi_param  CONTENT_LENGTH   $content_length;
        fastcgi_intercept_errors        on;
        fastcgi_ignore_client_abort     off;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 180;
        fastcgi_read_timeout 180;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;

    }

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location ~ /\.ht { deny  all; }
}


Строка fastcgi_pass unix:/run/php/php7.4-fpm.sock; отвечает за подгрузку нужной версии php
Ответ написан
Комментировать
402d
@402d
начинал с бейсика на УКНЦ в 1988
fast cgi обязательно ? Если нет, то
https://stackoverflow.com/questions/12561203/how-t...
положи в папку где нужна отличная от дефолтной версии
Ответ написан
Комментировать
Amega
@Amega
Senior PHP Developer
"Два сервера" на одном порту по определению висеть не могут: порт занимается кем-то одним. А вот уже внутри этого сервера вы можете настроить "маршрутизацию" - какие запросы как обрабатывать. То есть одни запросы направить на 7й пых, другие - на 8й. Но конкретную конфигурацию Apache сейчас не скажу, сто лет им не пользовался.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы