2022-06-29

matplotlib-cpp を使ってみた

matplotlib-cpp は、Python およびその科学計算用ライブラリ NumPy のためのグラフ描画ライブラリ matplotlib を、C++ から利用できるようにしたヘッダーオンリーライブラリです。MIT ライセンスに従っています。

matplotlib-cpp がどんなものか、使ってみました。プロジェクトサイトは下記の Github にあります。

下記の OS 環境で動作確認をしています。

Fedora Linux 36 x86_64

適当なディレクトリ内で、上記プロジェクトサイトからクローンしておきます。

$ git clone git@github.com:lava/matplotlib-cpp.git
   :
   :

その他に必要なパッケージは、Python の matplotlib と numpy です。下記のようにしてインストールします。matplotlib は numpy に依存していますので、一緒にインストールされます。なお、コンパイルには g++ (gcc-c++) 使います。

[bitwalk@fedora-pc ~]$ sudo dnf install python3-matplotlib
メタデータの期限切れの最終確認: 0:16:38 時間前の 2022年06月29日 20時14分15秒 に実施しました。
依存関係が解決しました。
================================================================================
 パッケージ                       Arch      バージョン         Repo       サイズ
================================================================================
インストール:
 python3-matplotlib               x86_64    3.5.2-4.fc36       updates    3.0 M
依存関係のインストール:
 libqhull_r                       x86_64    1:7.2.1-9.fc36     fedora     169 k
 python3-appdirs                  noarch    1.4.4-5.fc36       fedora      22 k
 python3-brotli                   x86_64    1.0.9-7.fc36       fedora     319 k
 python3-cycler                   noarch    0.11.0-2.fc36      fedora      19 k
 python3-fonttools                noarch    4.29.1-1.fc36      fedora     1.4 M
 python3-fs                       noarch    2.4.11-10.fc36     fedora     206 k
 python3-kiwisolver               x86_64    1.4.1-1.fc36       fedora      65 k
 python3-matplotlib-data          noarch    3.5.2-4.fc36       updates    507 k
 python3-matplotlib-data-fonts    noarch    3.5.2-4.fc36       updates    2.3 M
 python3-matplotlib-tk            x86_64    3.5.2-4.fc36       updates     42 k
 python3-munkres                  noarch    1.1.2-11.fc36      fedora      22 k
 python3-numpy                    x86_64    1:1.22.0-2.fc36    fedora     5.7 M
 python3-numpy-f2py               x86_64    1:1.22.0-2.fc36    fedora     261 k
 python3-pillow-tk                x86_64    9.1.0-1.fc36       updates     27 k
 python3-scipy                    x86_64    1.8.1-1.fc36       updates     18 M

トランザクションの概要
================================================================================
インストール  16 パッケージ

ダウンロードサイズの合計: 32 M
インストール後のサイズ: 132 M
これでよろしいですか? [y/N]: y
   :
   :

以下のサンプルをコンパイルしてみます。

3d.cpp

クローンした matplotlib-cpp から matplotlibcpp.h を、サンプル 3d.cpp があるディレクトリ内にコピーして、以下のようにコンパイルして実行します。

[bitwalk@fedora-pc test_matplotlib-cpp]$ g++ 3d.cpp -std=c++11 -I/usr/include/python3.10 -lpython3.10 -o 3d
[bitwalk@fedora-pc test_matplotlib-cpp]$ ./3d
コンパイルした 3d の実行結果

C++ で matplotlib を簡単に利用できるのは確認できましたが、さて、何に使おうか…。

参考サイト

  1. matplotlib-cppでC++からグラフを表示する | 東京工業大学デジタル創作同好会traP
  2. c++でmatplotlibを使う – MY ROBOTICS
  3. C++でグラフ描画をするならmatplotlib-cppを使ってみる? | HIRO LAB BLOG
  4. C++のコードから簡単にmatplotlibを使ってグラフを作成する方法 - MyEnigma

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加

2022-06-26

Fedora Linux で RStudio Server を使う

RStudio は R のための統合開発環境 (IDE) です。RStudio には 2 つのエディションがあります。デスクトップアプリケーションとして利用する RStudio Desktop と、Linux 上でサービスとして動作させてリモート PC からウェブブラウザでアクセスして利用する RStudio Server です。

以前は RStudio Server を公式サイトから RPM パッケージをダウンロードして Fedora へインストールすると、SELinux のアクセスコントロールエラーが何度も出ました。これを解消するための効果的な方法を知らなかったので、RStudio Server (rsession) に起因する SELinux のエラーが出る毎に ausearch コマンドで監査ログを確認、audit2allow コマンドででポリシー・モジュールを作成、semodule コマンドで適用するという作業を繰り返していました [1]。😭

ところが、Fedora Linux ではいつの間にか(少なくとも Fedora Linux 35 では利用できるようになっていました)RStudio をディストリビューションのパッケージとして利用できるようになっており、このパッケージをインストールすれば、SELinux のアクセスコントロールエラーが出ません。そこで、いまさらですが、インストール方法をまとめました。

下記の OS 環境で動作確認をしています。

Fedora Linux 36 x86_64

dnf search コマンドで、rstudio をキーワードにして RStudio パッケージを検索すると下記のように、rstudio-server と rstudio-desktop の二種類が利用できることが判ります。

[bitwalk@fedora-pc ~]$ sudo dnf search rstudio
メタデータの期限切れの最終確認: 0:33:48 時間前の 2022年06月25日 06時37分35秒 に実施しました。
========================== 名前 & 概要 一致: rstudio ===========================
rstudio.x86_64 : RStudio base package
R-rstudioapi.noarch : Safely Access the RStudio API
rstudio-server.x86_64 : Access RStudio via a web browser
============================== 名前 一致: rstudio ==============================
rstudio-desktop.x86_64 : Integrated development environment for the R
                       : programming language
[bitwalk@fedora-pc ~]$

本記事では RStudio Server (rstudio-server) をインストールする例を紹介します。

まず、下記のようにして RStudio Server と関連するパッケージをインストールします。

[bitwalk@fedora-pc ~]$ sudo dnf install rstudio-server
メタデータの期限切れの最終確認: 2:29:04 時間前の 2022年06月25日 06時37分35秒 に実施しました。
依存関係が解決しました。
================================================================================
 パッケージ                     Arch   バージョン                 Repo    サイズ
================================================================================
インストール:
 rstudio-server                 x86_64 2022.02.3+492-1.fc36       updates 1.4 M
依存関係のインストール:
 R-core                         x86_64 4.1.3-1.fc36               fedora   61 M
 biber                          noarch 2.17-2.fc36                fedora  302 k
     :
     :
     :
 yaml-cpp                       x86_64 0.6.3-6.fc36               fedora  123 k
弱い依存関係のインストール:
 perl-Class-XSAccessor          x86_64 1.19-26.fc36               fedora   46 k
 perl-GD-Barcode                noarch 1.15-40.fc36               fedora  595 k
 perl-List-MoreUtils            noarch 0.430-5.fc36               fedora   63 k
 perl-PerlIO-utf8_strict        x86_64 0.009-2.fc36               fedora   26 k

トランザクションの概要
================================================================================
インストール  463 パッケージ

ダウンロードサイズの合計: 311 M
インストール後のサイズ: 749 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/463): biber-2.17-2.fc36.noarch.rpm           511 kB/s | 302 kB     00:00    
(2/463): glyphography-newscycle-fonts-0.5.2-8.f 176 kB/s | 114 kB     00:00    
     :
     :
     :
(462/463): rstudio-server-2022.02.3+492-1.fc36. 4.1 MB/s | 1.4 MB     00:00    
(463/463): rstudio-2022.02.3+492-1.fc36.x86_64. 6.7 MB/s |  11 MB     00:01    
--------------------------------------------------------------------------------
合計                                            4.8 MB/s | 311 MB     01:04     
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                        1/1 
  インストール中   : texlive-iftex-9:svn56594-55.fc36.noarch              1/463 
  インストール中   : texlive-amsmath-9:svn56514-55.fc36.noarch            2/463 
  インストール中   : texlive-url-9:svn32528.3.4-55.fc36.noarch            3/463 
     :
     :
     :
  検証             : rstudio-2022.02.3+492-1.fc36.x86_64                462/463 
  検証             : rstudio-server-2022.02.3+492-1.fc36.x86_64         463/463 

インストール済み:
  R-core-4.1.3-1.fc36.x86_64                                                    
  biber-2.17-2.fc36.noarch                                                      
  boost-chrono-1.76.0-11.fc36.x86_64                                            
     :
     :
     :
  tre-common-0.8.0-35.20140228gitc2f5d13.fc36.noarch                            
  yaml-cpp-0.6.3-6.fc36.x86_64                                                  

完了しました!
[bitwalk@fedora-pc ~]$ 

rstudio-server サービスを起動します。

[bitwalk@fedora-pc ~]$ sudo systemctl start rstudio-server
[bitwalk@fedora-pc ~]$ sudo systemctl enable rstudio-server
Created symlink /etc/systemd/system/multi-user.target.wants/rstudio-server.service → /usr/lib/systemd/system/rstudio-server.service.
[bitwalk@fedora-pc ~]$ 

RStudio Server のデフォルトのポート番号は 8787 です。ローカルの Web ブラウザで localhost:8787 にアクセスできることを確認します。

RStudio のログイン画面

Linux のユーザーアカウントとパスワードでログインします。

ログイン後の RStudio

参考サイト

  1. bitWalk's: RStudio Server と SELinux (Fedora) [2018-08-10]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加

2022-06-24

CHUWI GemiBook Pro を買いました

自宅には Linux をインストールしたチープな PC が何台もありますが、Windows PC は会社から支給されているもの以外ありません。会社の PC はいろいろ制限がかかっているので、私的な用途には不便です。それに、そもそも私的な用途に使うべきではありませんよね。😅

最近は印刷も含め Web でできることが増えたので、Linux をメインに使っていても不自由はほとんどなくなりました。それでも、大半の人が Windows を使っていることから、作ったアプリでもなんでも Windows で試したくなりますし、まだ Windows でなければ困ることも存在します。

そこで、やっぱりプライベートで好き勝手に使える Windows PC が欲しいと思い、あれこれ物色した結果、CHUWI GemiBook Pro を Amazon.co.jp で買うことにしました。

使ったことのないプロセッサ N5100(4 コア、10nm リソグラフィー)やアスペクト比 3: 2 で解像度 2160 x 1440 の画面、それに 8GB の RAM に 256GB のストレージ& M.2 SSD の空きスロット付きと、4 万円台という値段の割にお得感、わくわく感満載だったからです。

Windows 11 がプリインストールされていれば文句なしだったのですが、まあしかたがありません。¥7000 OFF クーポンを適用して 37,500 円で購入しました。このところ 3 万円を切る格安 PC ばかりを狙って買っては Linux をインストールしているので、今回はちょこっと高めの買い物になりました。

CHUWI GemiBook Pro の仕様は以下のようになっています。

ブランド‎CHUWI
メーカーChuwi Innovation Limited.
シリーズ‎GemiBook Pro
システム‎Windows 10 Home
CPU ブランドIntel® Celeron® Processor N5100
RAM8GB LPDDR4
ストレージ256GB M.2 SSD
スクリーン14インチ, アスペクト比 3:2, 解像度 2160 x 1440
キーボード英語配列
カメラ1.0MP
通信WiFi 2.4G/5G 802.11a/ac/b/g/n, Bluetooth 4.2
入出力ポートUSB-A 3.0 x 1、USB Type-C x 1
Micro SD(最大 128GB), M.2 SSD (2280) のスロット(最大 1TB)
3.5mm ヘッドフォンジャック, DC(電源)
バッテリー38Wh (7.6V / 5000mAh)
電源入力 AC100-240V, 50-60Hz, 出力 12V 2A
サイズ310 x 229.5 x 20.6 mm
重量1500 g

大きいスクリーン

アスペクト比 3:2、解像度 2160 x 1440 のスクリーンを持ったノート PC なんて初めて使います。長く、何度も再起動が必要になる Windows 10 のアップデートを済ませた後、表示スケールを 100% にしてスクリーンショットを取りました。デフォルトでは表示スケールが 150% になっていましたが、125% にして使い始めています。

解像度 2160 x 1440 の画面、100% の表示スケールの時のスクリーンショット

1920 x 1080 程度の解像度のディスプレイのノート PC を使うことが多いので、画面が広く感じます、いや実際広いのか。アスペクト比 3:2 というのはなんだか新鮮です。横長のディスプレイ画面が多くなった今、レトロな感覚すらおぼえます。

ベンチマーク

この PC は、しばらくは WIndows PC として使おうと考えているので、Windows だけの結果ですが Geekbench 5 でベンチマークを取っています。

Geekbench 5 によるベンチマーク (Windows 10 Home)
#NamePlatformArchitectureSingle-core ScoreMulti-core Score
15614769 CHUWI Innovation And Technology(ShenZhen)c0.,Ltd GemiBook Pro
Intel Celeron N5100 1112 MHz (4 cores)
Windows 64 x86_64 558 1604
12317425 ASUSTeK COMPUTER INC. VivoBook_ASUSLaptop E410MAB_L410MA
Intel Celeron N4020 1093 MHz (2 cores)
Windows 64 x86_64 443 825

比較用に、今年の 1 月に買った 3 万円を切る格安 PC (N4020) の結果を並べました。N5100 の性能やいかに、と興味津々でしたがベンチマークの差は歴然です。もちろん、コア数の違いによる差もあります。4 万円は超える PC ですが、クーポンを適用して 3 万円台で買えたので、この差はなんだかちょっと嬉しいパフォーマンスです。

プライベートで好き勝手に使える Windows PC があれば、例えば下図のように、Linux 側で xrdp サーバーを設定したときも、Windows から接続できることを遠慮せずに確認できます [2]。😅

RHEL9 の xrdp サーバーへリモートデスクトップで接続した例

さて、久しぶりに MinGW の環境でも作ろうかな。いや待てよ、128GB の SD カードを買って、そこにインストールしようかな。

Windows 11 へ無事アップグレード

その後、Windows Update の画面で、Windows 11 へのアップグレードの案内が出たので、アップグレードを無事済ますことができました。

Windows Update に表示された Windows 11 へのアップグレードの案内
Windows 11 のデスクトップ画面

 

参考サイト

  1. GemiBook Pro - Chuwi(ツーウェイ) | 公式サイト
  2. bitWalk's: [RHEL 9] xrdp の設定 [2022-06-02]

 

GemiBook Pro には細かい違いのあるタイプが存在するようです。

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加

2022-06-21

CentOS Stream 9 に epel をインストール

CentOS Stream は、開発者向けのディストリビューションで、安定版の RHEL, Red Hat Enterprise Linux の次のアップデートをターゲットにしています [1]。簡単に言うと、RHEL のちょっと先を行くディストリビューションです。

CentOS Stream 9 のデスクトップ

EPEL, Extra Packages for Enterprise Linux は、多くの Fedora 貢献者が Red Hat Enterprise Linux (RHEL) とその互換性のある派生版で自分たちが保守している Fedora パッケージを使いたいと思ったことから始まりました。ゴールは、Fedora で開発、テスト、改良された高品質のパッケージを RHEL や互換性のある派生版で使えるようにすることです [2]

EPEL パッケージは RHEL に対してビルドされますが、EPEL Next は、パッケージメンテナが CentOS Stream に対して代替的にビルドできるようにするための追加リポジトリです。CentOS Stream に今後リリースされる RHEL ライブラリのリベースが含まれている場合や、EPEL パッケージの最小バージョンのビルド要件が、CentOS Stream にはすでにあるが RHEL にはまだない場合などに、このリポジトリが必要になることがあるということです [3]

使用している OS は以下の通りです。

CentOS Stream 9 x86_64

パッケージを更新したあと、参考サイト [4] の説明に沿って epel と epel-next をインストールします。

[bitwalk@centos9 ~]$ sudo dnf -y update
   :
   :
完了しました!
[bitwalk@centos9 ~]$ sudo dnf config-manager --set-enabled crb
[bitwalk@centos9 ~]$ sudo dnf install epel-release epel-next-release
CentOS Stream 9 - BaseOS                         15 kB/s | 4.3 kB     00:00    
CentOS Stream 9 - AppStream                     7.4 kB/s | 4.4 kB     00:00    
CentOS Stream 9 - CRB                           2.2 MB/s | 4.3 MB     00:01    
依存関係が解決しました。
================================================================================
 パッケージ              Arch         バージョン      リポジトリー        サイズ
================================================================================
インストール:
 epel-next-release       noarch       9-2.el9         extras-common       8.1 k
 epel-release            noarch       9-2.el9         extras-common        17 k

トランザクションの概要
================================================================================
インストール  2 パッケージ

ダウンロードサイズの合計: 25 k
インストール後のサイズ: 26 k
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/2): epel-next-release-9-2.el9.noarch.rpm     143 kB/s | 8.1 kB     00:00    
(2/2): epel-release-9-2.el9.noarch.rpm          191 kB/s |  17 kB     00:00    
--------------------------------------------------------------------------------
合計                                             87 kB/s |  25 kB     00:00     
CentOS Stream 9 - Extras packages               2.1 MB/s | 2.1 kB     00:00    
GPG 鍵 0x1D997668 をインポート中:
 Userid     : "CentOS Extras SIG (https://wiki.centos.org/SpecialInterestGroup) <security@centos.org>"
 Fingerprint: 363F C097 2F64 B699 AED3 968E 1FF6 A217 1D99 7668
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Extras-SHA512
これでよろしいですか? [y/N]: y
鍵のインポートに成功しました
トランザクションの確認を実行中
   :
   :
インストール済み:
  epel-next-release-9-2.el9.noarch          epel-release-9-2.el9.noarch         

完了しました!
[bitwalk@centos9 ~]$ 

epel をインストールしたので、neofetch をインストールしてみます。neofetch は BASH で記述された CLI のシステム情報ツールです [5]

[bitwalk@centos9 ~]$ sudo dnf install neofetch
Extra Packages for Enterprise Linux 9 - x86_64  587 kB/s | 7.1 MB     00:12    
Extra Packages for Enterprise Linux 9 - Next -  618 kB/s | 1.3 MB     00:02    
メタデータの期限切れの最終確認: 0:00:02 時間前の 2022年06月19日 12時00分24秒 に実施しました。
依存関係が解決しました。
================================================================================
 パッケージ                     Arch   バージョン               Repo      サイズ
================================================================================
インストール:
 neofetch                       noarch 7.1.0-7.el9              epel       90 k
依存関係のインストール:
 ImageMagick-libs               x86_64 6.9.12.50-1.el9          epel      2.3 M
   :
   :
トランザクションの概要
================================================================================
インストール  27 パッケージ

ダウンロードサイズの合計: 15 M
インストール後のサイズ: 49 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/27): gc-8.0.4-7.el9.x86_64.rpm               845 kB/s | 104 kB     00:00    
   :
   :
(27/27): ImageMagick-libs-6.9.12.50-1.el9.x86_6 675 kB/s | 2.3 MB     00:03    
--------------------------------------------------------------------------------
合計                                            1.9 MB/s |  15 MB     00:07     
Extra Packages for Enterprise Linux 9 - x86_64  1.6 MB/s | 1.6 kB     00:00    
GPG 鍵 0x3228467C をインポート中:
 Userid     : "Fedora (epel9) <epel@fedoraproject.org>"
 Fingerprint: FF8A D134 4597 106E CE81 3B91 8A38 72BF 3228 467C
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
これでよろしいですか? [y/N]: y
鍵のインポートに成功しました
トランザクションの確認を実行中
   :
   :
完了しました!
[bitwalk@centos9 ~]$ 

端末エミュレータ上で neofetch を実行してみます。

CentOS Stream 9 で neofetch を実行した例

ちなみに、RHEL 9 でも同じように neofetch を実行してみると、下記のようになります。CentOS Stream 9 の方が kernel のビルドバージョンが少し進んでいることが判ります。

RHEL 9 で neofetch を実行した例

 

参考サイト

  1. FAQ/CentOSStream - CentOS Wiki
  2. About EPEL :: Fedora Docs
  3. EPEL Next :: Fedora Docs
  4. Extra Packages for Enterprise Linux (EPEL) :: Fedora Docs
  5. dylanaraps/neofetch: 🖼️ A command-line system information tool written in bash 3.2+

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加

2022-06-15

EuroLinux 9 リリース

ポーランドの EuroLinux Sp. z o. o.(以降、EuroLinux 社)は、現地時間 6 月 13 日に EuroLinux 9 をリリースしました。EuroLinux 社は RHEL 6 のころから RHEL 互換パッケージをリリースしていたようですが、無料で公開されるようになったのは CentOS 8 の開発終了がアナウンスされた後 [1]、EuroLinux 8.3 からのようです。

EuroLinux 9 のデスクトップ画面

下記ダウンロードサイトから EL-9.0-x86_64-20220613-minimal.iso をダウンロードして GNOME Boxes の仮想マシンへインストールしました。インストール方法は RHEL9 と同じです [3]

EuroLinux のダウンロードサイト

この iso ファイルでは、最小限の CUI 環境しかインストールされません。root でログイン後、下記のようにして、グラフィカルなデスクトップ環境に必要なパッケージをインストールしました。

[root@el9 ~]# dnf update
   :
   :
[root@el9 ~]# dnf group install "Server with GUI" --skip-broken
   :
   :

さらに、ログイン画面をグラフィカルログインの設定へ変更して再起動します。

[root@el9 ~]# systemctl set-default graphical.target
  :
  ;
[root@el9 ~]# reboot

再起動後、グラフィカル (GDM で)にログインできることを確認します。

AlmaLinux 9 につづき [4]、EuroLinux 9 もリリースされました。オリジナルの RHEL9 との違いが何かないのか、比較して探してみることにします。

 

参考サイト

  1. CentOS Project shifts focus to CentOS Stream – Blog.CentOS.org[2020-12-08]
  2. EuroLinux 8.3 already available | EuroLinux [2021-06-21]
  3. bitWalk's: Red Hat Enterprise Linux 9 のインストール [2022-05-28]
  4. bitWalk's: AlmaLinux 9 がリリースされていました! [2022-05-30]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加

2022-06-14

【備忘録】指定した色で画像を塗りつぶす 〜 PySide6 〜

PySide (Qt for Python) は、Qt(キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。Linux/X11, macOS および Microsoft Windows をサポートしています。配布ライセンスは LGPL で公開されています。

下記の OS 環境で動作確認をしています。

Fedora Linux 36 x86_64
Python 3.10.4
PySide6 6.3.0

左の画像 circle.png を、指定した色で乗りつぶしてアイコンとして利用するサンプルを備忘録としてまとめました。

下記サンプル qt_pushbutton_image.py の get_colored_icon 関数では、画像の透明レイヤーをマスクにして、指定した色で単純に塗りつぶしています。何に使いたかったかと言うと、Matplotlib で作成した Scatter プロットの凡例をボタンで表示して、これでインタラクティブな操作をしたかったのです。

 

qt_pushbutton_image.py
qt_pushbutton_image.py の実行例

 

参考サイト

  1. QPixmap - Qt for Python

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加

2022-06-10

[RHEL9] httpd の設定

Apache HTTP Server (httpd) は、Apache License 2.0 の条件でリリースされるフリーでオープンソースのクロスプラットフォームの Web サーバソフトウェアです。Apache は Apache ソフトウェア財団の支援のもと、開発者のオープンコミュニティによって開発・保守されています。

Wikipedia より抜粋、修正
今回のテーマ

サーバー用 PC に Web 関連パッケージをインストールして、サーバーの各ユーザーアカウント内で Web コンテンツの作成をできるように設定します。

--- OUTLINE ---

Apache HTTP Server (httpd) をインストールおよび設定をする OS は下記のとおりです。

OS Red Hat Enterprise Linux 9.0 (Plow) x86_64

 

httpd の設定

Apache HTTP Server httpd と httpd-devel をインストールしました。

Apache HTTP Server のインストール
[bitwalk@rhel9 ~]$ sudo dnf install httpd httpd-devel
[sudo] bitwalk のパスワード:
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 3:36:41 時間前の 2022年06月09日 03時26分40秒 に 実施しました。
依存関係が解決しました。
================================================================================
 パッケージ       Arch   バージョン      リポジトリー                     サイズ
================================================================================
インストール:
 httpd            x86_64 2.4.51-7.el9_0  rhel-9-for-x86_64-appstream-rpms 1.5 M
 httpd-devel      x86_64 2.4.51-7.el9_0  rhel-9-for-x86_64-appstream-rpms 209 k
依存関係のインストール:
 apr              x86_64 1.7.0-11.el9    rhel-9-for-x86_64-appstream-rpms 127 k
 apr-devel        x86_64 1.7.0-11.el9    rhel-9-for-x86_64-appstream-rpms 234 k
 apr-util         x86_64 1.6.1-20.el9    rhel-9-for-x86_64-appstream-rpms  98 k
 apr-util-bdb     x86_64 1.6.1-20.el9    rhel-9-for-x86_64-appstream-rpms  15 k
 apr-util-devel   x86_64 1.6.1-20.el9    rhel-9-for-x86_64-appstream-rpms  80 k
 cyrus-sasl       x86_64 2.1.27-20.el9   rhel-9-for-x86_64-baseos-rpms     77 k
 cyrus-sasl-devel x86_64 2.1.27-20.el9   rhel-9-for-x86_64-appstream-rpms 117 k
 expat-devel      x86_64 2.2.10-12.el9_0 rhel-9-for-x86_64-appstream-rpms  52 k
 httpd-filesystem noarch 2.4.51-7.el9_0  rhel-9-for-x86_64-appstream-rpms  17 k
 httpd-tools      x86_64 2.4.51-7.el9_0  rhel-9-for-x86_64-appstream-rpms  88 k
 libdb-devel      x86_64 5.3.28-53.el9   rhel-9-for-x86_64-appstream-rpms  40 k
 openldap-devel   x86_64 2.4.59-4.el9_0  rhel-9-for-x86_64-appstream-rpms 746 k
 redhat-logos-httpd
                  noarch 90.4-1.el9      rhel-9-for-x86_64-appstream-rpms  18 k
弱い依存関係のインストール:
 apr-util-openssl x86_64 1.6.1-20.el9    rhel-9-for-x86_64-appstream-rpms  17 k
 mod_http2        x86_64 1.15.19-2.el9   rhel-9-for-x86_64-appstream-rpms 153 k
 mod_lua          x86_64 2.4.51-7.el9_0  rhel-9-for-x86_64-appstream-rpms  63 k

トランザクションの概要
================================================================================
インストール  18 パッケージ

ダウンロードサイズの合計: 3.6 M
インストール後のサイズ: 12 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/18): apr-util-openssl-1.6.1-20.el9.x86_64.rp  33 kB/s |  17 kB     00:00
   :
   :
   :
(18/18): openldap-devel-2.4.59-4.el9_0.x86_64.r 2.3 MB/s | 746 kB     00:00
--------------------------------------------------------------------------------
合計                                            1.7 MB/s | 3.6 MB     00:02
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                        1/1
  インストール中   : apr-1.7.0-11.el9.x86_64                               1/18
   :
   :
   :
  インストール中   : httpd-devel-2.4.51-7.el9_0.x86_64                    18/18
  scriptletの実行中: httpd-2.4.51-7.el9_0.x86_64                          18/18
  scriptletの実行中: httpd-devel-2.4.51-7.el9_0.x86_64                    18/18
  検証             : cyrus-sasl-2.1.27-20.el9.x86_64                       1/18
   :
   :
   :
  検証             : openldap-devel-2.4.59-4.el9_0.x86_64                 18/18
インストール済みの製品が更新されています。

インストール済み:
  apr-1.7.0-11.el9.x86_64               apr-devel-1.7.0-11.el9.x86_64
  apr-util-1.6.1-20.el9.x86_64          apr-util-bdb-1.6.1-20.el9.x86_64
  apr-util-devel-1.6.1-20.el9.x86_64    apr-util-openssl-1.6.1-20.el9.x86_64
  cyrus-sasl-2.1.27-20.el9.x86_64       cyrus-sasl-devel-2.1.27-20.el9.x86_64
  expat-devel-2.2.10-12.el9_0.x86_64    httpd-2.4.51-7.el9_0.x86_64
  httpd-devel-2.4.51-7.el9_0.x86_64     httpd-filesystem-2.4.51-7.el9_0.noarch
  httpd-tools-2.4.51-7.el9_0.x86_64     libdb-devel-5.3.28-53.el9.x86_64
  mod_http2-1.15.19-2.el9.x86_64        mod_lua-2.4.51-7.el9_0.x86_64
  openldap-devel-2.4.59-4.el9_0.x86_64  redhat-logos-httpd-90.4-1.el9.noarch

完了しました!
[bitwalk@rhel9 ~]$

 

サービスの起動

Apache HTTP Server のサービス、httpd を起動 (start) します。また、OS 起動後にサービスが使えるように有効化 (enable) しておきます。

httpd の起動 
[bitwalk@rhel9 ~]$ sudo systemctl start httpd
[bitwalk@rhel9 ~]$ sudo systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[bitwalk@rhel9 ~]$

 

ファイアーウォールの設定

HTTP で通信できるようにサービスを追加した後、ファイアーウォールの設定を再ロードします。

ファイアーウォールの設定 
[bitwalk@rhel9 ~]$ sudo firewall-cmd --zone=public --permanent --add-service=http
success
[bitwalk@rhel9 ~]$ sudo firewall-cmd --reload
success
[bitwalk@rhel9 ~]$

LAN 内の他の PC のブラウザからこの RHEL の Web サーバ (192.168.150.63) へアクセスして、トップページが表示されることを確認します。

他の PC のブラウザからアクセスした例

 

ユーザ毎のディレクトリの設定

ユーザアカウント内の public_html 内をウェブサイトとして利用できるように /etc/httpd/conf.d/userdir.conf を編集します。下記に変更した箇所を赤字で示しました。

/etc/httpd/conf.d/userdir.conf の設定 
#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.
#
# The path to the end user account 'public_html' directory must be
# accessible to the webserver userid.  This usually means that ~userid
# must have permissions of 711, ~userid/public_html must have permissions
# of 755, and documents contained therein must be world-readable.
# Otherwise, the client will only receive a "403 Forbidden" message.
#
<IfModule mod_userdir.c>
    #
    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    #
    #UserDir disabled
    UserDir public_html

    #
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disabled" line above, and uncomment
    # the following line instead:

ユーザアカウント内に public_html ディレクトリを作成します。この例ではユーザアカウントは bitwalk のみです。パーミッションは下記のようになっています。

ユーザアカウントのディレクトリとパーミッション 
[bitwalk@rhel9 ~]$ cd ~
[bitwalk@rhel9 ~]$ mkdir public_html
[bitwalk@rhel9 ~]$ chmod 755 /home/bitwalk
[bitwalk@rhel9 ~]$ ll -d /home/bitwalk
drwxr-xr-x. 18 bitwalk bitwalk 4096  6月  9 07:12 /home/bitwalk
[bitwalk@rhel9 ~]$ ll -d /home/bitwalk/public_html
drwxr-xr-x. 2 bitwalk bitwalk 6  6月  9 07:12 /home/bitwalk/public_html
[bitwalk@rhel9 ~]$

httpd を再起動します。

httpd サービスの再起動 
[bitwalk@rhel9 ~]$ sudo systemctl restart httpd

SELinux の設定

最後に SELinux 下で httpd がユーザーディレクトリをアクセスできるように httpd_enable_homedirs を有効にします。

SELinux の httpd_enable_homedirs を有効化
[bitwalk@rhel9 ~]$ sudo setsebool -P httpd_enable_homedirs 1

 

ユーザーサイトのアクセス確認

LAN 内の他の PC から、ユーザーサイト http://192.168.150.63/~bitwalk がアクセスできることを確認します。事前に index.html を用意して /home/bitwalk/public_html/ に保存しておきました。

テストページでユーザーサイトの確認

 

mod_ssl のインストール

mod_ssl のインストール 

SSL/TLS による HTTPS 通信の設定ですが、Web サーバーの公開鍵証明書と秘密鍵を入手しなければなりません。

家庭内の LAN で動作確認するだけですので、既にインストールされていた下記証明書と秘密鍵で、それっぽく動作を確認をしました。詳細は、参考サイト [1] を参照してください。

  • /etc/pki/tls/certs/localhost.crt
  • /etc/pki/tls/private/localhost.key

※ これらのファイルについて rpm -qf コマンドでは、どのパッケージに属しているのか判りませんでしたが、タイムスタンプから察するに mod_ssl をインストールしたときにポストスクリプト (scriptlet) で作成された自己署名証明書と思われます。

前置きが長くなりましたが、下記のように mod_ssl をインストールします。

[bitwalk@rhel9 ~]$ sudo dnf -y install mod_ssl
[sudo] bitwalk のパスワード:
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 4:16:23 時間前の 2022年06月09日 03時26分40秒 に 実施しました。
依存関係が解決しました。
================================================================================
 パッケージ
           Arch     バージョン         リポジトリー                       サイズ
================================================================================
インストール:
 mod_ssl   x86_64   1:2.4.51-7.el9_0   rhel-9-for-x86_64-appstream-rpms   114 k

トランザクションの概要
================================================================================
インストール  1 パッケージ

ダウンロードサイズの合計: 114 k
インストール後のサイズ: 261 k
パッケージのダウンロード:
mod_ssl-2.4.51-7.el9_0.x86_64.rpm               221 kB/s | 114 kB     00:00
--------------------------------------------------------------------------------
合計                                            220 kB/s | 114 kB     00:00
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                        1/1
  インストール中   : mod_ssl-1:2.4.51-7.el9_0.x86_64                        1/1
  scriptletの実行中: mod_ssl-1:2.4.51-7.el9_0.x86_64                        1/1
  検証             : mod_ssl-1:2.4.51-7.el9_0.x86_64                        1/1
インストール済みの製品が更新されています。

インストール済み:
  mod_ssl-1:2.4.51-7.el9_0.x86_64

完了しました!
[bitwalk@rhel9 ~]$

ポート 443 を利用できるようにファイアウォールを設定します。

ファイアーウォールの設定 (2) 
[bitwalk@rhel9 ~]$ sudo firewall-cmd --permanent --add-port=443/tcp
success
[bitwalk@rhel9 ~]$ sudo firewall-cmd --reload
success

httpd を再起動します。

httpd サービスの再起動 
[bitwalk@rhel9 ~]$ sudo systemctl restart httpd

LAN 内の他の PC のブラウザからこの RHEL の Web サーバ (192.168.150.63) へ https:// でアクセスしてみます。

https でアクセスした例 (1)

「この接続ではプライバシーが保護されません」という警告が出ますが、アクセスすることはできます。

https でアクセスした例 (2)

 

まとめ

最低限の設定ですが、動作を確認できました。

 

参考サイト

  1. 1.8. Apache HTTP サーバーで TLS 暗号化の設定 Red Hat Enterprise Linux 9 | Red Hat Customer Portal
  2. SSL/TLS サーバー証明書の基礎知識|BLOG|サイバートラスト

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加