Почему .htaccess и a2enmod не работают на Elastic Beanstalk?

Я создал приложение Elastic Beanstalk и Env. Это веб-сервер PHP на Amazon Linux. На нем должно быть размещено приложение ReactJS, созданное с использованием npm run build.

Я также создал AWS Pipeline, который берет код из CodeCommit, создает и развертывает его. Поскольку это веб-сервер, моему приложению также нужен файл .htaccess, который я пытался обработать в файле buildspec.yml как cp .htaccess.default build/.htaccess, но .htaccess не работает.

Я думаю, что проблема в том, что режим перезаписи Apache выключен. Я пытаюсь включить его через файл buildspec.yml. Я пытался поместить команды a2enmode rewrite и service httpd reload в разные разделы buildspec.yml, но пока безуспешно. Сборка падает.

Вот мой buildspec.yml.

version: 0.2

phases:
install: 
    runtime-versions:
      nodejs: 10 
    commands:
    - apt install a2enmod    # <---- Build crashes, exit code 127
    - a2enmod rewrite        # <---- Build crasehs
    - service httpd reload
pre_build:
    commands:
    - npm install 
build:
    commands:
    - npm run build
    - cp .htaccess.build build/.htaccess 
artifacts:
  files:
    - '**/*' 
  base-directory: build/
cache:
  paths:
    - 'node_modules/**/*'

Как я могу заставить .htaccess работать в этой среде?


1
165
1

Ответ:

Решено

В синтаксисе buildspec нет ничего плохого. Но рекомендуется хранить общедоступные активы, такие как .htaccess, в папке public вашего приложения ReactJS. Нет необходимости в cp .htaccess.build build/.htaccess или включении модуля перезаписи apache.