ホーム
概要
パブリックアドレスについて大きな間違いがありました。ここで取得しているパブリックアドレスは LAN (家庭内や会社内でのローカルエリアネットワーク) でルーターが個別の機器 (コンピューターなど) を区別するために与えている IP アドレスです。LAN の上層に WAN (ワイドエリアネットワーク) があり、そちらの IP アドレスがインターネットに繋がっています。
「自宅サーバーをインターネットに公開する」で詳しく説明しています。
この章では、Parallels Desktop にインストールした Fedora Server 42 で Laravel の開発環境の構築からデプロイまでの一連の流れを説明します。
一番つまづいたのは、Fedora での Laravel アプリが表示されないことでした。しかし、この問題も無事に解決策が見つかりました。
Fedora Server 42
-
ARM版はインターネットで「Fedora Server」と検索すると、ダウンロードサイトが見つかります。X86版も ARM版も同じページからダウンロードできます。
-
Linux のインストールに慣れていない方は、インターネットで検索して参照して欲しいのですが、概要だけ書くと次のようになります。
- 最初に現れる画面はインストール画面での言語を聞いていますが、実際にその言語もインストールされます。デフォルトでは日本語になっていると思います。そのままで良いと思います。コマンドの結果などが日本語で表示されて便利です。後ほど追加の言語を設定することもできます。
- 次の「インストール概要」の画面にはいろいろな項目があります。ほぼ全部を設定しないと先に進めませんが、ほとんどの設定は一度その項目をクリックして、次に現れる画面で左上の「完了」ボタンをクリックするだけでOKです。
- キーボード
お使いのキーボードを設定します。最後に左上の「完了」ボタンをクリックしてください。
- 言語サポート
追加で使う言語を設定します。私はEnglish / United States を追加しています。ここで何も追加しなければどうなるのかは、また試したいと思います。
- 時刻と日付
デフォルトで Asia/Tokyo になっていると思います。そのままで良いと思います。
- rootアカウント
一度項目を開いて「rootアカウント無効化」のまま設定を変えずに、「完了」ボタンをクリックします。
- ユーザーの作成
これはその項目を開いて、実際に設定します。最後に「完了」ボタンを押します。
- インストールソース
項目を開いて、何も変えずに「完了」ボタンを押します。
- ソフトウェアの選択
項目を開いて、デフォルトの「Fedora Server Edition」のままにしておきます。その他のソフトウェアもインストールしません。設定を変えずに、そのまま「完了」ボタンを押します。
- インストール先
デフォルトで「自動パーティション」になっていると思います。そのままで結構です。詳しい方は任意に設定してください。最後に「完了」ボタンを押します。
- ネットワークとホスト名
項目を開き、IPv4のところの数字をメモします。この数字の列が、この Fedora Server がインターネットに公開するパブリックアドレスになります。スラッシュ以降に2桁の数字がついていますがスラッシュとのその2桁の数字は必要ありません。最後に「完了」ボタンを押します。
- これですべての項目のエクスクラメーションマーク(びっくりマーク)は消えたと思います。右下の「インストーの開始」ボタンをクリックしてください。インストールが開始します。
- インストールが終了したら、右下の「システムの再起動」ボタンをクリックします。これでインストールは終了です。
-
Fedora Server が起動したら、さきほど設定したユーザー名とパスワードでログインします。
-
ログイン後「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 はそのまま起動しておいてください。
Httpd
Laravel アプリを使うには WEB 上に公開しなければなりません。しかし Fedora Server にはデフォルトで WEB サーバーがインストールされていません。そこで今回は httpd という WEB サーバーをインストールします。
引き続き、ターミナルを使って SSH 経由で Fedora Server に httpd をインストールします。なお、SSH を経由せず、直接 Fedora Server の画面で作業することもできますが、ターミナルのほうが簡単にコピペを使えたりと、いろいろと便利です。
-
Fedora でアプリケーションをインストールしたり削除するには dnf というパッケージマネージャーを使います。Ubuntu の apt と同じように、アップデートするコマンドはありますが、はじめて dnf を使う際にアップデートするかは微妙です。なぜならアップデート量が非常に多いからです。ここではアップデートすることにします。次のようにコマンドしてくださ。
sudo dnf update
パスワードを聞かれえたらユーザーのパスワードを入力します。
-
httpd をインストールします。
sudo dnf install httpd
- ここからはテキストエディタが必要になります。Linux にデフォルトでインストールされている Vim を使っても良いですし、他のエディタを使っても良いです。私は emacs を使っています。
sudo dnf install emacs-nw
emacs-nw は GUI を持たない emacs です。
-
次のファイルを編集します。
/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
- httpdを起動します。
sudo systemctl start httpd
- httpdを自動起動するように設定します。
sudo systemctl enable httpd
- Fedora Server ではファイアーウォールの設定も必要です。
sudo firewall-cmd --add-service=http --permanent
success と表示されればOK
sudo firewall-cmd --reload
success と表示されればOKです
-
これでようやく httpd WEB サーバーが使えるようになりました。お使いのブラウザの URL 欄にさきほどのパブリックアドレスを入力してエンターキーを押してください。Fedora Webserver Test Pageが表示されます。
Laravel
引き続き、ターミナルを使って SSH 経由で Fedora Server に Laravel 環境を構築していきます。なお、SSH を経由せず、直接 Fedora Server の画面で作業することもできますが、ターミナルのほうが簡単にコピペを使えたりと、いろいろと便利です。
インストールコマンドは次のとおりです。なおここではデータベースに SQLite を使っています。
-
PHP と その拡張機能をインストールします。
sudo dnf install php php-mbstring php-pear php-sqlite3
-
composer をインストールします。Laravel アプリは composer を使って作ります。
sudo dnf install composer
-
hpppd を再起動します。
sudo systemctl restart httpd
はじめての Laravel アプリ
前節までで Laravel アプリを構築する環境が整いました。この節では、はじめての Laravel アプリを作ります。
-
/var/www ディクレトリに移動します。
cd /var/www
-
www ディレクトリの中にある html ディレクトリに書き込み権限を与えます。
sudo chmod 777 html
-
html ディレクトリに移動します。この html ディレクトリが Apache2 サーバーによって、インターネットに公開されるディレクトリになります。
cd html
-
composer を使って Laravel アプリを作ります。
composer create-project laravel/laravel MyApp
(MyApp の部分は任意のアプリ名で大丈夫です。)
-
作ったアプリに書き込み権限を与えます。-R オプションは MyApp 以下のすべてのファイルに、という意味になります。
sudo chmod -R 777 MyApp
-
お使いのブラウザに次のアドレスを入力します。
パブリックアドレス/MyApp/public
しかし、書き込み権限を与えたにも関わらずパーミッションエラーが出ます。これは Fedora での Laravel 固有のエラーです。
パーミッションエラーを解決する
前節のエラーは Fedora Server の中に含まれている SELinux が邪魔をしているからです。ここでは、
その SELinux を停止させます。
- 次のようにコマンドして SELinux が稼働状態がどうか確認します。
sestatus
- 次のように表示されれば SELinux が稼働状態です。
SELinux status: enabled
- SELinux が稼働状態でしたら、
/etc/selinux/config ファイルを開き、22行目あたりの
SELINUX =enforcing を SELINUX=permissive に変更します。
- そして、Fedora Server を再起動します。これはターミナルではできないので、Fedora Server の画面で次のようにコマンドします
reboot
- Fedora Server が再起動したらお使いのユーザー名とパスワードでログインします。
- お使いのブラウザに次のアドレスを入力します。
パブリックアドレス/MyApp/public
無事に Laravel のデフォルトアプリが表示されたことだろうと思います。
-
なお、Fedora Server にはターミナルから SSH 接続をしなおしておいてください。
PHP ページで、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
なお、このエラーは必ず出るとは限りません。事前に設定を変えておく必要はありません。あくまでも症状が出てから変更してみてください。
認証機能をつける
さきほどのアプリではホームページ(最初のページ)の1画面だけでした。これにリンク先をつけるために、認証機能をつけてみます。Laravel には簡単に認証機能をつける仕組みが準備されています。
-
npm というものをインストールします。このインストールはどの場所(どのディレクトリ)で行っても大丈夫です。
sudo dnf install npm
-
MyApp へ移動します。
cd /var/www/html/MyApp
-
認証機能をつける仕組みをダウンロードします。
composer require laravel/breeze --dev
-
認証機能をつける仕組みをインストールします。
php artisan breeze:install blade
-
これでお使いのブラウザで「パブリックアドレス/MyApp/public」にアクセスすると、さきほどのデフォルト画面に「Login」と「Register」というボタンが追加されています。それぞれをクリックするとログイン画面やユーザー登録画面へ移動できます。
アプリの日本語化
アプリを日本語化する機能も、有志により便利な仕組みが用意されています。次のようにしてアプリを日本語化します。さきほどの npm がインストールされていることが前提です。
-
npm をまだインストールしていない場合は次のコマンドでインストールしてください。このインストールはどの場所(どのディレクトリ)で行っても大丈夫です。
sudo apt install npm
-
MyApp ディレクトリに移動します。
cd /var/www/html/MyApp
-
日本語化する仕組みをダウンロードします。
composer require askdkc/breezejp --dev
-
日本語化するしくもをインストールします。
php artisan breezejp
お使いのブラウザで「パブクリックアドレス/MyApp/public」を開いてください。
ホームページ(最初のページ)は英語のままですが、登録画面やログイン画面、その他メニューなど、すべて日本語になっています。
デプロイ
前節まででは Ubuntu Server の中で Laravel アプリを作ってきました。しかし、実際には、サーバー以外のコンピューターで Laravel アプリを作り、それを、サーバーに移動して実行できるようにします。このサーバーで実行できるようにすることをデプロイ (deploy、配置する、展開する) といいます。
この節では、GitHub にアップロードされている Laravel アプリを、Ubuntu Server にダウンロードして実行できるようにします。
GitHub のアカウントの作成方法や、GitHub に Laravel アプリをアップロードする方法などは、後日記載しようと思いますが、今回は GitHub に用意されている無料サンプルを使います。
使うのは GitHub で「free laravel」と検索して、最初に出てきたアプリです。
- html ディレクトリに移動します。
cd /var/www/html
-
次のコードを実行して、GitHub の Laravel サンプルアプリをダウンロードします。
git clone https://github.com/laravel/laravel.git
- ダウロードされた laravel アプリのディレクトリに移動します。
cd laravel
-
##次のコマンドはサンプルアプリをダウンロードした時だけに必要です。自分でアップロードしたアプリを実行する場合には必要ありません。##
composer update
- ##次の作業からは自分で作ったアプリの場合も必要です。##
.env ファイルを作成します。
- サンプルアプリの場合は、ディレクトリの中にある.env.example をコピーして作ります。
cp .env.example .env
-
自分でアップロードしたアプリの場合は、.env.example や .env ファイルが消失している場合が多いです。その場合は、ローカル(Laravel アプリを作ったコンピューターの中)にある .env.example というファイルの内容をコピペして作ります。先頭に . のついた .env という名前にすることに注意してください
-
次のコマンドで .env ファイルの中にキーを書き込みます。
php artisan key:generate
-
.env ファイルに変更を加えるのなら、key:generate が終わったこの段階でします。今回は何も変更せず先に進みます。
- composer をインストールします。
composer install
-
次のコマンドでデータベースに情報を書き込みます。これはデータベースの構造を書き込むだけで、データ自体は書き込みません。
php artisan migrate
確認画面が表示されたら yes を選んでエンターキーを押します。
-
アプリの外に出ます。
cd ..
-
アプリに書き込み権限を与えます。
sudo chmod -R 777 laravel
-
ブラウザに「パブリックアドレス/laravel/public」と入力すればデプロイしたアプリが表示されます。
ただのデフォルトページでしたね(笑)
コマンドまとめ
############################
Fedora Sercer Virtual
############################
#パブリックアドレスの確認
ip a
#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 を再起動する
reboot
#認証機能をつける
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
Posted: Jul. 10, 2025
Update: Jul. 11, 2025