この章では、Parallels Desktop にインストールした Ubuntu Server 24.04 で Laravel の開発環境の構築からデプロイまでの一連の流れを説明します。
一番つまづいたのは、Ubuntu での Laravel アプリが、最初のページ以外は Not Found となって表示されないことです。しかし、この問題も無事に解決策が見つかりました。
Laravel アプリを使うには WEB 上に公開しなければなりません。しかし Ubuntu Server にはデフォルトで WEB サーバーがインストールされていません。そこで今回は Apache2 という WEB サーバーをインストールします。
ターミナルを使って SSH 経由で Ubuntu Server に Apache2 をインストールします。なお、SSH を経由せず、直接 Ubuntu Server の画面で作業しても大丈夫ですが、ターミナルのほうが簡単にコピペを使えたりと、いろいろと便利です。
引き続き、ターミナルを使って SSH 経由で Ubuntu Server に Laravel 環境を構築していきます。なお、SSH を経由せず、直接 Ubuntu Server の画面で作業しても大丈夫ですが、ターミナルのほうが簡単にコピペを使えたりと、いろいろと便利です。
インストールコマンドは次のとおりです。なおここではデータベースに SQLite を使っています。
前節までで Laravel アプリを構築する環境が整いました。この節では、はじめての Laravel アプリを作ります。
さきほどのアプリではホームページ(最初のページ)の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 に変更します。
アプリを日本語化する機能も、有志により便利な仕組みが用意されています。次のようにしてアプリを日本語化します。さきほどの npm がインストールされていることが前提です。
お使いのブラウザで「パブクリックアドレス/MyApp/public」を開いてください。 ホームページ(最初のページ)は英語のままですが、登録画面やログイン画面、その他メニューなど、すべて日本語になっています。
前節まででは Ubuntu Server の中で Laravel アプリを作ってきました。しかし、実際には、サーバー以外のコンピューターで Laravel アプリを作り、それを、サーバーに移動して実行できるようにします。このサーバーで実行できるようにすることをデプロイ (deploy、配置する、展開する) といいます。
この節では、GitHub にアップロードされている Laravel アプリを、Ubuntu Server にダウンロードして実行できるようにします。
GitHub のアカウントの作成方法や、GitHub に Laravel アプリをアップロードする方法などは、後日記載しようと思いますが、今回は GitHub に用意されている無料サンプルを使います。 使うのは GitHub で「free laravel」と検索して、最初に出てきたアプリです。
ただのデフォルトページでしたね(笑)
############################
Ubuntu
############################
#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
############################
Fedora
############################
#Fedoraのバージョン確認
cat /os-release
OS Debian 12(bookworm)
#Fedora httpd コマンド
sudo dnf install httpd
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl restart httpd
#httpd.confの編集
/etc/httpd/conf/httpd.conf
149行目あたり、Indexes を削除
Options FollowSymLinks
156行目あたり、None を All に変更
AllowOverride All
169行目あたり、index cgi と index.php を追加
DirectoryIndex index.html index.cgi index.php
最終行に次の記述を追加
ServerTokens Prod
#Firewallの設定
sudo firewall-cmd --add-service=http --permanent
success と表示されればOK
sudo firewall-cmd --reload
success と表示されればOK
#PHPとLaravelのインストール
sudo dnf install php php-mbstring php-pear php-sqlite3
sudo dnf install composer
sudo systemctl restart httpd.service
#Laravelプロジェクトの作成とデプロイはUbuntuと同じ
#FedoraでLaraveサイトが表示できない問題を解決する
#SELinuxの確認
sestatus
#enabledだったら次のようにして停止する
/etc/selinux/config
SELINUX =enforcing を SELINUX=permissive に変更
Fedora Server を再起動する
#phpのソースコードがそのまま表示される場合
PHP ページで、PHP のソースコードがそのまま表示される場合
次のファイルを書き込み可能で開きます。
/etc/httpd/conf.modules.d/00-mpm.conf
次の行のコメント(#)を外します。
LoadModule mpm_prefork_module modules / mod_mpm_prefork.so
次の行にコメント(#)を付けます。
#LoadModule mpm_event_module modules / mod_mpm_event.so
httpd サーバーを再起動します。
sudo systemctl restart httpd
############################
実機
############################
#wifiに接続する
ip link show
wlp4s0のようにwではじまるようなネットワークインターフェース名をメモする
cd /etc/netplan/
/etc/netplan$ la
00-installer-config-wifi.yamlを編集する、なければ作る
network:
version: 2
wifis:
wlp4s0:
dhcp4: true
optional: true
access-points:
your_wifi_network_name:
password: "your_wifi_password"
(yamlファイルはインデントを重視しているので半角スペース2個で上記のようにインデントすること)
sudo netplan apply(適用)
ip a(確認、インターフェース名が表れればOK)
#スリープしないようにする
/etc/systemd/logind.conf
HandleLidSwitch=ignore
sudo systemctl restart systemd-logind.service