Laravel   on   Mint   実機

ホーム  

概要

今回は、実機にインストールした Linux Mint 22.1 で Laravel の開発環境の構築からデプロイまでの一連の流れを説明します。

用意した実機は MacBook Air 2012 Core i5/1.7GHz です。かなり古い機種です。


Linux Mint 22.1

Linux Mint はサーバーではなく GUI を持つデスクトップ OS です。しかしサーバーとして使ってみたら、軽くて静かで発熱も少なくて良かったです。ssh 接続でも軽く動作します。

インストーラー

Linux Mint にはX86版しかありません。。ダウンロードサイトは「Linux Mint」で検索すると見つかります。Xfce Edition が少機能ですが一番軽く、Cinnamon Edition が高機能ですが一番重いです。MATE Edition は、前者2つの中間ぐらいです。今回は Xfce と MATE をインストールしてみました。

インストールメディアの作成

今回も Mac で作ります。USB メモリを Mac に装着してください。そしてターミナルで次のようにコマンドしていきます。 ダウロードした iso ファイルはホームディレクトリに移動しておくとやりやすいです。


      接続されているディスクの一覧を表示します。
      diskutil list
      
      
       容量や名前、external(外部)、physical(物理的)などから /dev/disk4 が USB メモリだとわかります。
   LINUX という名前は、私が USB メモリに付けた名前です。
      /dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *251.0 GB   disk0
   1:             Apple_APFS_ISC Container disk1         524.3 MB   disk0s1
   2:                 Apple_APFS Container disk3         245.1 GB   disk0s2
   3:        Apple_APFS_Recovery Container disk2         5.4 GB     disk0s3

/dev/disk3 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +245.1 GB   disk3
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            11.3 GB    disk3s1
   2:              APFS Snapshot com.apple.os.update-... 11.3 GB    disk3s1s1
   3:                APFS Volume Preboot                 7.1 GB     disk3s2
   4:                APFS Volume Recovery                1.0 GB     disk3s3
   5:                APFS Volume Data                    180.8 GB   disk3s5
   6:                APFS Volume VM                      2.1 GB     disk3s6

/dev/disk4 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *62.5 GB    disk4
   1:                        EFI NO NAME                 209.7 MB   disk4s1
   2:                  Apple_HFS LINUX                   62.2 GB    disk4s2
   
   
  /dev/disk4 を M-DOS フォーマットで初期化します。
   diskutil eraseDisk MS-DOS MATE /dev/disk4
   
   
   /dev/disk4 をアンマウントします。ここでアンマウントするのは不思議な気がしますが、これで合っています。
   diskutil unmountDisk /dev/disk4
   
   
   iso イメージを /dev/disk4 に書き込みます。
   Xfce の場合
   sudo dd if=./linuxmint-22.1-xfce-64bit.iso of=/dev/disk4 bs=16m
   MATE の場合
   sudo dd if=./linuxmint-22.1-mate-64bit.iso of=/dev/disk4 bs=16m
   
   
   
   書き込みが終わったら USB メモリを取り出します。
  diskutil eject /dev/disk4
      

インストール

作成した USB メモリを実機に装着して、実機を起動もしくは再起動します。Mac の場合は、option キーを押しながら起動もしくは再起動すると、どのディスクから起動するかを選ぶ画面とネットワーク設定画面が表示されます。ネットワークを設定して、インストールするディスクを選んでエンターキーを押しますディクスは EFI BOOT という名前の付いた黄色の USB アイコンが付いたもの選びます。銀色のハードディスクアイコンは内蔵ディスクです。黄色の USB アイコンが複数ある場合は、一番右端のものがインストーラである可能性が高いです。

インストーラーが起動します。インストールの手順は次のとおりです。

  1. Welcome 画面
    ここで選んだ言語がインストールされる Mint の言語になります。言語を選んで Continue をクリックします。
    以下は English を選んだ場合の表示になります。
  2. Keyboard layout
    キーボードを選んで Continue をクリックします。
  3. Wireless
    1. Connect to this network にチェックを入れて、Wifi 名を選び Connect をクリックします。
    2. パスワードを入力して Connect をクリックします。
    3. Wireless 画面に戻るので Continue をクリックします。
  4. Multimedia codecs
    私はチェックせずに Continue しています。
  5. Installation type
    1. ディスク全体を使うならデフォルトの Erase disk and install Linux Mint のまま Install Now をクリックします。
    2. パーテイションを選びたいなら Somethig else を選んで Continue をクリックします。
    3. 次の画面でインストールしたいパーティションを選び Change ボタンをクリックします。
    4. 次に表示されるパネルの Use as で Ex4 journaling file sytem を選択します。
    5. Format the partition にチェックを入れます。
    6. Mount Point で / を選びます。
    7. OK をクリックします。
    8. Installation type 画面に戻るので Install Now をクリックします。
    9. Write the change to disk? という確認パネルで Continue をクリックします。
  6. Where are you? 画面
    お使いの地域を選んで Continue をクリックします。
  7. Who are you 画面
    ユーザー登録画面です。しっかり入力してください。 Your computer's name のところはホスト名になります。任意のホスト名で大丈夫です。最後に Continue をクリックします。
  8. インストールが始まります。
  9. インストールが終われば Restart Now をクリックします。
  10. Please remove the installation medium, then press ENTER: と表示されたら USB を抜き、エンターキーを押します。

パブリックアドレス

インストールが終わり、Mint が起動しましたた、ターミナルを開き ip a と入力してエンターキーを押してください。結果がいっぱい表示されると思いますが、その中に、inet という項目が2つあります。そのうち「127.0.0.1」と違うほうをメモしておいてください。127.0.0.1 はローカルアドレスで、違うほうがインターネット上に公開されるパブリックアドレスです。パブリックアドレスは「xxx.xxx.xxx.xxx/xx」という形になっていると思いますが、最後の / とそれ以降の2桁の数字はいりません。Xfce はそのまま起動しておいてください。

SSH 設定


      sudo apt update
      sudo apt install openssh-server
      sudo systemctl start ssh
      sudo systemctl enable ssh
      

Ubuntu では、sudo systemctl start sshd ですが、Mint では 最後が sshd ではなく ssh になります。

Mac あるいはお使いのコンピュータのターミナルを開いて、 「ssh Ubuntuのユーザー名@さきほどメモしたパブリックアドレス 例: ssh name@100.100.100.100」と入力してエンターキーを押してください。(yes/no/[fingerprint]) と聞かれたら yes と答えてください。パスワードを聞かれたら、Xfce に登録したユーザーのパスワードを入力してください。これで Xfce に SSH 経由でつながりました。今後はこちらのターミナルで作業を進めていきます。Xfce はそのまま起動しておいてください。

SSH 接続ができない場合

SSH 接続ができない場合は Mac などのクライアント側のターミナルで次を試してみてください。


      ssh-keygen -R パブリックアドレス(例: 100.100.100.100)
      

スリープしないようにする

ノートPC の場合はフタを閉じたらスリープするのがデフォルトです。フタを閉めてもスリープしない設定にします。

MATE の場合

  1. コントロールセンター→電源管理と進みます。
  2. AC電源使用時タブを選び、「ノートPCを閉じたら」で「ブランクスクリーン」を選びます。
  3. バッテリー使用時タブを選び、「ノートPCを閉じたら」で「ブランクスクリーン」を選びます。

Xfce の場合


      /etc/systemd/logind.conf を書き込み権限で開きます。
      /etc/systemd/logind.conf の 35行目あたりを次のように書き換えます。
      
      HandleLidSwitch=ignore
      
      ファイルを保存して、ファイルからで、ターミナルで次のようにコマンドします。
      sudo systemctl restart systemd-logind.service
      

Caps Lock キーを Ctrl キーとして使いたい場合

MATE の場合

  1. コントロールセンター→キーボードと進みます。
  2. 「レイアウト」タブを選び、「オプション」ボタンをクリックします。
  3. 「Caps Lock Behavior」項目で「Make Caps Lock an additional Ctrl」を選びます。
  4. 最後に「閉じる」ボタンをクリックしてください。

Xfce の場合


      ホームディレクトリに次の隠しファイルを作ります。すでに存在している場合はそれを使います。
      ~/.Xmodmap
      
      .Xmodmap ファイルに次のように書き込みます。
      clear lock
      clear control
      keycode 66 = Control_L
      add control = Control_L Control_R
      
      ファイルを保存してからファイルを出て、次をタイプして設定を有効にします。
      xmodmap ~/.Xmodmap
      


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 Server Physical
    ############################
    #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
    
    ############################
    実機
    ############################
    #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
    


59 visits
Posted: Jul. 15, 2025
Update: Jul. 15, 2025

ホーム   目次