さわだくんの日記

JavaScript頑張ってます

Laravel v8.23.1 (PHP v8.0.1)をUbuntu 20.04.1 LTSにインストールする

転職が決まり次の会社ではPHPやLaravelを使用するということで手持ちのUbuntu機にインストールしてみた。

PHPをインストールする

以下のコマンドを順にconsoleに打っていけばおk。

$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt install php8.0

それぞれのコマンドの解説

sudo apt install software-properties-common

これは次のコマンド

add-apt-repository

を使用するためのコマンドです。

sudo add-apt-repository ppa:ondrej/php

リポジトリの追加です。 aptでパッケージをインストールする際、オフィシャルリポジトリを参照してパッケージを探しますが、そこにパッケージがない場合手動でリポジトリを追加する必要があります。 phpの諸々のパッケージはppa:ondrej/php というレポジトリにあるっぽいです。

ppa:ondrej/php

sudo apt install php8.0

php8.0をインストールです。

Composerをインストールする

ComposerとはPHPのパッケージ管理システムのことです。 RubyでいうGemとかbundlerのポジションですね。

以下のコマンドを順に(以下略

$ sudo apt install curl php-cli php-mbstring git unzip php-xml

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

$ php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

$ php composer-setup.php

$ php -r "unlink('composer-setup.php');"

これで一通りのインストールは完了です。 ただこのままだとコンソール上で

$ composer ~~~

みたいなコマンドが打てない(PATHが通っていない)ので、以下のコマンドをコンソールに打ち込んでいきましょう。

$ sudo mv composer.phar /usr/local/bin/composer

$ sudo chmod +x /usr/local/bin/composer

$ composer --version

最後の--versionでちゃんとバージョン情報が出てきたらおkです!

参考

Composerのインストール方法

UbuntuにComposerをインストールするにはこんな風に|たのしいWeb

Laravelをインストールする

大体このドキュメントに記載されています。 インストール 8.x (再翻訳中)Laravel

今回は上記ドキュメントの「Composerでのインストール」を参考にしています。

こんなコマンドを打っていきましょう。

$ composer create-project laravel/laravel hogehoge

$ cd hogehoge

$ sudo composer install

$ php artisan serve

ここのhogehogeには好きなプロジェクト名を入れましょう。 今実行しているディレクトリにhogehogeディレクトリが新たに作成され、その中にLaravelの必要なファイルが保存されていきます。

$ sudo composer install

Railsでいうbundle installです。 これしないとvender/以下のファイルが作られずエラーになります。 詳しくはその他余談で。

$ php artisan serve

はサーバの起動コマンドですね。 Railsでいうrails sです。

うまく行くとこんなログが出てくると思います。

[Wed Jan 20 20:16:08 2021] PHP 8.0.1 Development Server (http://127.0.0.1:8000) started

そしたら

http://127.0.0.1:8000

にアクセスしてページがちゃんと表示されるか確認してみましょう〜!

だがしかし!多分表示されません!

No application encryption key has been specified.

こんなエラーが表示されるかもです(自分のときはこれでした)。 encryption keyが未設定です!みたいなエラーですね。 encryption keyを作りましょう。

$ php artisan key:generate
$ php artisan config:cache

そしたら晴れてこーんなページが出てくると思います。 これで完了です! f:id:sawadango:20210120204234p:plain 参考 No application encryption key has been specified.となったときの対応方法 - Qiita

その他余談

最初Laravelのサーバを起動しようとしたとき、また別の原因でうまく行きませんでした。 これ、結構分かりづらくて、最初php-xmlをapt installしないまま進めてたんですね。 そしてcomposer installもしていませんでした。

そしたらphp artisan serveしたらこんなエラーが出ました。

PHP Fatal error:  Uncaught Error: Failed opening required '/home/sawadango/code/laravel_test_in_local/vendor/autoload.php' (include_path='.:/usr/share/php') in /home/sawadango/code/laravel_test_in_local/artisan:18

vender以下のautoload.phpが読み込めないぞというエラーですね。 そしてディレクトリ見てみるとvenderが丸々無い!

このエラーの解決方法がconposer installすることなので、

$ sudo composer install

してみると、今度は

No lock file found. Updating dependencies instead of installing from lock file. Use composer update over composer install if you do not have a lock file.

となり、その下のProblem1に

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.

と表示されていました。 PHPのdomのなんちゃらが無いみたいなエラーです。

これを解決するためには

$ sudo apt install php-xml

すればおkです。 php-xmlにext-domとかが含まれてるみたいです。

参考 laravel - PHP7 : install ext-dom issue - Stack Overflow

再度

$ sudo composer install

したら起動すると思います。 (そしてNo application encryption key has been specified.エラーが出ると思います)

最後に

ずっとRails使ってきたのですがRailsより大変では・・・?

なかなかまとまったドキュメントが無かった(あんま探してないけど)のでサラッと作ってみました。 再現しなかったら申し訳ないです。

誰かの参考になれば!