【Laravelアプリ】Linuxサーバーにデプロイする手順を解説

自分でアプリを作れるようになったら、ポートフォリオとして公開したいですよね。アプリを公開すれば自分の実績を証明でき、転職や副業でも活用できます。

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を動かす準備ができたら、実際にアプリをデプロイしてみましょう。まずは、デプロイまでの手順を簡単にまとめておきます。

  1. アプリをサーバーへアップロードする
  2. MySQLと接続する
  3. ドキュメントルートを設定する

それでは、順番に解説していきます。

アプリをサーバーへアップロードする

まず、アプリをサーバーへアップロードする方法です。今回は、自分のパソコンから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アプリを公開できます。また、古いパソコンをお持ちなら、自分でサーバーを作ってから、アプリを公開する練習をしてみてください。

すると、基礎知識が身に付くため、本番環境でリリースするときの役に立つはずです。開発環境が異なる場合はエラーが連発するかもしれませんが、ひとつずつ確認していけば必ず解決できます。

自分のスキルの幅が広がると楽しくなってきますよね。ただし、独学でアプリ開発を進めるのは限界があります。さらに上のレベルを目指す場合は、エンジニアとして現場でスキルを磨くことを考えましょう。

タイトルとURLをコピーしました