Развертывание Symfony с помощью php-fpm и Docker приводит к ошибке 404: файл не найденApache

Ответить
Anonymous
 Развертывание Symfony с помощью php-fpm и Docker приводит к ошибке 404: файл не найден

Сообщение Anonymous »

Я пытался развернуть свое приложение со вчерашнего дня, но безуспешно. Я работаю с персональным сервером, поэтому у меня есть доступ ко всему, но мои знания Linux не так уж велики.
Я пытаюсь сопоставить свой порт 8002, чтобы он перенаправлено в порт 9000 моего контейнера. Я думаю, что эта часть работает, потому что, когда я смотрю на контейнер журналов Docker, я вижу запросы, но проблема в том, что все запросы возвращают ошибку 404, независимо от того, какую конечную точку я вызываю.
вот subdomain.conf:

Код: Выделить всё

ServerName mysubdomain.domain.com
ServerAlias www.mysubdomain.domain.com

# Redirect to HTTPS
RewriteEngine on
RewriteCond %{SERVER_NAME} =mysubdomain.domain.com [OR]
RewriteCond %{SERVER_NAME} =www.mysubdomain.domain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]



ServerName mysubdomain.domain.com
ServerAlias www.mysubdomain.domain.com

# Proxy settings
ProxyPreserveHost On
ProxyPass / fcgi://localhost:8002/
ProxyPassReverse / fcgi://localhost:8002/

DocumentRoot /var/www/html/project/project-back/public
DirectoryIndex /index.php

# Allow .htaccess overrides in the public directory

AllowOverride All
Options FollowSymLinks
Require all granted


ErrorLog ${APACHE_LOG_DIR}/mysubdomain.domain.com-error.log
CustomLog ${APACHE_LOG_DIR}/mysubdomain.domain.com-access.log combined

# Enable SSL
SSLEngine on
SSLCertificateFile /some/path
SSLCertificateKeyFile /some/path
Include /some/path

# Optionally enable HSTS to force browsers to use HTTPS
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Код: Выделить всё

Dockerfile:
# Use the official PHP 8.1 FPM image as the base
FROM php:8.1-fpm

# Set the working directory inside the container
WORKDIR /var/www/html

# Install system dependencies
RUN apt-get update && apt-get install -y \
git \
unzip \
nano \
net-tools \
lsof \
libpq-dev \
libzip-dev \
&& docker-php-ext-install pdo pdo_mysql zip

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Copy project files into the container
COPY . .

# Set permissions for cache and log directories
RUN chmod -R 777 /var/www/html/var/cache /var/www/html/var/log

# Set permissions for cache and log directories
RUN chmod -R 777 /var/www/html/public

# Install Symfony dependencies
RUN composer install --no-dev --optimize-autoloader

# Expose PHP-FPM port
EXPOSE 9000

# Start PHP-FPM
CMD ["php-fpm", "-F"]

Код: Выделить всё

docker-compose.yaml:
services:
php:
build:
context: .
dockerfile: ./Dockerfile
container_name: mycontainer
volumes:
- .:/var/www/html
- ./public:/var/www/html/public
working_dir: /var/www/html
ports:
- "8002:9000"
networks:
- database

networks:
database:
external: true
Сеть базы данных — это моя сеть MySQL и phpmyadmin, и она работает нормально, я уже использовал ее в других проектах.
Единственное, что есть mysubdomain.domain.com-error.log это:

Код: Выделить всё

[proxy:warn] AH01144: No protocol handler was valid for the URL / (scheme 'fcgi'). If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.
Но я исправил это с помощью sudo a2enmod proxy_fcgi, и с тех пор, когда я захожу на свой subdomain.domain.com, я получаю ошибку 404. Файл не найден.
Вот вывод некоторых команд (с моего сервера)

Код: Выделить всё

$ curl https://mysubdomain.domain.com/
File not found.

Код: Выделить всё

$ curl -I https://mysubdomain.domain.com/
HTTP/1.1 404 Not Found
Date: Sat, 30 Nov 2024 14:48:08 GMT
Server: Apache/2.4.62 (Debian)
X-Powered-By: PHP/8.1.31
Content-Type: text/html; charset=UTF-8

Код: Выделить всё

$ curl -I http://localhost:8002
curl: (52) Empty reply from server

Код: Выделить всё

$ sudo docker logs mycontainer
NOTICE: fpm is running, pid 1
NOTICE: ready to handle connections
"GET /" 404
"GET /" 404
"GET /" 404
"GET /" 404
Изнутри контейнера:

Код: Выделить всё

# curl -I http://localhost:9000
curl: (56) Recv failure: Connection reset by peer

Код: Выделить всё

netstat -tlnp | grep 9000
tcp6       0      0 :::9000                 :::*                    LISTEN      1/php-fpm
Я понятия не имею, как исправить проблему «Файл не найден». сейчас...
Изменить >:
Для ясности: я получаю не «страница 404 не найдена», а «файл 404 не найден». Я впервые вижу эту ошибку
вот как она выглядит
Это единственное, что я вижу на всех своих страницах. Только это не регистрирует ошибок...

Подробнее здесь: https://stackoverflow.com/questions/792 ... -not-found
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Apache»