Ubuntu20+PHP8+Laravelで開発環境を構築する

Laravel,Linux,PHP,技術PHP8,Ubuntu,Vagrant,VirtualBox,開発環境構築

こんばんわ。

最近はオールゼロ系飲料が晩飯のお供などうもみけぽんです。

 

現在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の画面が表示されました。