動的プログラミング言語のインストールおよび使用
Red Hat Enterprise Linux 9 での Python および PHP のインストールおよび使用
概要
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 Python の概要 リンクのコピーリンクがクリップボードにコピーされました!
Python は、オブジェクト指向、命令、機能、手順などの複数のプログラミングパラダイムをサポートする、高レベルのプログラミング言語です。Python は動的なセマンティクスを持ち、汎用プログラミングに使用できます。
Red Hat Enterprise Linux では、システムツール、データ分析用のツール、Web アプリケーションを提供するパッケージなど、システムにインストールされている多くのパッケージが Python で記述されています。このパッケージを使用するには、python* パッケージがインストールされている必要があります。
1.1. Python のバージョン リンクのコピーリンクがクリップボードにコピーされました!
Python 3.9 が RHEL 9 におけるデフォルトの Python 実装にPython 3.9 は、BaseOS リポジトリーにあるモジュール以外の python3 RPM パッケージで配布され、通常はデフォルトでインストールされます。Python 3.9 は、RHEL 9 のライフサイクル全体でサポートされます。
Python 3 の追加バージョンは、モジュール以外の RPM パッケージとして配布され、RHEL 9 のマイナーリリースの AppStream リポジトリーを通じてライフサイクルが短くなります。Python 3 のこれらの追加バージョンは、Python 3.9 と並行してインストールできます。
Python 2 は RHEL 9 に同梱されていません。
| バージョン | インストールするパッケージ | コマンドの例 | 利用可能となったバージョン | ライフサイクル |
|---|---|---|---|---|
| Python 3.9 |
|
| RHEL 9.0 | RHEL 9 でフルサポート |
| Python 3.11 |
|
| RHEL 9.2 | より短い |
| Python 3.12 |
|
| RHEL 9.4 | より短い |
サポート期間の詳細は、Red Hat Enterprise Linux のライフサイクル およびRed Hat Enterprise Linux Application Streams ライフサイクル を参照してください。
1.2. RHEL 8 以降の Python エコシステムの主な相違点 リンクのコピーリンクがクリップボードにコピーされました!
RHEL 8 と比較した場合の RHEL 9 の Python エコシステムの主な変更点は次のとおりです。
バージョンを指定しない python コマンド
バージョンを指定しない python コマンド (/usr/bin/python) は、python-unversioned-command パッケージで利用できます。一部のシステムでは、このパッケージはデフォルトでインストールされていません。バージョンを指定しない python コマンドを手動でインストールする場合は、dnf install /usr/bin/python コマンドを使用します。
RHEL 9 では、バージョンを指定しない python コマンドは、デフォルトの Python 3.9 バージョンを指し、python3 コマンドおよび python3.9 コマンドと同等です。RHEL 9 では、バージョンを指定しないコマンドが Python 3.9 以外のバージョンを参照するように設定できません。
python コマンドは、対話式セッションを対象としています。実稼働環境では、python3、python3.9、python3.11、または python3.12 を明示的に使用することが推奨されます。
バージョンを指定しない python コマンドは、dnf remove /usr/bin/python コマンドを使用してアンインストールできます。
別の python または python3 コマンドが必要な場合は、/usr/local/bin または ~/.local/bin にカスタムシンボリックリンクを作成するか、Python の仮想環境を使用できます。
バージョンを指定しないコマンドは、python3-pip パッケージの /usr/bin/pip など、他にもいくつか提供されています。RHEL 9 では、バージョンを指定しないコマンドはすべて、デフォルトの Python 3.9 バージョンを指します。
アーキテクチャー固有の Python wheels
RHEL 9 にビルドされたアーキテクチャー固有の Python wheels は、アップストリームアーキテクチャーの命名に準拠しています。これにより、RHEL 9 で Python wheels をビルドし、RHEL 以外のシステムにインストールできます。以前の RHEL リリースにビルドされた Python wheels は、新しいバージョンと互換性があり、RHEL 9 にインストールできます。これは、Python 拡張機能を含む wheels (アーキテクチャーごとにビルド) にのみ影響を及ぼし、純粋な Python コードの Python wheels (アーキテクチャー固有ではない) には影響を及ぼさない点に注意してください。
第2章 Python のインストールおよび使用 リンクのコピーリンクがクリップボードにコピーされました!
RHEL 9 では、Python 3.9 はデフォルトの Python 実装になります。RHEL 9.2 以降では、Python 3.11 は python3.11 パッケージスイートとして利用でき、RHEL 9.4 以降では、Python 3.12 は python3.12 パッケージスイートとして利用できます。
バージョンを指定しない python コマンドは、デフォルトの Python 3.9 バージョンを指します。
2.1. Python 3 のインストール リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの Python 実装は通常、デフォルトでインストールされます。手動でインストールするには、以下の手順に従います。
手順
Python 3.9 をインストールするには、以下を使用します。
dnf install python3
# dnf install python3Copy to Clipboard Copied! Toggle word wrap Toggle overflow Python 3.11 をインストールするには、以下を使用します。
dnf install python3.11
# dnf install python3.11Copy to Clipboard Copied! Toggle word wrap Toggle overflow Python 3.12 をインストールするには、以下を使用します。
dnf install python3.12
# dnf install python3.12Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
-
お使いのシステムにインストールされている Python のバージョンを確認するには、Python の必要なバージョン固有の
pythonコマンドで--versionをオプションに指定します。 Python 3.9 の場合
python3 --version
$ python3 --versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow Python 3.11 の場合
python3.11 --version
$ python3.11 --versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow Python 3.12 の場合:
python3.12 --version
$ python3.12 --versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2. Python 3 追加パッケージのインストール リンクのコピーリンクがクリップボードにコピーされました!
python3- で始まるパッケージには、デフォルトの Python 3.9 バージョンのアドオンモジュールが含まれています。python3.11- で始まるパッケージには、Python 3.11 のアドオンモジュールが含まれています。python3.12- で始まるパッケージには、Python 3.12 のアドオンモジュールが含まれています。
手順
Python 3.9 の
Requestsモジュールをインストールするには、以下を使用します。dnf install python3-requests
# dnf install python3-requestsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Python 3.9 から
pipパッケージインストーラーをインストールするには、以下を使用します。dnf install python3-pip
# dnf install python3-pipCopy to Clipboard Copied! Toggle word wrap Toggle overflow Python 3.11 から
pipパッケージインストーラーをインストールするには、以下を使用します。dnf install python3.11-pip
# dnf install python3.11-pipCopy to Clipboard Copied! Toggle word wrap Toggle overflow Python 3.12 から
pipパッケージインストーラーをインストールするには、以下を使用します。dnf install python3.12-pip
# dnf install python3.12-pipCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. 開発者用の Python 3 追加ツールのインストール リンクのコピーリンクがクリップボードにコピーされました!
開発者向けの追加の Python ツールは、主に CodeReady Linux Builder (CRB) リポジトリーを介して配布されます。
python3-pytest パッケージとその依存関係は、AppStream リポジトリーで利用できます。
たとえば、CRB リポジトリーには以下のパッケージが含まれます。
-
python3*-idle -
python3*-debug -
python3*-Cython -
python3.11-pytestとその依存関係 -
python3.12-pytestとその依存関係
CodeReady Linux Builder リポジトリーの内容は、Red Hat ではサポートされていません。
アップストリームの Python 関連のパッケージがすべて RHEL で利用できるわけではありません。
CRB リポジトリーからパッケージをインストールするには、以下の手順を実行してください。
手順
CodeReady Linux Builder リポジトリーを有効にします。
subscription-manager repos --enable codeready-builder-for-rhel-9-x86_64-rpms
# subscription-manager repos --enable codeready-builder-for-rhel-9-x86_64-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow python3*-Cythonパッケージをインストールします。Python 3.9 の場合
dnf install python3-Cython
# dnf install python3-CythonCopy to Clipboard Copied! Toggle word wrap Toggle overflow Python 3.11 の場合
dnf install python3.11-Cython
# dnf install python3.11-CythonCopy to Clipboard Copied! Toggle word wrap Toggle overflow Python 3.12 の場合:
dnf install python3.12-Cython
# dnf install python3.12-CythonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4. Python の使用 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、Python インタープリターまたは Python 関連のコマンドを実行する例を示しています。
前提条件
- Python がインストールされていることを確認している。
Python 3.11 または Python 3.12 用のサードパーティーアプリケーションをダウンロードしてインストールする場合は、
python3.11-pipまたはpython3.12-pipパッケージをインストールします。警告root ユーザーとして
pipを使用して Python パッケージをインストールすると、ファイルをシステム場所に配置します。これにより、RHEL ライブラリーが上書きされ、システムが不安定になり、サポート対象のパッケージとの競合が発生する可能性があります。Red Hat は、システムレベルでpipを使用してインストールされるソフトウェアをサポートしていません。これらの問題を回避するには、仮想環境内でpipを使用するか、the-user オプションを使用して root 以外のユーザーとしてパッケージをインストールします。
手順
Python 3.9 インタープリターまたは関連コマンドを実行するには、たとえば、以下を使用します。
python3 python3 -m venv --help python3 -m pip install package pip3 install package
$ python3 $ python3 -m venv --help $ python3 -m pip install package $ pip3 install packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow Python 3.11 インタープリターまたは関連コマンドを実行するには、たとえば、以下を使用します。
python3.11 python3.11 -m venv --help python3.11 -m pip install package pip3.11 install package
$ python3.11 $ python3.11 -m venv --help $ python3.11 -m pip install package $ pip3.11 install packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow Python 3.12 インタープリターまたは関連コマンドを実行するには、たとえば、以下を使用します。
python3.12 python3.12 -m venv --help python3.12 -m pip install package pip3.12 install package
$ python3.12 $ python3.12 -m venv --help $ python3.12 -m pip install package $ pip3.12 install packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第3章 Python 3 RPM のパッケージ化 リンクのコピーリンクがクリップボードにコピーされました!
Python パッケージは、pip インストーラーを使用してアップストリームの PyPI リポジトリーから、または DNF パッケージマネージャーを使用してシステムにインストールできます。DNF は RPM パッケージ形式を使用します。これにより、ソフトウェアのダウンストリーム制御が強化されます。
ネイティブ Python パッケージのパッケージ形式は、Python Packaging Authority (PyPA) 仕様 によって定義されています。ほとんどの Python プロジェクトでは、パッケージ化に distutils または setuptools ユーティリティーを使用し、setup.py ファイルでパッケージ情報を定義しています。ただし、ネイティブ Python パッケージ作成の可能性は、時代とともに進化してきています。新しいパッケージング標準の詳細は、pyproject-rpm-macros を参照してください。
この章では、setup.py を使用する Python プロジェクトを RPM パッケージにパッケージ化する方法を説明します。このアプローチには、ネイティブ Python パッケージと比較して次の利点があります。
-
Python および Python 以外のパッケージへの依存が可能です。依存関係は
DNFパッケージマネージャーによって厳密に適用されます。 - パッケージに暗号で署名できます。暗号化署名を使用すると、RPM パッケージのコンテンツを、オペレーティングシステムの他の部分を使用して検証、統合、およびテストできます。
- ビルドプロセス中にテストを実行できます。
3.1. Python パッケージ用の SPEC ファイルの説明 リンクのコピーリンクがクリップボードにコピーされました!
SPEC ファイルには、rpmbuild ユーティリティーが RPM をビルドする際に使用する指示を記述します。指示は一連のセクションに記述します。SPEC ファイルには、次の 2 つの主要な部分があります。各部分に複数のセクションを定義します。
- Preamble (Body で使用される一連のメタデータ項目を記述)
- Body (指示の主要部分を記述)
Python プロジェクトの RPM SPEC ファイルには、非 Python RPM SPEC ファイルと比較していくつかの詳細があります。
Python ライブラリーの RPM パッケージの名前には、常に python3-、python3.11-、または python3.12- の接頭辞が含まれている必要があります。
その他の詳細は、以下の SPEC ファイルの python3*-pello パッケージの例に記載されています。その詳細の説明は、例の下に記載されている注意事項を参照してください。
Python で書かれたプログラムの spec ファイルの例
- 1
python3_pkgversionマクロを定義することで、このパッケージがビルドされる Python バージョンを設定します。デフォルトの Python バージョン 3.9 用にビルドするには、マクロをデフォルト値3に設定するか、その行を完全に削除します。- 2
- Python プロジェクトを RPM にパッケージ化するときは、常に
python-接頭辞をプロジェクトの元の名前に追加してください。ここでは元の名前がpelloであるため、ソース RPM (SRPM) の名前はpython-pelloになります。 - 3
BuildRequiresディレクティブは、このパッケージのビルドおよびテストに必要なパッケージを指定します。BuildRequiresには、Python パッケージのビルドに必要なツールを提供するアイテムpython3-devel(もしくはpython3.11-develまたはpython3.12-devel) と、パッケージ化する特定のソフトウェアに必要な関連パッケージであるpython3-setuptoolsなど (もしくはpython3.11-setuptoolsまたはpython3.12-setuptools) を必ず含めます。あるいは、%checkセクションでテストを実行するために必要なランタイムとテストの依存関係を必ず含めます。- 4
- バイナリー RPM (ユーザーがインストールできるパッケージ) の名前を選択する際には、バージョン管理された Python 接頭辞を追加します。デフォルトの Python 3.9 の場合は
python3-接頭辞、Python 3.11 の場合はpython3.11-接頭辞、Python 3.12 の場合はpython3.12-接頭辞を使用します。%{python3_pkgversion}マクロを使用できます。このマクロは、明示的なバージョン (3.11など) に設定しない限り、デフォルトの Python バージョン 3.9 の場合は3と評価されます (脚注 1 を参照)。 - 5
%py3_buildマクロおよび%py3_installマクロは、インストール場所、使用するインタープリター、その他の詳細を指定する追加の引数を使用して、setup.py buildコマンドおよびsetup.py installコマンドをそれぞれ実行します。- 6
%checkセクションは、パッケージ化されたプロジェクトのテストを実行する必要があります。正確なコマンドはプロジェクト自体に依存しますが、%pytestマクロを使用して、RPM に適した方法でpytestコマンドを実行することができます。
3.2. Python 3 RPM の一般的なマクロ リンクのコピーリンクがクリップボードにコピーされました!
SPEC ファイルでは、値をハードコーディングするのではなく、以下の Python 3 RPM のマクロ の表で説明されているマクロを常に使用します。SPEC ファイルに加えて python3_pkgversion マクロを定義することで、これらのマクロで使用する Python 3 バージョンを再定義できます (「Python パッケージ用の SPEC ファイルの説明」 を参照)。python3_pkgversion マクロを定義すると、以下の表で説明されているマクロの値は、指定された Python 3 バージョンを反映します。
| マクロ | 一般的な定義 | 説明 |
|---|---|---|
| %{python3_pkgversion} | 3 |
他のすべてのマクロで使用される Python バージョン。Python 3.11 を使用するには |
| %{python3} | /usr/bin/python3 | Python3 インタープリター |
| %{python3_version} | 3.9 | Python3 インタープリターの major.minor バージョン |
| %{python3_sitelib} | /usr/lib/python3.9/site-packages | pure-Python モジュールがインストールされている場所 |
| %{python3_sitearch} | /usr/lib64/python3.9/site-packages | アーキテクチャー固有の拡張モジュールを含むモジュールがインストールされている場所 |
| %py3_build |
RPM パッケージに適した引数で | |
| %py3_install |
RPM パッケージに適した引数で | |
| %{py3_shebang_flags} | s |
Python インタープリターディレクティブマクロのデフォルトのフラグセット |
| %py3_shebang_fix |
Python インタープリターディレクティブを |
3.3. Python RPM の自動生成された依存関係の使用 リンクのコピーリンクがクリップボードにコピーされました!
次の手順では、Python プロジェクトを RPM としてパッケージ化するときに自動生成された依存関係を使用する方法を説明します。
前提条件
- RPM の SPEC ファイルが存在する。詳細は、Python パッケージの SPEC ファイルの説明 を参照してください。
手順
アップストリームで提供されるメタデータを含む次のディレクトリーのいずれかが、結果の RPM に含まれていることを確認します。
-
.dist-info .egg-infoRPM ビルドプロセスは、これらのディレクトリーから仮想
pythonX.YdistProvides を自動的に生成します。次に例を示します。python3.9dist(pello)
python3.9dist(pello)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次に、Python 依存関係ジェネレーターはアップストリームメタデータを読み取り、生成された
pythonX.Ydist仮想 Provides を使用して各 RPM パッケージのランタイム要件を生成します。たとえば、生成された要件タグは次のようになります。Requires: python3.9dist(requests)
Requires: python3.9dist(requests)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
- 生成された require を検査します。
生成された require の一部を削除するには、次のいずれかの方法を使用します。
-
SPEC ファイルの
%prepセクションでアップストリーム提供のメタデータを変更します。 - アップストリームドキュメント で説明されている依存関係の自動フィルタリングを使用します。
-
SPEC ファイルの
-
自動依存関係ジェネレーターを無効にするには、メインパッケージの
%description宣言の上に%{?python_disable_dependency_generator}マクロを含めます。
第4章 Python スクリプトでのインタープリターディレクティブの処理 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux 9 では、実行可能な Python スクリプトは、少なくとも主要な Python バージョンを明示的に指定するインタープリターディレクティブ (別名 hashbangs または shebangs) を使用することが想定されます。以下に例を示します。
#!/usr/bin/python3 #!/usr/bin/python3.9 #!/usr/bin/python3.11 #!/usr/bin/python3.12
#!/usr/bin/python3
#!/usr/bin/python3.9
#!/usr/bin/python3.11
#!/usr/bin/python3.12
/usr/lib/rpm/redhat/brp-mangle-shebangs BRP (buildroot policy) スクリプトは、RPM パッケージをビルドする際に自動的に実行され、実行可能なすべてのファイルでインタープリターディレクティブを修正しようとします。
BRP スクリプトは、以下のようにあいまいなインタープリターディレクティブを含む Python スクリプトを検出すると、エラーを生成します。
#!/usr/bin/python
#!/usr/bin/python
または
#!/usr/bin/env python
#!/usr/bin/env python
4.1. Python スクリプトでのインタープリターディレクティブの変更 リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、RPM ビルド時にビルドエラーが発生する Python スクリプト内のインタープリターディレクティブを変更します。
前提条件
- Python スクリプトのインタープリターディレクティブの一部でビルドエラーが発生する。
手順
インタープリターディレクティブを変更するには、以下のタスクのいずれかを実行します。
SPEC ファイルの
%prepセクションで次のマクロを使用します。%py3_shebang_fix SCRIPTNAME …
# %py3_shebang_fix SCRIPTNAME …Copy to Clipboard Copied! Toggle word wrap Toggle overflow SCRIPTNAME には、任意のファイル、ディレクトリー、またはファイルおよびディレクトリーのリストを指定できます。
結果として、リストしたすべてのファイルと、リストしたディレクトリー内のすべての
.pyファイルのインタープリターディレクティブが、%{python3}を指すように変更されます。元のインタープリターディレクティブの既存のフラグは保持され、%{py3_shebang_flags}マクロで定義された追加のフラグが追加されます。SPEC ファイルの%{py3_shebang_flags}マクロを再定義すると、追加されるフラグを変更できます。python3-develパッケージからpathfix.pyスクリプトを適用します。pathfix.py -pn -i %{python3} PATH …# pathfix.py -pn -i %{python3} PATH …Copy to Clipboard Copied! Toggle word wrap Toggle overflow 複数のパスを指定できます。
PATHがディレクトリーの場合、pathfix.pyはあいまいなインタープリターディレクティブを持つスクリプトだけでなく、^[a-zA-Z0-9_]+\.py$のパターンに一致する Python スクリプトを再帰的にスキャンします。上記のコマンドを%prepセクションまたは%installセクションの最後に追加します。-
パッケージ化した Python スクリプトを、想定される形式に準拠するように変更します。この目的のために、RPM ビルドプロセスの外部で
pathfix.pyスクリプトを使用することもできます。pathfix.pyを RPM ビルド以外で実行する場合は、前述の例の%{python3}を、/usr/bin/python3または/usr/bin/python3.11などのインタープリターディレクティブのパスに置き換えます。
第5章 Tcl/Tk のインストール リンクのコピーリンクがクリップボードにコピーされました!
5.1. Tcl/Tk の概要 リンクのコピーリンクがクリップボードにコピーされました!
Tcl は動的プログラミング言語であり、Tk はグラフィカルユーザーインターフェイス (GUI) ツールキットです。これらは、グラフィカルインターフェイスを備えたクロスプラットフォームアプリケーションを開発するための強力で使いやすいプラットフォームを提供します。動的プログラミング言語として、'Tcl' はスクリプトを作成するためのシンプルで柔軟な構文を提供します。tcl パッケージは、この言語と C ライブラリーのインタープリターを提供します。Tk は、GUI ツールキットとして使用でき、グラフィカルインターフェイスを作成するためのツールとウィジェットのセットを提供します。ボタン、メニュー、ダイアログボックス、テキストボックス、キャンバスなどのさまざまなユーザーインターフェイス要素をグラフィックの描画に使用できます。Tk は、多くの動的プログラミング言語の GUI です。
Tcl/Tk の詳細は Tcl/Tk マニュアル または Tcl/Tk ドキュメントの Web ページ を参照してください。
5.2. Tcl のインストール リンクのコピーリンクがクリップボードにコピーされました!
通常、デフォルトの Tcl 実装がデフォルトでインストールされます。手動でインストールするには、以下の手順に従います。
手順
Tclをインストールするには、以下を使用します。dnf install tcl
# dnf install tclCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
システムにインストールされている Tcl バージョンを確認するには、インタープリター
tclshを実行します。tclsh
$ tclshCopy to Clipboard Copied! Toggle word wrap Toggle overflow インタープリターで次のコマンドを実行します。
% info patchlevel 8.6
% info patchlevel 8.6Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Ctrl+C を押すと、インタープリターインターフェイスを終了できます。
5.3. Tk のインストール リンクのコピーリンクがクリップボードにコピーされました!
通常、デフォルトの Tk 実装がデフォルトでインストールされます。手動でインストールするには、以下の手順に従います。
手順
Tkをインストールするには、以下を使用します。dnf install tk
# dnf install tkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
システムにインストールされている
Tkバージョンを確認するには、ウィンドウシェルwishを実行します。グラフィカル表示を実行している必要があります。wish
$ wishCopy to Clipboard Copied! Toggle word wrap Toggle overflow シェルで次のコマンドを実行します。
% puts $tk_version 8.6
% puts $tk_version 8.6Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Ctrl+C を押すと、インタープリターインターフェイスを終了できます。
第6章 PHP スクリプト言語の使用 リンクのコピーリンクがクリップボードにコピーされました!
Hypertext Preprocessor (PHP) は、主にサーバー側スクリプトに使用される汎用スクリプト言語です。PHP を使用すると、Web サーバーを使用して PHP コードを実行できます。
6.1. PHP スクリプト言語のインストール リンクのコピーリンクがクリップボードにコピーされました!
RHEL 9 では、次のバージョンと形式の PHP を利用できます。
-
phpRPM パッケージ形式の PHP 8.0 -
php:8.1モジュールストリーム形式の PHP 8.1 -
php:8.2モジュールストリーム形式の PHP 8.2
手順
シナリオに応じて、次のいずれかの手順を実行します。
PHP 8.0 をインストールするには、以下を実行します。
dnf install php
# dnf install phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトのプロファイルで
php:8.1またはphp:8.2モジュールストリームをインストールするには、以下を実行します。dnf module install php:8.1
# dnf module install php:8.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトの
commonプロファイルはphp-fpmパッケージもインストールし、Apache HTTP Server または nginx で使用する PHP を事前設定します。php:8.1またはphp:8.2モジュールストリームの特定のプロファイルをインストールするには、たとえば以下のようになります。dnf module install php:8.1/profile
# dnf module install php:8.1/profileCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用可能なプロファイルは次のとおりです。
-
common: Web サーバーを使用したサーバー側のスクリプトのデフォルトプロファイル。これには、最も広く使用されているエクステンションが含まれています。 -
minimal: このプロファイルは、Web サーバーを使用せずに PHP でのスクリプト用のコマンドラインインターフェイスのみをインストールします。 devel- このプロファイルには、common プロファイルのパッケージと開発用の追加パッケージが含まれます。たとえば、Web サーバーを使用しない PHP 8.1 をインストールするには、以下を使用します。
dnf module install php:8.1/minimal
# dnf module install php:8.1/minimalCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
6.2. Web サーバーでの PHP スクリプト言語の使用 リンクのコピーリンクがクリップボードにコピーされました!
6.2.1. Apache HTTP Server での PHP の使用 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux 9 では、Apache HTTP Server で PHP を FastCGI プロセスサーバーとして実行できます。FastCGI Process Manager (FPM) は、Web サイトで高負荷を管理できるようにする代替の PHP FastCGI デーモンです。RHEL 9 では、PHP はデフォルトで FastCGI Process Manager を使用します。
FastCGI プロセスサーバーを使用して PHP コードを実行できます。
前提条件
- PHP スクリプト言語がシステムにインストールされている。
手順
httpdパッケージをインストールします。dnf install httpd
# dnf install httpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow Apache HTTP Serverを起動します。systemctl start httpd
# systemctl start httpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、
Apache HTTP Serverをシステムで実行している場合は、PHP のインストール後にhttpdサービスを再起動します。systemctl restart httpd
# systemctl restart httpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow php-fpmサービスを起動します。systemctl start php-fpm
# systemctl start php-fpmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて、両方のサービスが起動時に開始できるようにします。
systemctl enable php-fpm httpd
# systemctl enable php-fpm httpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow PHP の設定に関する情報を取得するには、以下の内容を含む
index.phpファイルを/var/www/html/ディレクトリーに作成します。echo '<?php phpinfo(); ?>' > /var/www/html/index.php
# echo '<?php phpinfo(); ?>' > /var/www/html/index.phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow index.phpファイルを実行するには、ブラウザーで以下を指定します。http://<hostname>/
http://<hostname>/Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 特定の要件がある場合は、設定を調整します。
-
/etc/httpd/conf/httpd.conf- 一般的なhttpd設定 -
/etc/httpd/conf.d/php.conf-httpdの PHP 固有の設定 -
/usr/lib/systemd/system/httpd.service.d/php-fpm.conf- デフォルトでは、php-fpmサービスはhttpdと一緒に起動します。 -
/etc/php-fpm.conf- FPM の主な設定 -
/etc/php-fpm.d/www.conf- デフォルトのwwwプール設定
-
例6.1 "Hello, World!" の実行Apache HTTP Server を使用した PHP スクリプト
/var/www/html/ディレクトリーにプロジェクト用のhelloディレクトリーを作成します。mkdir hello
# mkdir helloCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の内容を含む
/var/www/html/hello/ディレクトリーにhello.phpファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Apache HTTP Serverを起動します。systemctl start httpd
# systemctl start httpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow hello.phpファイルを実行するには、ブラウザーに以下を指定します。http://<hostname>/hello/hello.php
http://<hostname>/hello/hello.phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 結果として、"Hello, World!" というテキストを含む Web ページが表示されます。
6.2.2. nginx Web サーバーでの PHP の使用 リンクのコピーリンクがクリップボードにコピーされました!
nginx Web サーバーを介して PHP コードを実行できます。
前提条件
- PHP スクリプト言語がシステムにインストールされている。
手順
nginxパッケージをインストールします。dnf install nginx
# dnf install nginxCopy to Clipboard Copied! Toggle word wrap Toggle overflow nginxサーバーを起動します。systemctl start nginx
# systemctl start nginxCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、使用中のシステムで
nginxサーバーを実行している場合は、PHP のインストール後にnginxサービスを再起動します。systemctl restart nginx
# systemctl restart nginxCopy to Clipboard Copied! Toggle word wrap Toggle overflow php-fpmサービスを起動します。systemctl start php-fpm
# systemctl start php-fpmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて、両方のサービスが起動時に開始できるようにします。
systemctl enable php-fpm nginx
# systemctl enable php-fpm nginxCopy to Clipboard Copied! Toggle word wrap Toggle overflow PHP の設定に関する情報を取得するには、以下の内容を含む
index.phpファイルを/usr/share/nginx/html/ディレクトリーに作成します。echo '<?php phpinfo(); ?>' > /usr/share/nginx/html/index.php
# echo '<?php phpinfo(); ?>' > /usr/share/nginx/html/index.phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow index.phpファイルを実行するには、ブラウザーで以下を指定します。http://<hostname>/
http://<hostname>/Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 特定の要件がある場合は、設定を調整します。
-
/etc/nginx/nginx.conf-nginxmain configuration -
/etc/nginx/conf.d/php-fpm.conf-nginxの FPM 設定 -
/etc/php-fpm.conf- FPM の主な設定 -
/etc/php-fpm.d/www.conf- デフォルトのwwwプール設定
-
例6.2 "Hello, World!" の実行nginx サーバーを使用した PHP スクリプト
プロジェクトの
helloディレクトリーを/usr/share/nginx/html/ディレクトリーに作成します。mkdir hello
# mkdir helloCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の内容で
/usr/share/nginx/html/hello/ディレクトリーにhello.phpファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow nginxサーバーを起動します。systemctl start nginx
# systemctl start nginxCopy to Clipboard Copied! Toggle word wrap Toggle overflow hello.phpファイルを実行するには、ブラウザーに以下を指定します。http://<hostname>/hello/hello.php
http://<hostname>/hello/hello.phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 結果として、"Hello, World!" というテキストを含む Web ページが表示されます。
6.3. コマンドラインを使用した PHP スクリプトの実行 リンクのコピーリンクがクリップボードにコピーされました!
PHP スクリプトは通常、Web サーバーを使用して実行されますが、コマンドラインを使用して実行することもできます。
前提条件
- PHP スクリプト言語がシステムにインストールされている。
手順
テキストエディターで
filename.phpファイルを作成します。filename は、使用するファイル名に置き換えます。
コマンドラインから、作成した
filename.phpファイルを実行します。php filename.php
# php filename.phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow
例6.3 "Hello, World!" の実行コマンドラインを使用した PHP スクリプト
テキストエディターを使用して、以下の内容で
hello.phpファイルを作成します。<?php echo 'Hello, World!'; ?><?php echo 'Hello, World!'; ?>Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドラインで
hello.phpファイルを実行します。php hello.php
# php hello.phpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 結果として、"Hello, World!" が出力されます。
6.4. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
-
httpd(8)-httpdサービスの man ページ。コマンドラインオプションの全リストが記載されています。 -
httpd.conf(5)-httpd設定の man ページ。httpd設定ファイルの構造と場所が説明されています。 -
nginx(8)-nginxWeb サーバーの man ページ。コマンドラインオプションの全リストとシグナルのリストが記載されています。 -
php-fpm(8)- PHP FPM の man ページ。コマンドラインオプションおよび設定ファイルの全リストが記載されています。