パブリックアドレスについて大きな間違いがありました。ここで取得しているパブリックアドレスは LAN (家庭内や会社内でのローカルエリアネットワーク) でルーターが個別の機器 (コンピューターなど) を区別するために与えている IP アドレスです。LAN の上層に WAN (ワイドエリアネットワーク) があり、そちらの IP アドレスがインターネットに繋がっています。 「自宅サーバーをインターネットに公開する」で詳しく説明しています。
この章では、Parallels Desktop にインストールした Ubuntu Server 24.04 で Laravel の開発環境の構築からデプロイまでの一連の流れを説明します。
Laravel アプリを使うには WEB 上に公開しなければなりません。しかし Ubuntu Server にはデフォルトで WEB サーバーがインストールされていません。そこで今回は Apache2 という WEB サーバーをインストールします。
ターミナルを使って SSH 経由で Ubuntu Server に Apache2 をインストールします。なお、SSH を経由せず、直接 Ubuntu Server の画面で作業しても大丈夫ですが、ターミナルのほうが簡単にコピペを使えたりと、いろいろと便利です。
引き続き、ターミナルを使って SSH 経由で Ubuntu Server に Laravel 環境を構築していきます。なお、SSH を経由せず、直接 Ubuntu Server の画面で作業しても大丈夫ですが、ターミナルのほうが簡単にコピペを使えたりと、いろいろと便利です。
インストールコマンドは次のとおりです。なおここではデータベースに SQLite を使っています。
前節までで Laravel アプリを構築する環境が整いました。この節では、はじめての Laravel アプリを作ります。
AWS の Lightsail を使っている場合は、npm を利用したこの機能は動作しません。次の「最初のページ(ホームページ)しか表示できない問題を解決する」にお進みください。
さきほどのアプリではホームページ(最初のページ)の1画面だけでした。これにリンク先をつけるために、認証機能をつけてみます。Laravel には簡単に認証機能をつける仕組みが準備されています。
ここでは、最初のページ(ホームページ)という表現を使っています。
「トップページしか表示できない」という表現をよく見ますが、正確には最初のページは「ホームページ」といいます。よく「ホーム(Home)」というリンクがありますよね。トップページは、そのページの一番上のことを指します。Top というリンクもよく見ますよね。
この「ホームページしか表示できない」という問題は、Ubuntu 固有の問題です。ネット上には、いろいろな解決策が載っていましたが、私の場合どれも解決には至りませんでした。
でも次のようにすると解決します。
# 修正前
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
#修正後
<:Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
#AllowOverride のところを None から All に変更します。
AWS の Lightsail を使っている場合は、npm を利用したこの機能は動作しません。次の「デプロイ」にお進みください。
アプリを日本語化する機能も、有志により便利な仕組みが用意されています。次のようにしてアプリを日本語化します。さきほどの npm がインストールされていることが前提です。
お使いのブラウザで「パブクリックアドレス/MyApp/public」を開いてください。 ホームページ(最初のページ)は英語のままですが、登録画面やログイン画面、その他メニューなど、すべて日本語になっています。
前節まででは Ubuntu Server の中で Laravel アプリを作ってきました。しかし、実際には、サーバー以外のコンピューターで Laravel アプリを作り、それを、サーバーに移動して実行できるようにします。このサーバーで実行できるようにすることをデプロイ (deploy、配置する、展開する) といいます。
この節では、GitHub にアップロードされている Laravel アプリを、Ubuntu Server にダウンロードして実行できるようにします。
GitHub のアカウントの作成方法や、GitHub に Laravel アプリをアップロードする方法などは、後日記載しようと思いますが、今回は GitHub に用意されている無料サンプルを使います。 使うのは GitHub で「free laravel」と検索して、最初に出てきたアプリです。
ただのデフォルトページでしたね(笑)
ローカル (お使いの Desktop OS) に Laravel 開発環境を構築していない場合は、次に進んでください。
ローカルでアプリケーションを作る方法は、次に進んでください。
ローカルで作成したアプリケーションをサーバーで使えるようにするには、次に進んでください。
############################
Ubuntu Server Virtual
############################
#Ubuntuのバージョン確認
lsb_release -a
#ipを確認する
ip a
#Apache2
sudo apt install apache2
sudo service apache2 start
sudo service apache2 stop
sudo service apache2 restart
sudo service apache2 status
#Laravelのインストール
sudo apt install composer php-curl php-sqlite3
#sudo apt install composer php8.3-curl php8.3-sqlite3 #PHPのバージョンは指定しないほうが良い
#sudo apt install composer php8.4-curl php8.4-sqlite3 #PHPのバージョンは指定しないほうが良い
sudo apt install sqlite3 #必須ではない
sudo apt install php-xml php-dom
sudo apt install libapache2-mod-php
#sudo apt install libapache2-mod-php8.3 #PHPのバージョンは指定しないほうが良い
#sudo apt install libapache2-mod-php8.4 #PHPのバージョンは指定しないほうが良い
#Laravelプロジェクトの作成
composer create-project laravel/laravel MyApp(任意のアプリ名)
sudo chmod -R 777 MyApp
#認証機能をつける
sudo apt install npm
cd MyApp
composer require laravel/breeze --dev
php artisan breeze:install blade
#日本語化する
sudo apt install npm
cd /var/www/html/MyApp
composer require askdkc/breezejp --dev
php artisan breezejp
#Laravelのデプロイ
git clone https://github.com/アカウント名/アプリ名
cd アプリ名 #アプリのディレクトリに移動
.envを作成する
php artisan key:generate
.envの内容を変更するならここでする
composer install
php artisan migrate
ccd ..(アプリのディレクトリから出る)
sudo chmod -R 777 アプリ名
#php artisan コマンド
php artisan -V(--version) #laravelバージョン表示
#sqlite3 コマンド
.tables
.exists
#Ubuntuでのホームページ以外のリンク切れを解消する
/etc/apache2/apache2.conf 170行目あたり
<Directory /var/www>
...
AllowOverride All(None から All に変える)
...
/etc/apache2 へ移動
sudo a2enmod rewrite
Apache2 を再起動する
sudo service apache2 restart