自分でアプリを作れるようになったら、ポートフォリオとして公開したいですよね。アプリを公開すれば自分の実績を証明でき、転職や副業でも活用できます。
2022年1月現在では、クラウドサーバーを使って簡単にアプリを公開できますが、いきなり契約して利用するのは不安じゃありませんか?
また、サーバーの設定は、Linuxのコマンドで操作することが多いです。そのため、最低限のコマンドを覚える必要があり、最初は戸惑うはずです。
そこで、Linuxのサーバーを使って、Laravelアプリをデプロイする手順を確認しておきましょう。なお、開発環境によって、必要なソフトウェアやファイル名が異なりますが、基本的な手順は同じです。
もし、古いパソコンをお持ちであれば、自分でLinuxサーバーを作ることもできます。興味のある方は、⬇︎の記事で解説しているので、ぜひ参考にしてください。
➡︎【アプリ公開の前に】古いPCでUbuntuサーバーを作って練習しよう
自分でLinuxサーバーを作ると、Laravelが動く環境について一から学習できるので、アプリをリリースするための基礎知識が身に付きますよ。
それでは、LinuxサーバーにLaravelアプリをデプロイする手順を解説していきますね。
Laravelをインストールするための準備について
まずは、Laravelをインストールして動かすための準備について解説します。はじめに、今回の開発環境を簡単にご紹介します。
- MacBook Air
- Laravel8
- Ubuntu Server 20.04.3 LTS
次に、サーバーでLaravel8を動かすための条件を確認しておきましょう。
- PHP7.3以上
- BCMath PHP 拡張
- Ctype PHP 拡張
- Fileinfo PHP 拡張
- JSON PHP 拡張
- Mbstring PHP 拡張
- OpenSSL PHP 拡張
- PDO PHP 拡張
- Tokenizer PHP 拡張
- XML PHP 拡張
Laravelを動かすためには、上記のプログラムが必要です。なお、詳しく知りたい方は公式サイト「Laravel8 デプロイ」で確認してください。
ただ、これだけでは準備が不十分です。サーバーでLaravelアプリを動かすためには、他にも必要なソフトウェアがあります。
必要なソフトウェアをインストールする
あなたは、どのような環境でLaravelアプリを作りましたか?おそらく、「MAMP(XAMPPも含む)」を使って開発された方が多いかと思います。
MAMPは、Laravelを動かすためのソフトウェアが揃っているため、誰でも簡単に開発を始めることができる便利なツールです。
ここで、MAMPに使われているソフトウェアを確認しておきます。
- Apache2
- MySQL
- PHP
これらをサーバーにインストールすれば、MAMPと同じようにLaravelを動かせることになります。ちなみに、すべてオープンソース(無料で使用可能)のソフトウェアです。
次に、それぞれの役割と設定方法について解説していきます。
Apache2
Apache2とは、サーバーの中でアクセスの管理やデータの送受信を担当するソフトウェアです。詳しく知りたい方は、公式サイト「Apache」で確認してください。
Apache2をインストールするには、下記のコマンドを入力します。
$ sudo apt update // 最新の状態を確認する
$ sudo apt upgrade // 最新の状態に更新する
$ sudo apt install apache2 // Apache2をインストール
インストールできたら、ファイアウォールの設定をしておきましょう。ファイアウォールを起動すると、想定外の通信を遮断できます。
ただし、自分が使うポート番号だけは解放してください。ファイアウォールに関するコマンドは下記の通りです。
$ sudo ufw status // 現在の設定を確認する
$ sudo ufw enable // 起動する
$ sudo ufw disable // 停止する
// allow 〇〇 で解放するポートを指定
$ sudo ufw allow 80 //ポート80を解放する
Apache2をインストールしたら、同じネットワーク内にある別の端末から、IPアドレスを入力してアクセスしてみましょう。IPアドレスがわからない場合は、下記のコマンドで確認できます。
$ ip a
アクセスすると、Apache2のデフォルトページが表示されるはずです。あわせて、ドキュメントルートを変更する方法もご紹介します。
Apache2のドキュメントルートを変更する方法
Apache2のドキュメントルートは、 /var/www/html
に設定されています。そこで、ドキュメントルートの設定ファイルを開いて編集しましょう。
ドキュメントルートを変更するためには、下記の2つのファイルを編集する必要があります。
- /etc/apache2/apache2.conf
- /etc/apache2/sites-available/000-default.conf
Linuxに標準で搭載されているviというテキストエディターを使って、デフォルトのコードを参考にファイルを編集します。
このとき、デフォルトのコードの先頭に「#」を書いて、コメントにしておきましょう。あわせて、コードの内容も簡単にご紹介します。
$ sudo vi /etc/apache2/apache2.conf
// apache2.conf
<Directory /〇〇/〇〇>
Options Indexes FollowSymLinks // オプションを指定
// Indexes:アクセスしたファイルがない場合、一覧を表示する
// FollowSymLinks:シンボリックリンクを有効にする
AllowOverride None
// .htaccess の利用を許可しない(許可する:All)
Require all granted
// すべてのアクセスを許可する
</Directory>
$ sudo vi /etc/apache2/sites-available/000-default.conf
// 000-default.conf
DocumentRoot /〇〇/〇〇/〇〇 // フォルダーを指定
〇〇にフォルダーの場所を入力してください。ドキュメントルートを変更したら、Apache2を再起動します。
$ sudo systemctl restart apache2.service
再度IPアドレスにアクセスして、デフォルトページが表示されれば、ドキュメントルートの変更は完了です。
MySQL
MySQLとは、リレーショナルデータベースの管理システムです。詳しく知りたい方は、公式サイト「MySQLドキュメント」で確認してください。
MySQLをインストールするには、下記のコマンドを入力します。あわせて、MySQLの開始と終了のコマンドも載せておきます。
$ sudo apt install mysql-server
$ sudo mysql // MySQLに接続する
mysql> exit // 終了する
MySQLはインストールだけで、特に設定を変更する必要はありません。
PHP
PHPは、サーバーでシステムを動かすプログラミング言語です。このとき、Laravelアプリに必要なPHPの拡張機能(モジュール)も、一緒にインストールしておきます。
なお、PHPの拡張機能について詳しく知りたい方は、公式サイト「PHPマニュアル:拡張モジュールの一覧」で確認してください。
// PHPとモジュールをインストールする
$ sudo apt install php libapache2-mod-php php-mysql php-bcmath php-ctype php-json php-tokenizer php-xml php-mbstring php-zip
もしエラーが出る場合は、必要なモジュールを追加してください。エラーは英語で表示されますが、Google翻訳にコピペすれば、ある程度の内容は理解できます。
インストールが完了したら、PHPのバージョンを確認します。
$ php -v // バージョンの確認
Composer
続いて、PHPのライブラリを管理するComposerをインストールします。Composerのダウンロードに関しては、最新の情報が確認できる公式サイト「Download Composer」の手順に従いましょう。
インストールが完了したら、どこからでも実行できるように名前を変更し、ファイルを移動します。
$ sudo mv composer.phar /usr/local/bin/composer
$ composer -v // バージョンの確認
Composerがインストールできたら、Laravelを動かすための準備は完了です。
Laravelをインストールする
それでは、Composerを使ってLaravelをインストールしていきます。Laravelフォルダーを置きたい場所へ移動し、インストールのコードを入力します。
$ cd パスを指定 // 指定した場所へ移動する
$ sudo composer create-project laravel/laravel プロジェクト名
Laravelフォルダーのインストールが完了したら、ドキュメントルートをLaravelフォルダーの「public」に設定します。ドキュメントルートの設定は、Apache2の章を参考に進めてください。
設定を変更したら、Apache2の再起動をしてから、IPアドレスを入力します。おそらく、パーミッションエラーが表示されると思います。
そのときは、エラーが出たフォルダーのパスを確認して、パーミッションの設定を変更します。
$ sudo chmod -R 777 Laravelフォルダーのパス
パーミッションエラーが解消されれば、Laravelのデフォルトページが表示されるはずです。これで、Laravelを動かす最低限の設定は完了です。
Laravelデフォルトサーバーの場合
Laravelのデフォルトサーバーにアクセスする場合は、サーバーを起動する際にポートを指定する必要があります。
$ php artisan serve --host IPアドレス --port 8000
もし、接続時間切れになるようなら、ファイアウォールの設定変更が必要かもしれません。
$ sudo ufw allow 8000 // ポート8000を解放する
なお、パーミションエラーが出たら、上記のコマンド(chmod)を参考に設定変更してください。
サーバーにアプリをデプロイする
Linuxのサーバー上でLaravelを動かす準備ができたら、実際にアプリをデプロイしてみましょう。まずは、デプロイまでの手順を簡単にまとめておきます。
- アプリをサーバーへアップロードする
- MySQLと接続する
- ドキュメントルートを設定する
それでは、順番に解説していきます。
アプリをサーバーへアップロードする
まず、アプリをサーバーへアップロードする方法です。今回は、自分のパソコンからLinuxサーバーにファイルをコピーします。
このとき、必要な情報は下記の4つです。
- コピー元のパス(ファイルの場所)
- サーバー名
- IPアドレス
- コピー先のパス(コピーする場所)
すべての情報を確認したら、ターミナルを開いて下記のコードを入力してください。
// scp コピー元 コピー先(フォルダー内をすべてコピーする場合 -r オプションが必要)
$ scp -r ~/〇〇/〇〇 サーバー名@IPアドレス:/〇〇/〇〇
コピーが完了したら、指定した場所にLaravelフォルダーがあるか確認してください。
MySQLと接続する
アプリをサーバーへアップロードしたら、MySQLと接続しましょう。このとき、必要な設定は2つあります。
- MySQLのユーザーとパスワードを設定する
- アプリの.envファイルを編集する
では、順番に進めていきます。
MySQLのユーザーとパスワードを設定する
今回は、MySQLのrootユーザーとしてパスワードを設定します。はじめにMySQLを起動して、アプリのデータベースを作成します。
$ sudo mysql
mysql> CREATE DATABASE データベース名; // データベースを作成
次に、rootユーザーのパスワードと認証方法を変更します。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'パスワード';
mysql> exit // 終了する
なお、パスワードを設定したあとは、MySQLの起動方法が変わります。
$ mysql -u root -p // rootユーザーで起動する
Enter password:パスワード
アプリの.envファイルを編集する
次に、アプリの.envファイルを編集します。編集内容は下記の通りです。
// .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306 // ←編集
DB_DATABASE=データベース名 // ←編集
DB_USERNAME=root
DB_PASSWORD=rootのパスワード // ←編集
なお、.envファイルを編集した場合は、キャッシュを消しておきましょう。
$ php artisan config:cache // キャッシュを消す
最後に、マイグレーションを実行します。
$ php artisan migrate
マイグレーションが完了し、データベース内に必要なテーブルが作られたら、次へ進みます。ちなみに、MySQLにログインしたあと、下記のコマンドでテーブルを確認できます。
mysql> use データベース名;
mysql> show tables;
ドキュメントルートを設定する
MySQLに接続したら、Apache2のドキュメントルートをLaravelフォルダーの「public」に設定します。
Apache2を再起動して、IPアドレスにアクセスしてみましょう。もし、パーミッションエラーが出た場合は、chmodコマンドで対応してください。
The requested URL was not found on this server.
上記のエラーが出た場合は、確認するポイントが3つあります。下記の表を参考に、設定を確認してください。
解決方法 | 内容 |
---|---|
apache2.conf を編集する AllowOverride All | .htaccess の利用を許可する |
$ sudo a2enmod rewrite を実行する | Apache2 mod_rewriteを有効にする |
php artisan cache:clear (エラーが出たら $ php artisan config:cache) php artisan route:clear php artisan config:clear | Laravelのキャッシュなどを消す |
なお、Apache2の設定を変更した場合は、忘れずに再起動してください。設定変更後、再度IPアドレスにアクセスして、表示を確認してください。
アクセスしたページが問題なく表示されたら、続けてアプリの動作確認をしましょう。
自分でサーバーを作ると気軽に練習できる
自分で作ったアプリは、どんどん公開しましょう。なぜなら、あなたのスキルを証明できるポートフォリオになるからです。すると、今後の転職活動で有利になるほか、副業で仕事を受注する際の差別化に繋がります。
今回ご紹介した流れで進めていけば、誰でもLinuxサーバーでLaravelアプリを公開できます。また、古いパソコンをお持ちなら、自分でサーバーを作ってから、アプリを公開する練習をしてみてください。
すると、基礎知識が身に付くため、本番環境でリリースするときの役に立つはずです。開発環境が異なる場合はエラーが連発するかもしれませんが、ひとつずつ確認していけば必ず解決できます。
自分のスキルの幅が広がると楽しくなってきますよね。ただし、独学でアプリ開発を進めるのは限界があります。さらに上のレベルを目指す場合は、エンジニアとして現場でスキルを磨くことを考えましょう。