Apache 서버의 마이그레이션 계획 맞춤설정

마이그레이션을 만들 때 생성된 마이그레이션 계획 파일을 검토해야 합니다. 마이그레이션을 실행하기 전에 파일을 맞춤설정합니다. 마이그레이션 계획의 세부정보는 소스에서 워크로드 컨테이너 아티팩트를 추출하는 데 사용됩니다.

이 문서에서는 마이그레이션을 실행하고 배포 아티팩트를 생성하기 전에 고려할 수 있는 마이그레이션 콘텐츠 및 맞춤설정의 종류를 설명합니다.

시작하기 전에

이 문서에서는 개발자가 이미 마이그레이션을 만들었고 마이그레이션 계획 파일이 있다고 가정합니다.

마이그레이션 계획 수정

파일 시스템을 복사하고 분석한 후 지정된 출력 경로 ANALYSIS_OUTPUT_PATH/config.yaml에 생성된 새 디렉터리에서 마이그레이션 계획을 찾을 수 있습니다.

필요에 따라 마이그레이션 계획을 수정하고 변경사항을 저장합니다.

마이그레이션 계획 구조

Apache2 워크로드의 마이그레이션 계획 구조를 다음 섹션의 설명대로 맞춤설정할 수 있습니다.

apacheServer:
  # Apache configuration for directories on the system
  # Content is the configuration as understood by apache
  directories:
  - Content: |-
      Options FollowSymLinks
      AllowOverride None
      Require all denied
    Path: /
  - Content: |-
      AllowOverride None
      Require all granted
    Path: /usr/share
  - Content: |-
      Options Indexes FollowSymLinks
      AllowOverride None
      Require all granted
    Path: /var/www/
  - Content: "#\tOptions Indexes FollowSymLinks\n#\tAllowOverride None\n#\tRequire
      all granted"
    Path: /srv/
  - Content: |-
      #   AllowOverride None
      #   Require all denied
    Path: /
  # Environment variables used by apache
  envVars:
  - Value: www-data
    Var: APACHE_RUN_USER
  - Value: www-data
    Var: APACHE_RUN_GROUP
  - Value: /var/run/apache2$SUFFIX/apache2.pid
    Var: APACHE_PID_FILE
  - Value: /var/run/apache2$SUFFIX
    Var: APACHE_RUN_DIR
  - Value: /var/lock/apache2$SUFFIX
    Var: APACHE_LOCK_DIR
  - Value: /var/log/apache2$SUFFIX
    Var: APACHE_LOG_DIR
  - Value: C
    Var: LANG
  # The port the service will listen on
  listen:
  - "80"
  - "443"
  # Apache modules to be loaded and installed
  loadModules:
  - Module: access_compat_module
  - Module: alias_module
  - Module: auth_basic_module
  - Module: authn_core_module
  - Module: authn_file_module
  - Module: authz_core_module
  - Module: authz_host_module
  - Module: authz_user_module
  - Module: autoindex_module
  - Module: deflate_module
  - Module: dir_module
  - Module: env_module
  - Module: filter_module
  - Module: mime_module
  - Module: mpm_prefork_module
  - Module: negotiation_module
  - Module: php7_module
  - Module: proxy_module
  - Module: proxy_fcgi_module
  - Module: reqtimeout_module
  - Module: rewrite_module
  - Module: setenvif_module
  - Module: socache_shmcb_module
  - Module: ssl_module
  - Module: status_module
  # The sites to be extracted
  virtualHosts:
  - address: '*:80'
    documentRoot: /var/www/html
    # should the site be enabled in extracted VM
    includeInContainerImage: true
    originalConfig: |-
      # The ServerName directive sets the request scheme, hostname and port that
      # the server uses to identify itself. This is used when creating
      # redirection URLs. In the context of virtual hosts, the ServerName
      # specifies what hostname must appear in the request's Host: header to
      # match this virtual host. For the default virtual host (this file) this
      # value is not decisive as it is used as a last resort host regardless.
      # However, you must set it for any further virtual host explicitly.
      #ServerName www.example.com

      ServerAdmin webmaster@localhost
      DocumentRoot /var/www/html

      # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
      # error, crit, alert, emerg.
      # It is also possible to configure the loglevel for particular
      # modules, e.g.
      #LogLevel info ssl:warn

      ErrorLog ${APACHE_LOG_DIR}/error.log
      CustomLog ${APACHE_LOG_DIR}/access.log combined

      # For most configuration files from conf-available/, which are
      # enabled or disabled at a global level, it is possible to
      # include a line for only one particular virtual host. For example the
      # following line enables the CGI configuration for this host only
      # after it has been globally disabled with "a2disconf".
      #Include conf-available/serve-cgi-bin.conf
    serverName: server-0
  - address: '*:443'
    # The location of the site content (will be copied to the same location the extracted container)
    documentRoot: /var/www/html
    includeInContainerImage: false
    originalConfig: |-
      ServerAdmin admin@example.com
      DocumentRoot /var/www/html
      SSLEngine on
      SSLCertificateFile /etc/ssl/certs/c2d-temporary-self-signed-cert.pem
      SSLCertificateKeyFile /etc/ssl/private/c2d-temporary-self-signed-cert.key

      <Directory /var/www/html>
      Options -Indexes
      AllowOverride FileInfo
      </Directory>
    serverName: server-1
php:
  # list of php modules to be installed in the extracted container (add/remove entries to change what will be installed)
  modules:
  - calendar
  - ctype
  - curl
  - exif
  - ffi
  - fileinfo
  - filter
  - gd
  - gettext
  - iconv
  - json
  - mysqli
  - pcntl
  - pdo
  - pdo_mysql
  - posix
  - shmop
  - sockets
  - sysvmsg
  - sysvsem
  - sysvshm
  - tokenizer
  - xsl

디렉터리에 보안 정책 구성

directories 섹션에서는 특정 구성을 적용하여 특정 디렉터리에 보안 정책을 적용할 수 있습니다. 계획의 이 섹션을 작성하고 수정하려면 Directory 지시문 구문을 사용하세요.

모듈 로드 및 설치

loadModules 섹션에서 로드하고 설치할 모듈을 지정할 수 있습니다. Migrate to Containers는 LoadModule 지시문의 원래 구성을 스캔하여 필요한 모듈을 자동으로 감지합니다.

지원되는 모듈

access_compat_module
alias_module
auth_basic_module
authn_core_module
authn_file_module
authz_core_module
authz_host_module
authz_user_module
autoindex_module
deflate_module
dir_module
env_module
expires_module
filter_module
mime_module
mpm_prefork_module
negotiation_module
php7_module
proxy_fcgi_module
proxy_module
remoteip_module
reqtimeout_module
rewrite_module
setenvif_module
socache_shmcb_module
ssl_module
status_module

가상 호스트 지정 및 구성

virtualHosts 섹션에서 Migrate to Containers는 <VirtualHost></VirtualHost> 블록에 포함된 모든 지시문을 복사합니다.

address 필드에서 사이트의 IP 주소가 *로 바뀝니다.

originalConfig에서 DocumentRoot 필드는 Apache가 요청된 파일을 제공하는 경로를 지정합니다. DocumentRoot에 지정된 각 경로에 대해 Migrate to Containers는 다음을 수행합니다.

  • 각 경로를 별도의 tar 파일로 압축합니다.
  • 추출할 수 있도록 아티팩트의 tar 파일을 복사합니다.
  • 그러면 Dockerfile에서 ADD --chown 옵션을 사용하여 Docker 이미지의 사용자 권한을 변경합니다.

PHP 확장 프로그램 검토

Migrate to Containers는 VM에 설치된 PHP 모듈을 자동으로 감지하여 마이그레이션 계획의 php 섹션에 포함합니다. 이 섹션을 검토하고 필요에 따라 모듈을 추가하거나 삭제합니다.

다음 단계