Laravel   on   Fedora   実機

ホーム  
目次

概要

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

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


Fedora Server 42

インストーラー

インターネットで「Fedora Server」と検索すると、ダウンロードサイトが見つかります。X86版も ARM版も同じページからダウンロードできます。今回は X86 版の DVD iso をダウンロードしました。

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

今回は Mac を使ってインストールメディアを作成します。ダウンロードした iso をホームディレクトリに置き、USB メモリを装着してください。そしてターミナルを開き、次のようにしてインストールメディアを作成します。


      diskutil list
      
      接続されているディスクの一覧を表示しています。
    
      /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
   
   容量や名前、external(外部)、physical(物理的)などから /dev/disk4 が USB メモリだとわかります。
   LINUX という名前は、私が USB メモリに付けた名前です。
  
   diskutil eraseDisk MS-DOS FEDORA /dev/disk4
   
   /dev/disk4 を M-DOS フォーマットで初期化しています。
   
   diskutil unmountDisk /dev/disk4
   
   /dev/disk4 をアンマウントしています。ここでアンマウントするのは不思議な気がしますが、これで合っています。
   
   sudo dd if=./Fedora-Server-dvd-x86_64-42-1.1.iso of=/dev/disk4 bs=16m
   
   iso イメージを /dev/disk4 に書き込んでいます。書き込み中は何も表示されません。
   
  diskutil eject /dev/disk4
  
  書き込みが終わったので USB メモリを取り出しています。書き込みが終わった時は、その旨が表示されます。
      


インストール

  1. 最初に現れる画面はインストール画面で使用する言語を聞いています。しかし実際にはここで選択した言語がインストールされます。私は日本語をおすすめします。実際に Fedora で作業する際に、コマンドの結果などが日本語で表示されて便利です。
  2. 次の「インストール概要」の画面にはいろいろな設定項目があります。一応すべて説明しますが、基本的にはその項目を開き、設定が完了したら、画面で左上の「完了」ボタンを押すという流れになります。
    1. キーボード
      お使いのキーボードを設定します。最後に左上の「完了」ボタンをクリックします。
    2. 言語サポート
      追加で使う言語を設定します。私は English / United States を追加しています。ここで英語を追加することに意味があるかは分かりません(システムにはそもそも英語がインストールされます)。ここで何も追加しないということも試してみましたが、Fedora を起動させてからの表示が変になることがあるような気がしました。あくまでも気持ちですが、
    3. 時刻と日付
      デフォルトで Asia/Tokyo になっていると思います。そのままで良いと思います。
    4. rootアカウント
      デフォルトで「rootアカウント無効」になっていると思います。のままで良いと思います。
    5. ユーザーの作成
      この項目はしっかりと設定します。設定が終われば、左上の「完了」ボタンを押します。
    6. インストールソース
      変更の必要がないと思います。
    7. ソフトウェアの選択
      デフォルトで「Fedora Server Edition」になっていると思います。そのままで良いと思います。何かインストールしたいものがあれば選択画面で選択してください。
    8. インストール先
      この部分は、仮想環境にインストールする場合と違い、かなり注意が必要です。
      1. この項目を一度開いて「完了」ボタンを押してください。これで「完了」になれば問題ありませんが、おそらく「インストールオプション」の画面が表示されると思います。インストールオプション画面で右下の「領域の再利用」をクリックしてください。
      2. 次の画面で内蔵デバイスのパーティションのリストが現れますので、それぞれ「保持」か「削除」を決めていきます。「保持」した部分には何の変更もされませんが、「削除」した部分に Fedora Server がインストールされます。すべての領域を使いたかったら「すべて削除」を選びます。設定が終わりましたら、右下の「領域の再利用」ボタンをクリックしてください。
    9. ネットワークとホスト名
      項目を開きます。無線LANのインターフェースは認識しているみたいですが、接続はされていません。IP アドレスなども表示されていません。要するにネットには繋がっていないということです。この項目は、インストールが終わり、Fedora Server が起動してから行います。「完了」ボタンを押して画面を閉じてください。
    10. これですべての項目のエクスクラメーションマーク(びっくりマーク)が消えたと思います。もしエクスクラメーションマークの付いている項目が残っていれば、その項目を開き、何も変更せずに「完了」ボタンを押してみてください。
    11. 右下の「インストールの開始」ボタンが有効になったら、このボタンをクリックしてインストールを開始してください。
    12. インストールが終了したら、右下の「システムの再起動」ボタンをクリックします。これでインストールは終了です。
  3. Fedora Server が起動したら、さきほど設定したユーザー名とパスワードでログインします。

Wi-Fi の接続

Fedora Server が起動したら、まず Wi-Fi の設定します。Fesora Server の画面で次のコマンドを打ち込んでください。


        nmcli device wifi list
        Wi-fi のリストが表示されます。
        
        nmcli device wifi connect <SSID> password <パスワード>
        <SSID>はあなたの Wi-fi 名です。
        
        nmcli device status
        設定を有効にします。
        

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

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

スリープしない設定にする

ノートパソコンなどに Fedora Server をインストールした場合、ノートパソコンのフタを閉じれば、そのノートパソコンはスリープしてしまいます。それではサーバーとして都合が悪いので、フタを閉じてもスリープしない設定にします。


          systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
          システムがスリープしない設定にしています。

          systemctl daemon-reload
          設定を有効にしています。
          


Httpd

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

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

  1. Fedora でアプリケーションをインストールしたり削除するには dnf というパッケージマネージャーを使います。はじめて dnf を使う際にアップデートしておきます。ただし Fedora のアップデートは非常に量が多いです。次のようにコマンドしてくださ。
    sudo dnf update
    パスワードを聞かれえたらユーザーのパスワードを入力します。
  2. httpd をインストールします。
    sudo dnf install httpd
  3. ここからはテキストエディタが必要になります。Linux にデフォルトでインストールされている Vim を使っても良いですし、他のエディタを使っても良いです。私は emacs を使っています。
    sudo dnf install emacs-nw
    emacs-nw は GUI を持たない emacs です。
  4. 次のファイルを編集します。
    /etc/httpd/conf/httpd.conf
    修正内容は次のとおりです。
    1. 149行目あたり、Indexes を削除します。
      Options FollowSymLinks
    2. 156行目あたり、None を All に変更しています。
      AllowOverride All
    3. 169行目あたり、index cgi と index.php を追加しています。
      DirectoryIndex index.html index.cgi index.php
    4. 最終行に次の記述を追加します。
      ServerTokens Prod
  5. httpdを起動します。
    sudo systemctl start httpd
  6. httpdを自動起動するように設定します。
    sudo systemctl enable httpd
  7. Fedora Server ではファイアーウォールの設定も必要です。
    sudo firewall-cmd --add-service=http --permanent
    success と表示されればOK
    sudo firewall-cmd --reload
    success と表示されればOKです
  8. これでようやく httpd WEB サーバーが使えるようになりました。お使いのブラウザの URL 欄にさきほどのパブリックアドレスを入力してエンターキーを押してください。Fedora Webserver Test Pageが表示されます。


Laravel

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

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

  1. PHP と その拡張機能をインストールします。
    sudo dnf install php php-mbstring php-pear php-sqlite3
  2. composer をインストールします。Laravel アプリは composer を使って作ります。
    sudo dnf install composer
  3. hpppd を再起動します。
    sudo systemctl restart httpd


はじめての 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
    しかし、書き込み権限を与えたにも関わらずパーミッションエラーが出ます。これは Fedora での Laravel 固有のエラーです。


パーミッションエラーを解決する

前節のエラーは Fedora Server の中に含まれている SELinux が邪魔をしているからです。ここでは、 その SELinux を停止させます。

  1. 次のようにコマンドして SELinux が稼働状態がどうか確認します。
    sestatus
  2. 次のように表示されれば SELinux が稼働状態です。
    SELinux status: enabled
  3. SELinux が稼働状態でしたら、
    /etc/selinux/config ファイルを開き、22行目あたりの
    SELINUX =enforcing を SELINUX=permissive に変更します。
  4. そして、Fedora Server を再起動します。これはターミナルではできないので、Fedora Server の画面で次のようにコマンドします
    reboot
  5. Fedora Server が再起動したらお使いのユーザー名とパスワードでログインします。
  6. お使いのブラウザに次のアドレスを入力します。
    パブリックアドレス/MyApp/public
    無事に Laravel のデフォルトアプリが表示されたことだろうと思います。
  7. なお、Fedora Server にはターミナルから SSH 接続をしなおしておいてください。


PHP ページで、PHP のソースコードがそのまま表示される場合

前節のパーミッションエラー以外に、PHP ページで、PHP のソースコードがそのまま表示されるという問題が発生する場合があります。その場合は次のようにして、修復します。

  1. 次のファイルを書き込み可能で開きます。
    /etc/httpd/conf.modules.d/00-mpm.conf
  2. 次の行のコメント(#)を外します。
    LoadModule mpm_prefork_module modules / mod_mpm_prefork.so
  3. 次の行にコメント(#)を付けます。
    #LoadModule mpm_event_module modules / mod_mpm_event.so
  4. httpd サーバーを再起動します。
    sudo systemctl restart httpd
なお、このエラーは必ず出るとは限りません。事前に設定を変えておく必要はありません。あくまでも症状が出てから変更してみてください。


認証機能をつける

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

  1. npm というものをインストールします。このインストールはどの場所(どのディレクトリ)で行っても大丈夫です。
    sudo dnf 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」というボタンが追加されています。それぞれをクリックするとログイン画面やユーザー登録画面へ移動できます。


アプリの日本語化

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

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


コマンドまとめ


    ############################
    Fedora Server Physical
    ############################
    
    #Wi-Fi 接続
    nmcli device wifi list
    nmcli device wifi connect  password <パスワード>
    nmcli device status
    
    #パブリックアドレスの確認
    ip a
    
    #スリープ機能の停止
    systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
    systemctl daemon-reload
    
    #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プロジェクトの作成
    composer create-project laravel/laravel MyApp(任意のアプリ名)
    sudo chmod -R 777 MyApp
    
    #FedoraでLaraveサイトが表示できない問題を解決する
    #SELinuxの確認
    sestatus
   #enabledだったら次のようにして停止する
    /etc/selinux/config
    SELINUX =enforcing を SELINUX=permissive に変更
    Fedora Server を再起動する

    #認証機能をつける
    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
    
    
    #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
      


19 visits
Posted: Jul. 11, 2025
Update: Jul. 11, 2025

ホーム   目次