Laravel   on   Fedora

ホーム  
目次

概要

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

一番つまづいたのは、Fedora での Laravel アプリが表示されないことでした。しかし、この問題も無事に解決策が見つかりました。


Fedora Server 42

  1. ARM版はインターネットで「Fedora Server」と検索すると、ダウンロードサイトが見つかります。X86版も ARM版も同じページからダウンロードできます。
  2. Linux のインストールに慣れていない方は、インターネットで検索して参照して欲しいのですが、概要だけ書くと次のようになります。
    1. 最初に現れる画面はインストール画面での言語を聞いていますが、実際にその言語もインストールされます。デフォルトでは日本語になっていると思います。そのままで良いと思います。コマンドの結果などが日本語で表示されて便利です。後ほど追加の言語を設定することもできます。
    2. 次の「インストール概要」の画面にはいろいろな項目があります。ほぼ全部を設定しないと先に進めませんが、ほとんどの設定は一度その項目をクリックして、次に現れる画面で左上の「完了」ボタンをクリックするだけでOKです。
      1. キーボード
        お使いのキーボードを設定します。最後に左上の「完了」ボタンをクリックしてください。
      2. 言語サポート
        追加で使う言語を設定します。私はEnglish / United States を追加しています。ここで何も追加しなければどうなるのかは、また試したいと思います。
      3. 時刻と日付
        デフォルトで Asia/Tokyo になっていると思います。そのままで良いと思います。
      4. rootアカウント
        一度項目を開いて「rootアカウント無効化」のまま設定を変えずに、「完了」ボタンをクリックします。
      5. ユーザーの作成
        これはその項目を開いて、実際に設定します。最後に「完了」ボタンを押します。
      6. インストールソース
        項目を開いて、何も変えずに「完了」ボタンを押します。
      7. ソフトウェアの選択
        項目を開いて、デフォルトの「Fedora Server Edition」のままにしておきます。その他のソフトウェアもインストールしません。設定を変えずに、そのまま「完了」ボタンを押します。
      8. インストール先
        デフォルトで「自動パーティション」になっていると思います。そのままで結構です。詳しい方は任意に設定してください。最後に「完了」ボタンを押します。
      9. ネットワークとホスト名
        項目を開き、IPv4のところの数字をメモします。この数字の列が、この Fedora Server がインターネットに公開するパブリックアドレスになります。スラッシュ以降に2桁の数字がついていますがスラッシュとのその2桁の数字は必要ありません。最後に「完了」ボタンを押します。
      10. これですべての項目のエクスクラメーションマーク(びっくりマーク)は消えたと思います。右下の「インストーの開始」ボタンをクリックしてください。インストールが開始します。
    3. インストールが終了したら、右下の「システムの再起動」ボタンをクリックします。これでインストールは終了です。
  3. Fedora Server が起動したら、さきほど設定したユーザー名とパスワードでログインします。
  4. ログイン後「ip a」と入力してエンターキーを押してもパブリックアドレスを確認できます。結果がいっぱい表示されると思いますが、その中に、inet という項目が2つあります。そのうち「127.0.0.1」と違うほうの数字の列がインターネットに公開されるパブリックアドレスです。127.0.0.1 はローカルアドレスです。パブリックアドレスは「xxx.xxx.xxx.xxx/xx」という形になっていると思いますが、最後の / とそれ以降の2桁の数字はいりません。Fedora Server はそのまま起動しておいてください。
  5. Mac あるいはお使いのコンピュータのターミナルを開いて、 「ssh Fedoraのユーザー名@パブリックアドレス 例: ssh name@100.100.100.100」と入力してエンターキーを押してください。(yes/no/[fingerprint]) と聞かれたら yes と答えてください。パスワードを聞かれたら、Fedora Server に登録したユーザーのパスワードを入力してください。これで Fedora Server に SSH 経由でつながりました。今後はこちらのターミナルで作業を進めていきます。Fedora Server はそのまま起動しておいてください。


Httpd

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

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

  1. Fedora でアプリケーションをインストールしたり削除するには dnf というパッケージマネージャーを使います。Ubuntu の apt と同じように、アップデートするコマンドはありますが、はじめて dnf を使う際にアップデートするかは微妙です。なぜならアップデート量が非常に多いからです。ここではアップデートすることにします。次のようにコマンドしてくださ。
    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」と入力すればデプロイしたアプリが表示されます。

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


コマンドまとめ


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


13 visits
Posted: Jul. 10, 2025
Update: Jul. 11, 2025

ホーム   目次