Ubuntu 20.04 LTS でミニマムな Laravel 7.x 開発環境構築
方針
- ミニマムインストールの Ubuntu 20.04 LTS (Server install image) を利用
- Apache利用のシンプルな構成
- 必要十分・必要最小限
- 初期確認環境を想定
- PHPのバージョンを
7.3
固定にする
- ただし、本番でのDocker稼働も視野 (ベースOSへdebian系の採否はともかくとして…)
- LAN内想定でFWも使用しない
OSインストール要件
- インストールウィザードにしたがった最小限の設定
- ネットワーク
- ユーザ・サーバ名
- パーティション分割やLVMは利用しない
- OpenSSH server はインストールしておく
- その他追加パッケージのインストールはなし
OS基本設定と最新化
7.3
固定にする- インストールウィザードにしたがった最小限の設定
- ネットワーク
- ユーザ・サーバ名
- パーティション分割やLVMは利用しない
- OpenSSH server はインストールしておく
- その他追加パッケージのインストールはなし
OS基本設定と最新化
上記まで初期インストールが完了したら、対象サーバへSSHして構築していきます。
- タイムゾーンの設定
# timedatectl set-timezone Asia/Tokyo // 日本を指定
# date // 時刻確認
- ufwの無効化
# systemctl status ufw // サービス確認
# systemctl stop ufw // サービス停止
# systemctl disable ufw // サービス自動起動無効
- zip / unzipのインストール
Composer利用時に git / zip / unzip が必要になるため。(gitは最初から入っています)
# apt install zip unzip
- 現状のパッケージの最新化
# apt upgrade
開発用ユーザとアプリ用ディレクトリを準備
今は初期環境構築をしているのでrootで操作していますが、実際に開発を進めるときは権限を絞った専用ユーザで行うようにします。
また、ドキュメントルートも開発用ユーザが管理できるようにします。
# useradd -s /bin/bash -m appdev // appdevというユーザを追加
# passwd appdev // appdevにログインパスワードを設定
# mkdir /application // アプリケーションのドキュメントルート
# chown appdev: /application // ドキュメントルートのオーナーはappdev
Apache のインストール
# apt install apache2 // インストール
# dpkg -l | grep apache2 // バージョン確認
Laravel 7.x のインストール要件確認
# apt install apache2 // インストール
# dpkg -l | grep apache2 // バージョン確認
https://readouble.com/laravel/7.x/ja/installation.html
上を参照すると、以下のように記載されています。
- PHP >= 7.2.5
- BCMath PHP拡張
- Ctype PHP拡張
- Fileinfo PHP拡張
- JSON PHP拡張
- Mbstring PHP拡張
- OpenSSL PHP拡張
- PDO PHP拡張
- Tokenizer PHP拡張
- XML PHP拡張
本稿の方針に合わせ、これらを満たすようにインストールを進めます。
PHP 7.3 と必要パッケージのインストール
PHPのバージョンを 7.3
にFIXして構築していきます。
ここでは追加リポジトリとして、 PPA を導入したうえでPHPのバージョンをFIXさせます。
もし本番環境なら一般的に望ましくない方法ですが、ここでは一旦これで良いでしょう。
# apt install software-properties-common // リポジトリ追加のために必要
# apt-add-repository ppa:ondrej/php // ppaを追加する
Press [ENTER] to continue or Ctrl-c to cancel adding it.
// このように表示されたら [Enter] 押下
# apt update // 追加したリポジトリの適用
- PHP 7.3 本体のインストール
# apt install php7.3
インストール時の出力が参考になります。
依存パッケージとして、一部の必要パッケージは入るようです。
以下、一部抜粋…
The following additional packages will be installed:
libapache2-mod-php7.3 php-common php7.3-cli php7.3-common php7.3-json
php7.3-opcache php7.3-readline
Suggested packages:
php-pear
完了したら状況確認します。
# php --version // インストールバージョン確認
PHP 7.3.17-1+ubuntu20.04.1+deb.sury.org+1 (cli) (built: Apr 28 2020 14:49:03) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.17, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.17-1+ubuntu20.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
# php -m // インストールモジュール確認 (足りないものを確認)
[PHP Modules]
calendar
Core
ctype
date
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
openssl
pcntl
pcre
PDO
Phar
posix
readline
Reflection
session
shmop
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
Zend OPcache
zlib
[Zend Modules]
Zend OPcache
以下の3つの拡張モジュールがありません。
- BCMath PHP拡張
- Mbstring PHP拡張
- XML PHP拡張
インストールを進めます。
# apt install php7.3-bcmath php7.3-mbstring php7.3-xml
ここでモジュールバージョンを指定しないと、最新版が入ってしまうので気をつける必要があります。
(2020年5月現在では 7.4。)
- php-mysql のインストール
DB接続のために php-mysql をインストールします。
# apt install php7.3-mysql
これも 7.3 の指定が必要です。
- php-pear のインストール
PECLを使う可能性が高いのでインストールします。
# apt install php-pear
Composer のインストール
Laravelは PHP Composer からインストールします。
composer コマンドを使えるようにします。
# curl -sS https://getcomposer.org/installer | php
# mv composer.phar /usr/local/bin/composer
Laravel 7.x をインストール
ここからは開発用ユーザ (appdev) へスイッチして作業します。
$ composer -V
Composer version 1.10.6 2020-05-06 10:28:10
まず、上のように composer の動作を確認、Laravel 7.x のインストールへ進めます。
$ cd /application
$ composer create-project --prefer-dist laravel/laravel testapp "7.*"
ファイル構造ができたことを確認します。
$ ls -l testapp/
total 276
drwxrwxr-x 6 appdev appdev 4096 Apr 15 20:46 app
-rwxr-xr-x 1 appdev appdev 1686 Apr 15 20:46 artisan
drwxrwxr-x 3 appdev appdev 4096 Apr 15 20:46 bootstrap
-rw-rw-r-- 1 appdev appdev 1586 Apr 15 20:46 composer.json
-rw-rw-r-- 1 appdev appdev 207573 May 8 21:16 composer.lock
drwxrwxr-x 2 appdev appdev 4096 Apr 15 20:46 config
drwxrwxr-x 5 appdev appdev 4096 Apr 15 20:46 database
-rw-rw-r-- 1 appdev appdev 1013 Apr 15 20:46 package.json
-rw-rw-r-- 1 appdev appdev 1197 Apr 15 20:46 phpunit.xml
drwxrwxr-x 2 appdev appdev 4096 Apr 15 20:46 public
-rw-rw-r-- 1 appdev appdev 4497 Apr 15 20:46 README.md
drwxrwxr-x 6 appdev appdev 4096 Apr 15 20:46 resources
drwxrwxr-x 2 appdev appdev 4096 Apr 15 20:46 routes
-rw-rw-r-- 1 appdev appdev 563 Apr 15 20:46 server.php
drwxrwxr-x 5 appdev appdev 4096 Apr 15 20:46 storage
drwxrwxr-x 4 appdev appdev 4096 Apr 15 20:46 tests
drwxrwxr-x 44 appdev appdev 4096 May 8 21:16 vendor
-rw-rw-r-- 1 appdev appdev 538 Apr 15 20:46 webpack.mix.js
Apacheの設定
ここからはサーバの初期設定に戻るので、再度rootで作業します。
作るサイトのドメインは、 dev.testapp.jp
とします。
- rewrite モジュールの有効化
rewriteを有効化しないと正常なURLパス表示ができません。例えば、/hello
というルートを切った時に、http://dev.testapp.jp/index.php/hello
のような不自然なパス指定を不要にするため必要です。
# apachectl -M // 読み込まれているモジュールの確認
# a2enmod rewrite // rewriteモジュールの有効化
Enabling module rewrite.
To activate the new configuration, you need to run:
systemctl restart apache2
# systemctl restart apache2 // Apache再起動して適用
- ログディレクトリの作成
ログについても、開発用ユーザが自分で確認できるように専用ディレクトリに吐くようにします。
# mkdir -p /application-log/testapp
# chown -R root:adm /application-log // apache標準のログ閲覧権限に揃える
- ltsvのCustomLogフォーマットを追記
LogFormat "host:%h\tident:%l\tuser:%u\ttime:%t\treq:%r\tstatus:%>s\tsize:%b\treferer:%{Referer}i\tua:%{User-Agent}i" ltsv
- コンフィグの配置
<VirtualHost *:80>
ServerName dev.testapp.jp
DocumentRoot /application/testapp/public
ErrorLog /application-log/testapp/error.log
CustomLog /application-log/testapp/access.log ltsv
<Directory /application/testapp/public>
AllowOverride All
Options Includes FollowSymLinks
Require all granted
</Directory>
</VirtualHost>
- コンフィグの有効化
# a2ensite testapp
- apacheコンフィグテスト
# apachectl -t
- apacheのリロード
# systemctl reload apache2
- ドキュメントルートのディレクトリ設定
storage
下とbootstrap/cache
ディレクトリをWEBサーバから書き込み可能にしないとLaravelからエラーが出ます。
また、php artisan
を実行するために appdev ユーザの書込み権限も必要です。
# usermod -aG www-data appdev // apache の www-data グループに appdev ユーザを所属
# chown -R www-data:www-data /application/testapp/storage /application/testapp/bootstrap/cache
# chmod -R 775 /application/testapp/storage /application/testapp/bootstrap/cache
動作確認
ここまででサービスは見えるようになっているはずですので、表示確認しましょう。
dev.testapp.jp
はDNSが外部公開されていないので、確認するPCへ "hosts" を設定します。
今回構築したサーバのIPアドレスは、 172.16.0.50 でその場合の設定例は以下です。
# hostsに追記
172.16.0.50 dev.testapp.jp
プラウザからLaravelの初期画面が表示されることを確認します。
基本的なところは、これで問題ないと考えます。
Fin ❤︎
Author And Source
この問題について(Ubuntu 20.04 LTS でミニマムな Laravel 7.x 開発環境構築), 我々は、より多くの情報をここで見つけました https://qiita.com/kapibarasensei/items/50eaa51224077bc8b760著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .