Laravel   on   Ubuntu

ホーム  
目次

概要

この章では、Parallels Desktop にインストールした Ubuntu Server 24.04 で Laravel の開発環境の構築からデプロイまでの一連の流れを説明します。

一番つまづいたのは、Ubuntu での Laravel アプリが、最初のページ以外は Not Found となって表示されないことです。しかし、この問題も無事に解決策が見つかりました。


Ubuntu Server 24.04

  1. ARM版はインターネットで「Ubuntu Server ARM」と検索すると、ダウンロードサイトが見つかります。X86版は「Ubuntu Server AMD」で検索すると見つかります。ARM版の isoには arm という文字列が入っており、X86版には amd と言う文字列が入っています。ややこしいので、間違えないようにしてください。
  2. Ubuntu Server のインストールの詳細は省略しますが、インストールの途中に出てくる「Install OpenSSH server」は必ず選んでください。あとはデフォルトのままで結構です。
  3. インストール後、Ubuntu Server にログインしたら、Ubuntuの画面に「ip a」と入力してエンターキーを押してください。結果がいっぱい表示されると思いますが、その中に、inet という項目が2つあります。そのうち「127.0.0.1」と違うほうをメモしておいてください。127.0.0.1 はローカルアドレスで、違うほうがインターネット上に公開される Ubuntu Server のパブリックアドレスです。パブリックアドレスは「xxx.xxx.xxx.xxx/xx」という形になっていると思いますが、最後の / とそれ以降の2桁の数字はいりません。Ubuntu Server はそのまま起動しておいてください。
  4. Mac あるいはお使いのコンピュータのターミナルを開いて、 「ssh Ubuntuのユーザー名@さきほどメモしたパブリックアドレス 例: ssh name@100.100.100.100」と入力してエンターキーを押してください。(yes/no/[fingerprint]) と聞かれたら yes と答えてください。パスワードを聞かれたら、Ubuntu Server に登録したユーザーのパスワードを入力してください。これで Ubuntu Server に SSH 経由でつながりました。今後はこちらのターミナルで作業を進めていきます。Ubuntu Server はそのまま起動しておいてください。


Apache 2

Laravel アプリを使うには WEB 上に公開しなければなりません。しかし Ubuntu Server にはデフォルトで WEB サーバーがインストールされていません。そこで今回は Apache2 という WEB サーバーをインストールします。

ターミナルを使って SSH 経由で Ubuntu Server に Apache2 をインストールします。なお、SSH を経由せず、直接 Ubuntu Server の画面で作業しても大丈夫ですが、ターミナルのほうが簡単にコピペを使えたりと、いろいろと便利です。

  1. Ubuntu や Debian でアプリケーションをインストールしたり削除するには apt というパッケージマネージャーを使います。はじめて apt を使う際には、次のようにアップデートしておきます。
    sudo apt update
    パスワードを聞かれえたらユーザーのパスワードを入力します。
  2. Apache2 をインストールします。
    sudo apt install apache2
  3. Apache2 はインストールすると自動で起動します。お使いのブラウザの URL 欄にさきほどのパブリックアドレスを入力してエンターキーを押してください。Apache2 のデフォルトページが表示されます。
  4. もし、デフォルトページが表示されないようなら、次のコマンドで Apache2 を起動させてください。
    sudo service apache2 start
  5. なお、Apache2 は特に設定しなくても、Ubuntu Server が起動するときに Apache2 も自動で起動します。
  6. また今後は、Linux に標準でインストールされている Vim を使うか、何か別のテキストエディタを使っていくことになりますが、私は emacs をインストールしました。
    sudo apt install emacs-nox
    emacs-nox は GUI を持たない emacs です。


Laravel

引き続き、ターミナルを使って SSH 経由で Ubuntu Server に Laravel 環境を構築していきます。なお、SSH を経由せず、直接 Ubuntu Server の画面で作業しても大丈夫ですが、ターミナルのほうが簡単にコピペを使えたりと、いろいろと便利です。

インストールコマンドは次のとおりです。なおここではデータベースに SQLite を使っています。

  1. composer と PHP 関連をインストールします。Laravel アプリは composer を使って作ります。
    sudo apt install composer php-curl php-sqlite3
  2. SQLite をインストールしますが、PHP の SQLite 拡張機能は上記ですでにインストール済みです。なのでこちらのインストールは必須ではありません。単独で SQLite を使う場合に必要になります。
    sudo apt install sqlite3
  3. PHP の xml 拡張機能と dom 拡張機能をインストールします。これをインストールしておかないと、Laravel アプリを作る際にエラーが出ます。
    sudo apt install php-xml php-dom
  4. 次の Apache ライブラリをインストールしておかないと PHP ページで、PHP が処理された結果ではなく、PHP のコードがそのまま表示されます。
    sudo apt install libapache2-mod-php


はじめての Laravel アプリ

前節までで Laravel アプリを構築する環境が整いました。この節では、はじめての Laravel アプリを作ります。

  1. /var/www ディクレトリに移動します。
    cd /var/www
  2. www ディレクトリの中にある html ディレクトリに書き込み権限を与えます。
    sudo chmod 777 html
  3. html ディレクトリに移動します。この html ディレクトリが Apache2 サーバーによって、インターネットに公開されるディレクトリになります。
    cd html
  4. composer を使って Laravel アプリを作ります。
    composer create-project laravel/laravel MyApp
    (MyApp の部分は任意のアプリ名で大丈夫です。)
  5. 作ったアプリに書き込み権限を与えます。-R オプションは MyApp 以下のすべてのファイルに、という意味になります。
    sudo chmod -R 777 MyApp
  6. お使いのブラウザに次のアドレスを入力します。
    パブリックアドレス/MyApp/public
    (Laravel のテンプレートアプリが表示されれば成功です。)


認証機能をつける

さきほどのアプリではホームページ(最初のページ)の1画面だけでした。これにリンク先をつけるために、認証機能をつけてみます。Laravel には簡単に認証機能をつける仕組みが準備されています。

  1. npm というものをインストールします。このインストールはどの場所(どのディレクトリ)で行っても大丈夫です。
    sudo apt install npm
  2. MyApp へ移動します。
    cd /var/www/html/MyApp
  3. 認証機能をつける仕組みをダウンロードします。
    composer require laravel/breeze --dev
  4. 認証機能をつける仕組みをインストールします。
    php artisan breeze:install blade
  5. これでお使いのブラウザで「パブリックアドレス/MyApp/public」にアクセスすると、さきほどのデフォルト画面に「Login」と「Register」というボタンが追加されています。
    しかし、「Login」や「Register」をクリックしても「Not Found」というページが表示されるだけです。
    これは、Ubuntu での Lravel 固有の問題です。次の節ではこの問題を解決します。


最初のページ(ホームページ)しか表示できない問題を解決する

ここでは、最初のページ(ホームページ)という表現を使っています。

「トップページしか表示できない」という表現をよく見ますが、正確には最初のページは「ホームページ」といいます。よく「ホーム(Home)」というリンクがありますよね。トップページは、そのページの一番上のことを指します。Top というリンクもよく見ますよね。

この「ホームページしか表示できない」という問題は、Ubuntu 固有の問題です。ネット上には、いろいろな解決策が載っていましたが、私の場合どれも解決には至りませんでした。

でも次のようにすると解決します。

  1. /etc/apache2/apache2.conf ファイルを書き込み可能で開き、次の部分を修正します。170行目あたりです。
    
        # 修正前
        <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 に変更します。
        
  2. /etc/apache2 ディレクトリに戻って次のコマンドを実行します。
    sudo a2enmod rewrite
  3. 次のコマンドで Apache2 を再起動します
    sudo service apache2 restart
  4. これで、MyApp は最初のページだけではなく、リンク先のページも表示できるようになります。
    「Register」でユーザー登録ができ、「Login」でログインできます。ユーザは何名でも登録できます。今はこの登録機能とログイン・ログアウト機能しかありません。


アプリの日本語化

アプリを日本語化する機能も、有志により便利な仕組みが用意されています。次のようにしてアプリを日本語化します。さきほどの npm がインストールされていることが前提です。

  1. npm をまだインストールしていない場合は次のコマンドでインストールしてください。このインストールはどの場所(どのディレクトリ)で行っても大丈夫です。
    sudo apt install npm
  2. MyApp ディレクトリに移動します。
    cd /var/www/html/MyApp
  3. 日本語化する仕組みをダウンロードします。
    composer require askdkc/breezejp --dev
  4. 日本語化するしくもをインストールします。
    php artisan breezejp

お使いのブラウザで「パブクリックアドレス/MyApp/public」を開いてください。 ホームページ(最初のページ)は英語のままですが、登録画面やログイン画面、その他メニューなど、すべて日本語になっています。

デプロイ

前節まででは Ubuntu Server の中で Laravel アプリを作ってきました。しかし、実際には、サーバー以外のコンピューターで Laravel アプリを作り、それを、サーバーに移動して実行できるようにします。このサーバーで実行できるようにすることをデプロイ (deploy、配置する、展開する) といいます。

この節では、GitHub にアップロードされている Laravel アプリを、Ubuntu Server にダウンロードして実行できるようにします。

GitHub のアカウントの作成方法や、GitHub に Laravel アプリをアップロードする方法などは、後日記載しようと思いますが、今回は GitHub に用意されている無料サンプルを使います。 使うのは GitHub で「free laravel」と検索して、最初に出てきたアプリです。

  1. html ディレクトリに移動します。
    cd /var/www/html
  2. 次のコードを実行して、GitHub の Laravel サンプルアプリをダウンロードします。
    git clone https://github.com/laravel/laravel.git
  3. ダウロードされた laravel アプリのディレクトリに移動します。
    cd laravel
  4. ##次のコマンドはサンプルアプリをダウンロードした時だけに必要です。自分でアップロードしたアプリを実行する場合には必要ありません。##
    composer update
  5. ##次の作業からは自分で作ったアプリの場合も必要です。##
    .env ファイルを作成します。
    1. サンプルアプリの場合は、ディレクトリの中にある.env.example をコピーして作ります。
      cp .env.example .env
    2. 自分でアップロードしたアプリの場合は、.env.example や .env ファイルが消失している場合が多いです。その場合は、ローカル(Laravel アプリを作ったコンピューターの中)にある .env.example というファイルの内容をコピペして作ります。先頭に . のついた .env という名前にすることに注意してください
  6. 次のコマンドで .env ファイルの中にキーを書き込みます。
    php artisan key:generate
  7. .env ファイルに変更を加えるのなら、key:generate が終わったこの段階でします。今回は何も変更せず先に進みます。
  8. composer をインストールします。
    composer install
  9. 次のコマンドでデータベースに情報を書き込みます。これはデータベースの構造を書き込むだけで、データ自体は書き込みません。
    php artisan migrate
    確認画面が表示されたら yes を選んでエンターキーを押します。
  10. アプリの外に出ます。
    cd ..
  11. アプリに書き込み権限を与えます。
    sudo chmod -R 777 laravel
  12. ブラウザに「パブリックアドレス/laravel/public」と入力すればデプロイしたアプリが表示されます。

ただのデフォルトページでしたね(笑)


コマンドまとめ


    ############################
    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


14 visits
Posted: Jul. 09, 2025
Update: Jul. 10, 2025

ホーム   目次