Ubuntu20+PHP8+Laravelで開発環境を構築する
こんばんわ。
最近はオールゼロ系飲料が晩飯のお供などうもみけぽんです。
現在2020年12月ですが、CentOS8のサポートが来年(2021)で終わるとのことで非常に困惑しています。
以前から公私共にCentOSに慣れ親しんできましたが、こういったことがあると後継とされているCentOS Streamを使ってもリスクな気がします。
なので自宅開発環境は思い切ってUbuntu乗り換えの方向で進めることにしました。
まずはApache + PHP8 + LaravelでWEBアクセスできるところを目標としています。
Ubuntu20で開発環境を構築する
前提
vagrant + VirtualBoxで構築しています。
Ubuntuのバージョン
バージョンは5年間セキュリティアップデートが提供されるLTS版の20にしています。
Apacheのインストール
まずはローカルパッケージインデックスの更新。
# apt update
そしてApacheのインストール。
# apt install -y apache2
その後はテキストベースのブラウザ「lynx」をインストールします。
インストールしないとapachectlコマンド実行時にエラーメッセージが表示されます。
# apt install -y lynx
PHP8のインストール
上記のサイトを参考にさせて頂きました。
まずはリポジトリをインストールします。
# add-apt-repository ppa:ondrej/php
aptでPHP8をインストール。
# apt install -y php8.0 php8.0-intl php8.0-mysql php8.0-sqlite3 php8.0-gd php8.0-dom
バージョンを確認し、PHP8がインストールできていることを確認しました。
# php -v
PHP 8.0.0 (cli) (built: Nov 27 2020 12:26:22) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
with Zend OPcache v8.0.0, Copyright (c), by Zend Technologies
デフォルトのPHP設定がPHP8になっていない場合があるので、その際は下記コマンドで変更してください。
# update-alternatives --config php
There are 3 choices for the alternative php (providing /usr/bin/php).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/php.default 100 auto mode
1 /usr/bin/php.default 100 manual mode
2 /usr/bin/php7.4 74 manual mode
3 /usr/bin/php8.0 80 manual mode
Press <enter> to keep the current choice[*], or type selection number:3
Composerのインストール
上記サイトを参考にさせて頂きました。
まずは依存関係のファイルをインストールします。
# apt install -y curl php-cli php-mbstring git unzip
次にComposerファイルをダウンロード。
# php -r "copy ( 'https://getcomposer.org/installer', 'composer-setup.php' ) ;";
Composerのインストーラを実行します。
# php composer-setup.php --install-dir=/usr/local/bin --filename=composer;
All settings correct for using Composer
Downloading...
Composer (version 2.0.8) successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer
rootユーザー以外でcomposer -vコマンドを実行するとバージョンを確認することが出来ます。
※下記は実際の出力をエディタにコピペしたらComposer部分が崩れました(泣)
# composer -v
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 2.0.8 2020-12-03 17:20:38
rootユーザーで実行すると、rootユーザー以外で実行する旨のメッセージが表示されます。
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Laravelのインストール
公開ディレクトリでプロジェクトの作成コマンドを実行します。
# composer create-project laravel/laravel --prefer-dist project_name
PHPのデフォルトバージョンを切り替えていないとエラーになります。
# composer create-project laravel/laravel --prefer-dist test_project
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Continue as root/super user [yes]? yes
Creating a "laravel/laravel" project at "./test_project"
Installing laravel/laravel (v8.5.5)
- Installing laravel/laravel (v8.5.5): Extracting archive
Created project in /home/vagrant/public_html/test_project
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- phpunit/phpunit[9.3.3, ..., 9.5.x-dev] require ext-dom * -> it is missing from your system. Install or enable PHP's dom extension.
- Root composer.json requires phpunit/phpunit ^9.3.3 -> satisfiable by phpunit/phpunit[9.3.3, ..., 9.5.x-dev].
To enable extensions, verify that they are enabled in your .ini files:
- /etc/php/7.4/cli/php.ini
- /etc/php/7.4/cli/conf.d/10-opcache.ini
- /etc/php/7.4/cli/conf.d/10-pdo.ini
- /etc/php/7.4/cli/conf.d/20-calendar.ini
- /etc/php/7.4/cli/conf.d/20-ctype.ini
- /etc/php/7.4/cli/conf.d/20-exif.ini
- /etc/php/7.4/cli/conf.d/20-ffi.ini
- /etc/php/7.4/cli/conf.d/20-fileinfo.ini
- /etc/php/7.4/cli/conf.d/20-ftp.ini
- /etc/php/7.4/cli/conf.d/20-gettext.ini
- /etc/php/7.4/cli/conf.d/20-iconv.ini
- /etc/php/7.4/cli/conf.d/20-json.ini
- /etc/php/7.4/cli/conf.d/20-mbstring.ini
- /etc/php/7.4/cli/conf.d/20-phar.ini
- /etc/php/7.4/cli/conf.d/20-posix.ini
- /etc/php/7.4/cli/conf.d/20-readline.ini
- /etc/php/7.4/cli/conf.d/20-shmop.ini
- /etc/php/7.4/cli/conf.d/20-sockets.ini
- /etc/php/7.4/cli/conf.d/20-sysvmsg.ini
- /etc/php/7.4/cli/conf.d/20-sysvsem.ini
- /etc/php/7.4/cli/conf.d/20-sysvshm.ini
- /etc/php/7.4/cli/conf.d/20-tokenizer.ini
You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
virtualhostの設定
virtualhostファイルの設定を行います。
# vi /etc/apache2/sites-available/virtualhost.conf
// パスは適宜書き換えてください。
<VirtualHost *:80>
DocumentRoot /home/hoge/public_html/project_name/public
ServerName サーバーのipアドレスを記載
ErrorLog /home/hoge/logs/project_name/error_log
CustomLog /home/hoge/logs/project_name/access_log combined
AddDefaultCharset UTF-8
<Directory "/home/hoge/public_html/project_name/public">
Require all granted
</Directory>
</VirtualHost>
// 設定ファイルの構文チェックを行います。「Syntax OK」が表示されればOKです。
# apache2ctl configtest
Syntax OK
// confファイルの反映
# a2ensite virtualhost.conf
// 下記のようなエラーが表示される場合、別の設定が必要です。
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using ubuntu2004.localdomain.
Set the 'ServerName' directive globally to suppress this message
// 別の設定ファイルを作成しSaverNameを定義すると、上記エラーは表示されなくなります。
# vi /etc/apache2/conf-available/fqdn.conf ServerName ubuntu
// 設定の反映
# a2enconf fqdn.conf
// apache再起動
# systemctl status apache2
virtualhost.confのServerNameで定義したURLへアクセスすると、Laravelの画面が表示されました。