7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

完走賞をとって Qiitan を自分にクリスマスプレゼントするAdvent Calendar 2022

Day 7

DockerでのLAMP環境構築手順(Amazon Linux 2/PHP8.1(Laravel9)) ⑦Laravel 9 系のインストール(全8回)

Last updated at Posted at 2022-12-06

はじめに

かくかくしかじかで、Docker で Amazon Linux 2 ベースの LAMP 環境を構築する機会がありましたので、手順についてアウトプットします。
スクリーンショット 2022-11-30 23.31.45.png

全 8 回を予定しています。

① 作成する環境の確認
② Apache の導入
③ PHP 8.1 系のインストール
④ Composer のインストール
⑤ timezone, locale の設定
⑥ docker-compose.yml の作成 & MySQL の導入
⑦ Laravel 9 系のインストール
⑧ Apache の設定ファイルの追加

今回は、 ⑦ Laravel 9 系のインストール についてです。

環境

以下の Docker 環境を構築します。

  • Amazon Linux 2
  • Apache 2.4
  • MySQL 8.0.28
  • PHP 8.1.x
  • Laravel 9.x

目次

1. php.ini の作成・編集
2. Dockerfile の編集
3. Docker イメージとコンテナの再作成
4. Laravel 9 系のインストール
5. ブラウザの確認

1. php.ini の作成・編集

php.ini を作成・編集します。
php.ini は、PHP の起動時に読み込まれる設定ファイルです。

infra/docker/php/php.ini
zend.exception_ignore_args = off
expose_php = on
max_execution_time = 30
max_input_vars = 1000
upload_max_filesize = 64M
post_max_size = 128M
memory_limit = 256M
error_reporting = E_ALL
display_errors = on
display_startup_errors = on
log_errors = on
error_log = /dev/stderr
default_charset = UTF-8

[Date]
date.timezone = "Asia/Tokyo"

[mysqlnd]
mysqlnd.collect_memory_statistics = on

[Assertion]
zend.assertions = 1

[mbstring]
mbstring.language = Japanese

以下の php.ini を参考に、というかそのまま使用させていただきました。

各設定の説明については以下の記事で確認できます。

2. Dockerfile の編集

Dockerfile の編集し、編集した内容の確認をします。

2-1. Dockerfile の編集

Dockerfile を編集します。

infra/docker/php/Dockerfile
FROM amazonlinux:2

# timezone environment
ENV TZ=Asia/Tokyo \
  # locale
  LANG=ja_JP.UTF-8 \
  LANGUAGE=ja_JP:ja \
  LC_ALL=ja_JP.UTF-8

RUN yum update -y \
  && yum install -y \
  glibc-langpack-ja \
  zip \
  unzip \
  vim \
  httpd

RUN amazon-linux-extras install -y epel
RUN yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm

RUN yum clean metadata \
  && yum install -y \
  php81 \
  php81-php \
  php81-php-mbstring \
  php81-php-pdo \
  php81-php-xml \
  php81-php-fpm \
  php81-php-mysqlnd \
  php81-php-gd

RUN alternatives --install /usr/bin/php php /usr/bin/php81 1

# composer のインストール
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1

# ファイルのコピー
COPY ./infra/docker/php/php.ini /etc/opt/remi/php81/php.ini

CMD [ "apachectl", "-D", "FOREGROUND" ]

WORKDIR /work/backend

2-2. 編集した内容の確認

  zip \
  unzip \

Laravel をインストールするために必要な機能(zip, unzip)のインストールします。

# ファイルのコピー
COPY ./infra/docker/php/php.ini /etc/opt/remi/php81/php.ini

PHPの設定ファイル php.ini のコピーについて追記しました。

php.ini ファイルの場所については、以下の手順で確認できます。

# r_yamate @ mbp in ~/Documents/code/advent-calendar on git:backend x [21:46:09]
$ docker compose exec web /bin/bash
bash-4.2# php --ini
Configuration File (php.ini) Path: /etc/opt/remi/php81
Loaded Configuration File:         /etc/opt/remi/php81/php.ini
Scan for additional .ini files in: /etc/opt/remi/php81/php.d
Additional .ini files parsed:      /etc/opt/remi/php81/php.d/20-bz2.ini,
/etc/opt/remi/php81/php.d/20-calendar.ini,
/etc/opt/remi/php81/php.d/20-ctype.ini,
/etc/opt/remi/php81/php.d/20-curl.ini,
/etc/opt/remi/php81/php.d/20-dom.ini,
/etc/opt/remi/php81/php.d/20-exif.ini,
/etc/opt/remi/php81/php.d/20-fileinfo.ini,
/etc/opt/remi/php81/php.d/20-ftp.ini,
/etc/opt/remi/php81/php.d/20-gd.ini,
/etc/opt/remi/php81/php.d/20-gettext.ini,
/etc/opt/remi/php81/php.d/20-iconv.ini,
/etc/opt/remi/php81/php.d/20-mbstring.ini,
/etc/opt/remi/php81/php.d/20-mysqlnd.ini,
/etc/opt/remi/php81/php.d/20-pdo.ini,
/etc/opt/remi/php81/php.d/20-phar.ini,
/etc/opt/remi/php81/php.d/20-simplexml.ini,
/etc/opt/remi/php81/php.d/20-sockets.ini,
/etc/opt/remi/php81/php.d/20-sodium.ini,
/etc/opt/remi/php81/php.d/20-sqlite3.ini,
/etc/opt/remi/php81/php.d/20-tokenizer.ini,
/etc/opt/remi/php81/php.d/20-xml.ini,
/etc/opt/remi/php81/php.d/20-xmlwriter.ini,
/etc/opt/remi/php81/php.d/20-xsl.ini,
/etc/opt/remi/php81/php.d/30-mysqli.ini,
/etc/opt/remi/php81/php.d/30-pdo_mysql.ini,
/etc/opt/remi/php81/php.d/30-pdo_sqlite.ini,
/etc/opt/remi/php81/php.d/30-xmlreader.ini
WORKDIR /work/backend

WORKDIR を追記して、コマンドを実行する作業ディレクトリに /work/backend ディレクトリを指定します。

3. Docker イメージとコンテナの再作成

Docker コンテナを削除し、 Docker イメージを作り直して、 Docker コンテナを作成・起動します。

docker compose down
docker compose up -d --build

4. Laravel 9 系のインストール

以下のコマンドで、 Laravel をインストールします。

docker compose exec web composer create-project --prefer-dist "laravel/laravel" .
参考:バージョンを指定してインストールする場合
docker compose exec web composer create-project --prefer-dist "laravel/laravel=9.*" .
  • 実行時イメージ
    image.png
参考:実行時ログ(zip, unzip がない場合のエラー)
# r_yamate @ mbp in ~/Documents/code/advent-calendar [14:00:36] 
$ docker compose exec web composer create-project --prefer-dist "laravel/laravel" .
Creating a "laravel/laravel" project at "./"
Info from https://repo.packagist.org: #StandWithUkraine
Installing laravel/laravel (v9.3.10)
    Failed to download laravel/laravel from dist: The zip extension and unzip/7z commands are both missing, skipping.
Your command-line PHP is using multiple ini files. Run `php --ini` to show them.
    Now trying to download from source

In GitDownloader.php line 82:
                                                            
  git was not found in your PATH, skipping source download  
                                                            

create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--add-repository] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--remove-vcs] [--no-install] [--no-audit] [--audit-format AUDIT-FORMAT] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--ask] [--] [<package> [<directory> [<version>]]]

backend/ ディレクトリ以下に Laravel のディレクトリ、ファイルが作成されました。

# r_yamate @ mbp in ~/Documents/code/advent-calendar on git:backend x [22:24:37]
$ tree -L 2
.
├── README.md
├── backend
│   ├── README.md
│   ├── app
│   ├── artisan
│   ├── bootstrap
│   ├── composer.json
│   ├── composer.lock
│   ├── config
│   ├── database
│   ├── lang
│   ├── package.json
│   ├── phpunit.xml
│   ├── postcss.config.js
│   ├── public
│   ├── resources
│   ├── routes
│   ├── storage
│   ├── tailwind.config.js
│   ├── tests
│   ├── vendor
│   └── vite.config.js
├── docker-compose.yml
└── infra
    └── docker

14 directories, 11 files

Laravelのバージョンを確認します。

# r_yamate @ mbp in ~/Documents/code/advent-calendar [17:03:05] 
$ docker compose exec web php artisan -V         
Laravel Framework 9.39.0

5. ブラウザの確認

ブラウザで、http://localhost:8080/index.php にアクセスして、表示を確認します。

image.png

現時点では、 404 Not Found が表示されます。

http://localhost:8080/ にアクセスすると、Apache のテストページが表示されます。

image.png

現時点では、Laravel のページは表示されませんでした。
これは Apache の mod_rewrite モジュールを有効化していないためです。

おわりに

今回は、 ⑦ Laravel 9 系のインストール についての手順でした。
次回は、 ⑧ Apache の設定ファイルの追加 の手順です。

ありがとうございました。

参考にしたサイト

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?