@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 не нужен.
  • Вопрос задан
  • 201 просмотр
Решения вопроса 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
начинал с бейсика на УКНЦ в 1988
fast cgi обязательно ? Если нет, то
https://stackoverflow.com/questions/12561203/how-t...
положи в папку где нужна отличная от дефолтной версии
Ответ написан
Комментировать
Amega
@Amega
Senior PHP Developer
"Два сервера" на одном порту по определению висеть не могут: порт занимается кем-то одним. А вот уже внутри этого сервера вы можете настроить "маршрутизацию" - какие запросы как обрабатывать. То есть одни запросы направить на 7й пых, другие - на 8й. Но конкретную конфигурацию Apache сейчас не скажу, сто лет им не пользовался.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽