Laravel   on   Ubuntu

ホーム  

概要

パブリックアドレスについて大きな間違いがありました。ここで取得しているパブリックアドレスは LAN (家庭内や会社内でのローカルエリアネットワーク) でルーターが個別の機器 (コンピューターなど) を区別するために与えている IP アドレスです。LAN の上層に WAN (ワイドエリアネットワーク) があり、そちらの IP アドレスがインターネットに繋がっています。 「自宅サーバーをインターネットに公開する」で詳しく説明しています。

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


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 のテンプレートアプリが表示されれば成功です。)


認証機能をつける

AWS の Lightsail を使っている場合は、npm を利用したこの機能は動作しません。次の「最初のページ(ホームページ)しか表示できない問題を解決する」にお進みください。

さきほどのアプリではホームページ(最初のページ)の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」でログインできます。ユーザは何名でも登録できます。今はこの登録機能とログイン・ログアウト機能しかありません。


アプリの日本語化

AWS の Lightsail を使っている場合は、npm を利用したこの機能は動作しません。次の「デプロイ」にお進みください。

アプリを日本語化する機能も、有志により便利な仕組みが用意されています。次のようにしてアプリを日本語化します。さきほどの 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」と入力すればデプロイしたアプリが表示されます。

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


Next step

ローカル (お使いの Desktop OS) に Laravel 開発環境を構築していない場合は、次に進んでください。

  • Mac で Laravel
  • Linux で Laravel
  • Windows で Laravel
  • ローカルでアプリケーションを作る方法は、次に進んでください。

  • Todo | プロジェクト
  • BBS | プロジェクト
  • ローカルで作成したアプリケーションをサーバーで使えるようにするには、次に進んでください。

  • アプリケーションをサーバーにデプロイする

  • コマンドまとめ

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


    1122 visits
    Posted: Jul. 09, 2025
    Update: Aug. 01, 2025

    ホーム   目次