作成開始 : 令和2年(2020年)02月09日(日) 最終更新 : 令和3年(2021年)02月07日(日)

軽量Linux Q4OS  で遊んでみた。


会社勤めだった頃にもらっていた超々低スペックなPC、しばらくは「シンクライアント」として遊んでいましたが、今ひとつ面白くなかった ので放置していました。
超々低スペックなPCでも軽快に動くOSを探していたら「Q4OS」というLinuxがあることを知りました。

うちの超々低スペックなPCではどうかな? (また悪い癖が!!)
かなり無謀かと思いましたがインストールして遊んでみました♪


1.Q4OS とは

Q4OS はドイツで開発されている軽量で Windows XP っぽい Linux ディストリビューションです。
古いPCでも、高いセキュリティと信頼性、安定性などに重点を置いた Linux ディストリビューションです。

【概要】
ベース: Debian (Stable)
アーキテクチャ: aarch64, armhf, i686, x86_64
デスクトップ環境: KDE Plasma, Trinity
パッケージ管理: dpkg (ATP)
カーネル: 4.19.67

今回は Trinityデスクトップのをインストールしました。
最小スペックは次のとおりです。
PU: 300 MHz
RAM: 128 MB
DISK: 3 GB
Display: XGA 1024 x 768

2.インストールしたPC



NEC VersaPro VJ10M/MH-2

CPU : インテル(R) Celeron(R) Mプロセッサー 超低電圧版 423
クロック周波数 : 1.60 GHz
メモリ : 内蔵 512MB 増設 2GB (仕様では最大1,280MBですが2GBプラスでも認識しました)
ディスプレイ : 12.1型TFTカラー液晶(XGA)
HDD : 40GB

他は 商 品仕様 を参照ください。

Windows XP 時代のPCです。

Android x86をインストールしてしばらく遊んでいましたが、どうにも遅い上に動かないアプリが結構あってやめました。

3.ダウンロードとインストールCDの作成

SOURCEFORGE または Q4OS公式サイトからダウンロードしま す。
「q4os-3.10-i386-instcdr2.iso (455.1MB)」をダウンロードしました。

USBメモリに焼いて起動用にする手もありますが、サイズがCDに収まるので、XfburnでCDに焼きました。

少なくとも2024年7月までサポートされます。


4.インストール
例によって画像が無いのでテキストベースです。
画像付きのは他のサイト (例えば Q4OS 2.4 セットアップ [あちあち情報局]とか・・・)
1.PCがCDから起動できるようにBIOS設定します。

2.インストールCDをセットしてPCの電源をONにします。

3.起動オプションの「Classic insatll」を選択します。

4.select a langageで「Japanese-日本語」を選択します。

5.場所の選択で「日本」を選びます。

6.キーボードの設定で「日本語」を選択します。

7.ユーザの本名(フルネーム : 恐らく表示用かと)を入力します。

8.アカウント名を入力します。

9.パスワードを入力します。
   さらに、確認入力でもう一度パスワードを入力します。

10.ディスクのパーティショニングが始まります。
10-1 ハードディスクの初期化を手道で行うかを選択します。自分は「ガイド - ディスク全体」を選択しました。
10-2 インストールするディスクの選択をします。
10 -3 内容が確認できたら「パーティショニングの終了とディスクへの書き込み」を選択します。
10 -4 ディスクに変更を書き込みますか? で「はい」を選択するとディスクの初期化とデータのコピーが開始されます。
11.インストール完了の画面でCDを取り出し「続ける」を選択するとOSの再起動が開始されます。

12.ログイン画面で設定したユーザ名とパスワードを入力して「Login」をクリックします。

13.Language - setup:基本言語を「Japanese」にするか質問されるので「Yes」を選びます。

14.初期デスクトップが立ち上がります。


    ↑
これは日本語化した後の画面です。実際は見事に文字化けして何が何だかわからんようになります。勘で処理しました。

←こんな感じです。こういうのは久しぶりに見ました。
15.Welcome screen から Run Desktop Profiler をクリックして OS以外のアプリのインストール設定をします。3つから選んで「Install」をクリックします。


Full ・・・ブラウザやゲームなどインストール 520MB程度必要。少し時間がかかります
The Basic ・・最低限の環境設定ツールのみインストールします。
Keep ・・何もインストールしない(アプリは自分でインストールします)

私は「Full」を選択しました。

Desktop Profilerのインストール完了画面で「Finish」をクリックします。

Congratulations,setup has finished 画面で「OK」をクリックするとインストール終了になります。

ただし、デスクトップの日本語表示が文字化けしているので「日本語入力」の設定が必要です。
(文字化けしない場合もあるのかな!?)


5.文字化け対策
Synaptic パッケージマネージャから「fonts-noto-cjk」をインストールしました。



この後、ログアウト -> ログインで文字化け解消しました。


6.リモート環境その1
さて、ここまで出来たので続きはリモート接続できるようにしてみました。
ネットで調べながら設定とかする時に一々PCの近くまで行かなくても済むからです。

おっと、その前にネットワーク機器ですが、インストール当初、外付けのUSB無線カードを付けていました。
カード自体は認識しておりましたのでタスクバー右下にあるアイコンから「Wired Connection(enp3s8)」を使って設定してみました。
とっつきにくかったのですが、無線LAN接続ができました。有線接続はもちろんそのままでOKです。

VNCは画面が小さいし設定とか調べないといけないので「xrdp」をインストールしてみました。

Synaptic パッケージマネージャから「xrdp」をインストールしました。


そして、クライアントPCからリモートデスクトップ接続で接続します。私は「Remmina リモートデスクトップクライアント」を使いました。
Windowsであればそのまま RDP(リモートデスクトップ接続)でできますね。


    ↑
Session : Xorg でユーザ名、パスワードを入力しOKをクリックします。


    ↑
できました。これで作業しやすくなります。


7.デスクトップの自動ログイン
このPCもテレビに画面を映して画像や動画を見たいので、ユーザ名、パスワードを入力せず自動ログインできるようにして みました。

起動時の「Welcome screen」の「Set Autologin」をクリックして設定します。

※「Welcome screen」は以下でも起動できます。
 スタート -> Applications -> アプリケーション -> Accessories -> システム -> Q4OS Welcome Screen




これでOS再起動してみます。


8.リポジトリの変更
debian testing repositoryは国内サーバーに変更します。synapticを使用し、repositoryの"ftp.debian.org"の箇所をすべ て、"ftp.jp.debian.org"に変更します。



その後synapticからシステムアップデート・アップグレードを行います。


9.viエディタをインストール
自分はコマンド操作でviエディタの方がGUIのエディタより使いやすいのでインストールしました。
標準ではviすらインストールされていません。
なので、Synaptic パッケージマネージャからインストールしました。



これで使いやすくなりました。


10.日本語入力
初期状態では日本語入力できないことから「fcitx-mozc」をインストールして日本語入力ができるようにします。

Synaptic パッケージマネージャからインストールしました。



インストールできたら、スタートボタン(左下のアイコン)→「Turn Off」→「現在のセッションを終了」、再ログインしたらユーザー名とパスワードを入力し「ログイン」します。

再ログイン後に右下のタスクトレイにキーボードのアイコンが出ていればインストール完了です。


日本語入力の出来るアプリを起動し、文字入力状態になったら「半角/全角」または「Ctrl+スペース」でMozcが起 動し日本語入力ができるようになります。

※Mozcが使えるようになっても標準ブラウザ「Konqueror」・スタートボタンから表示される検索フォーム・メモ帳「KWrite」 などは日本語入力に対応していません。
    ブラウザは Chromium ウェブブラウザ、メモ帳は Mousepad、ファイルマネージャは PCManFMをインストールしました。


11.TigerVNCのインストール
このPCもテレビにつないで画像とか動画とかリモートで操作して見たいので直接コンソール画面に接続するため TigerVNC をインストールしました。
VNCについては、TigerVNCの前に vino と vnc4server をインストールして調整しましたが、スキルが足らず断念。
接続できているようだけど画面が黒だったり、空白だったりでした。

そこで、直接コンソール画面に接続できる x0vncserver を使うことにしました。

Synaptic パッケージマネージャからインストールしました。


    ↑
tigervnc-scrapting-sever もインストールします。これないと x0vncserver がインストールされません。
ターミナルプログラム(Konsole)でログインし sudo vncserver とすると パスワードの入力を求められます。
確認のためにもう一度パスワードを入力します。
これで、 ~/.vnc の下に passwd が保存されます。

x0vncserver -display :0 -passwordfile ~/.vnc/passwd とし x0vncserver を起動します。

クライアントPCのVNCクライアントから接続し、画面表示できたらOKです。


    ↑
無事接続できました。
前の項で自動ログインにしたので、せっかくだから x0vncserver を自動起動してみます。

まずは、起動スクリプトを作成し実行テストします。
スクリプトは以下のようにしました。


よかったら以下コピペどうぞ!!!

#!/bin/bash

# set by 2020/01/28
ProcessName=x0vncserver

count=`ps -ef | grep $ProcessName | grep -v grep | wc -l`
if [ $count = 0 ]; then
        echo "$ProcessName is dead"
        x0vncserver -display :0 -passwordfile ~/.vnc/passwd
else
        echo "$ProcessName is alive"
fi

上記を例えば x0vnc.sh で保存します。
パーミッションに実行権を付与します。 (Ex. sudo chmod +x x0vnc.sh)

まず、x0vncserver が実行されていない状態でスクリプトを実行します。 (Ex. sudo sh x0vnc.sh または x0vnc.sh)
画面に x0vncserver is dead と表示され、x0vncserver が起動したらOKです。
x0vncserver の起動は ps aux | grep x0vncserver か VNCクライアントから接続してデスクトップ表示したらOKです。

さらに、x0vncserver が実行されている状態で上記 スクリプトを実行します。
画面に x0vncserver is alive が表示されたらOKです。

そしたらいよいよ自動起動の設定です。
これがまた特殊であります。

自動起動は、ホームフォルダー直下の .trinity/Autostartにデスクトップファイルを作成する事により行なえます。
ここでは web browserとしても使用できるKonquerorを使用してこれを作成する流れを書きます。

Konquerorを起動します。


    ↑
”ホーム”ボタンをクリックし、ホームディレクトリ直下を表示させます。


    ↑
.trinity フォルダーをダブルクリックします。


    ↑
Autostartフォルダーをダブルクリックします。


    ↑
マウスボタン右クリック→”アプリケーションへのリンク”を選択実行します。
    ↓

    ↑
名称は適当に変更できます。例えば「x0vncserverへのリンク」とか・・・


    ↑
アプリケーション(A)タブで適宜入力設定します。


    ↑
デスクトップファイルが作成され、次回login以降自動起動対象となります。


    ↑
こんなの出来てます。



12.Numlockの解除
TDEのデフォルトでは、Numlock Onの状態となっています。これをoffにするには、”コントロールセンター”→”周辺機器”→”キーボード”から Numlock ”オフ”にチェックします。




13.DPMSを無効にしてみた & ノートPCのフタを閉じた時にサスペンドしないようにする。

リモートで使ったりするのにサスペンドとかスリープは不要で使い勝って悪いので調整してみました。

・・・ですが!

スタート -> コントロールセンタ -> システム管理 -> Monitor & Display -> 設定 - TDE コントロールモジュール -> Power Managementタブ で スタンバイやサスペンドの設定値を見ると「しない」という選択肢がありません。
最大で360分(6時間)です。


    ↑
これではいかんなぁー・・・と考えて「Enable DPMS Power save modes」のチェックを外し無効にしましたが、どうにも効きません。
ある時間になるとサスペンド状態になってしまいました。


    ↑
「Global Settings」タブの「Enable global display control」のチェックを外してやっとサイペンドしなくなりました。

それと、ノートPCのフタを閉じた時にサスペンドするのも対処しようとしましたが・・・・

/etc/systemd/logind.conf に HandleLidSwitch=ignore を追加してもだめでした。

色々調べてもサスペンドするのでなかば諦めたところ気になった記事を発見!

それによると・・・

「PCの電源をONにしてBIOSとかロゴ表示してすぐにフタを閉じる」・・・やってみました。

なるほど、こりゃーいい!。
リモートとかサーバー用途にいいですね。ナイスです。


14.デスクトップ・アイコンのサイズを小さくする。(デスクトップスケールの調整)
インストール後はデスクトップのスケーリングが1.65倍になっているため以下の手順で1倍に変更します。

Welcome screen -> More options > (右下) -> Setup Screen scaling


    ↑
Apply をクリックしてOS再起動すれば1倍表示に変更されます。


15.samba で smb共有を設定する。

なんか、q4osでもWebサーバー apache 使って公開できそうなので、手始めに例によってコンテンツ用に共有設定をしてみました。
Synaptic パッケージマネージャでインストールしようとしたら、既にインストールされていました。
先に共有するフォルダを作成しました。

端末konsole でログイン

$ cd /usr
$ sudo mkdir html
$ chmod 777 html
LAN内から自由に書きこめればいいので、ユーザ認証とかなしにしました。

$ cd /etc/samba
$ sudo cp smb.conf smb.conf.org -> 念のため初期confを保存しときます。
$ sudo vi smb.conf

・・・以下のようにして保存しました。
そして、sudo service smbd restart します。

 ↓
見えました。
ファイル書き込みもOKです。
バージョン確認すると・・・

 ↑
・・・・・ですね。

16.ssh を設定する。

VNC とか xrdp で接続しメンテするのもいいけど、ssh でシンプルに接続したいので設定してみました。
Synaptic パッケージマネージャでインストールします。
次に、/etc/ssh/sshd_config を端末から vi で編集します。

ファイル内にport等の記述がありますが、初期設定を残しておく為、最終行に以下に内容を記述します。
<記述内容>
Port 22
PermitRootLogin no
PasswordAuthentication yes
そして、sudo service sshd start
では、Windows PC から TeraTerm で繋いでみます。

 ↑
やりました。これで作業しやすくなります。

17.sendmail でメール送れるようにしてみる。

cgiやphpのスクリプトからメール送信できるようにしてみます。
いわゆるメールサーバーではなく、単に送信(SMTP)だけとします。(メールサーバーとして機能する時はもう少し設定追加が要ります)
sendmail でやってみます。
Synaptic パッケージマネージャでインストールします。
各種の作業は /etc/mail で行います。
sshd がインストールできたので CUI ベースで接続してやってみます。

 ↑
インストール直後の状態です。
a.aliases を編集してroot からのメールを特定のメールアドレスへ送信します。
# root: me@my.domain
   ↓
root: webmaster@dns12.takaq.jp

dns12.takaq.jp は、LAN内に設置してあるメールサーバーです。

編集したら、sudo make aliases でデータベースに反映されます。(aliases.db が更新されます)
b.access を編集して中継を LAN内 のみ有効にします。
以下を 追記します。
Connect:192.168       RELAY

※192.168.0.0/16 は中継許可するの意味です。

編集したら、sudo make access.db でデータベースに反映されます。(access.db が作成・更新されます)
c. 中継サーバーの指定
外部へのメール中継を LAN内メールサーバー(dns12.takaq.jp) -> ぷららの中継サーバー にしているためです。
これは、WebサーバーのCMSやBBSで外部のメールサーバー宛送信することがあるためです。
・viでsendmail.mc 内に以下を追加し有効に しました。
define(`SMART_HOST', `dns12.takaq.jp')
・make します。
takaq@q4os-vy80m:/etc/mail$ sudo make sendmail.cf
Updating databases ...
Reading configuration from /etc/mail/sendmail.conf.
Validating configuration.
Creating /etc/mail/databases...
Updating Makefile ...
Reading configuration from /etc/mail/sendmail.conf.
Validating configuration.
Creating /etc/mail/Makefile...
Updating sendmail.cf ...
いいみたいです。
sendmail.cf が update されています。。
・sendmailを再起動します。
$ sudo service sendmail restart

$ ps aux | grep sendmail ・・・・・でプロセスあったらOKです。
・テストしてみます。
sendmail コマンドでLAN内にあるメールサーバーへのテストします。
この時、LAN内のDNS(LAN内にDNSサーバーが無い時はメールを受信する側の /etc/hosts) に送信側のホスト名が正しく登録されている必要があります。
でないと・・・・

----- Transcript of session follows -----
... while talking to dns12.takaq.jp.:
>>> MAIL From:<takaq@q4os-vy80m> SIZE=514
<<< 553 5.1.8 <takaq@q4os-vy80m>... Domain of sender address takaq@q4os-vy80m does not exist
501 5.6.0 Data format error

・・・になります。久しぶりにやったので忘れていました。

$ sudo sendmail takaq@dns12.takaq.jp

TEST
ABCDE
.


同 様にして、プロバイダのアカウントや携帯電話のアカウントへ送信してみます。
こ れでOKならひとまず終わりです。

18.Webサーバー Apache + PHP + Perl

今回は、q4os の検証と有志の会用として使うので SSL化はしません。

Synaptic パッケージマネージャでインストールします。
インストール直後にもうプロセスが動いています。
クライアントPCのブラウザから http://IPアドレス もしくは LAN内にDNSサーバーがある場合は http://コンピュータ名 でアクセスします。

 ↓
Debian固有のパッケージだけあって独特です。
主たる設定ファイルは、/etc/apache2/apache2.confであり、includeされるファイルは、 mods-enabled/、sites-enabled/、conf.d/ の各ディレクトリ下に置かれるファイルと ports.confファイルとのことです。

http.confの記述内容が、Debianでは、apache2.confとmods-enabled/、sites-enabled /下のファイル、ports.confに分かれて記述してあります。
DebianのApache2設定ファイル
設定ファイル 説明
/etc/apache2/apache2.conf 主要なApache2設定ファイル
Section1:Global Environmentについて記述
/etc/apache2/mods-enabled/ 現在有効なApache2のモジュール を置くディレクトリ
普通は、mod-available/ディレクトリにリンクを貼ることで有効にする
/etc/apache2/mods-available/ Apache2のインストールされたモ ジュールを置くディレクトリ
mod-enabled/ディレクトリにリンクを貼ることで有効になる
/etc/apache2/sites-enabled/ 現在有効なWebサイトの固有設定を置 くディレクトリ
普通は、sites-available/ディレクトリにリンクを貼ることで有効にする
/etc/apache2/sites-available/ 利用可能なWebサイトの固有設定をお くディレクトリ
sites-enabled/ディレクトリにリンクを貼ることで有効になる
/etc/apache2/ports.conf デフォルトではポート番号80が設定さ れている
/etc/apache2/conf.d/ Apache2の追加設定を置くことが できるディレクトリ
デフォルトではcharsetのファイルが置かれている
Debianの考え方は、「必要なパッケージ、モジュールのみインストールする、あるいは有効にする」とのことで す。このことは、モジュールの取り扱いにも現れていて、各Webサーバの個別ニーズにより、使用するモジュールを個々に選択し、有効にす る必要があります。
mods-available/またはsites-available/に格納されているモジュールまたはWebサイトの個別設定ファイ ルを、専用コマンドでリンクを貼ることで有効化しています。
Debianのapache2 では、/etc/apache2/*-enabled で対応します。 /etc/apache2/apache2.conf には、以下のような行が書いてあり、 *-enabled配下の設定ファイルをすべて読み込んで起動します。

 IncludeOptional mods-enabled/*.load
 IncludeOptional mods-enabled/*.conf
 IncludeOptional conf-enabled/*.conf
 IncludeOptional site-enabled/*.conf
◆では、apache2.conf を設定します。

今回は、先のsambaインストールで /usr/html をコンテンツ用としてLAN内共有しています。
適当に index.html を置いておきます。

$ sudo vi /etc/apache2/apache2.conf
# HostnameLookups Off
HostnameLookups On
    ↓
「On」にすることでウェブサーバーのログにクライアント側のドメイン名を記録します。

後、関係なさそうなディレクティブはリマークしました。

delegate配下でリモートアドレスが取得できるようにしました。
後で mod_remoteip を有効化します。

# LogFormat "%h %l %u %t \"%r\" %>s %b" common 
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" com

ログは標準では /var/log/apache2 に出力されます。
なお、設定のチェックは sudo apache2ctl configtest です。
Syntax OK となったらOKです。
sudo apachectl -V でも確認できます。
takaq@q4os-vy80m:/etc/apache2/sites-available$ sudo apache2ctl -V
Server version: Apache/2.4.38 (Debian)
Server built: 2020-08-25T20:08:29
Server's Module Magic Number: 20120211:84
Server loaded: APR 1.6.5, APR-UTIL 1.6.1
Compiled using: APR 1.6.5, APR-UTIL 1.6.1
Architecture: 32-bit
Server MPM: prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"
◆そして、sudo vi /etc/apache2/sites-available/000-default.conf で設定します。
VirtualHostでの設定になっていますね。
ServerAdmin と DocumentRoot を設定しました。
$ sudo a2ensite 000-default.conf
$ sudo service apache2 restart

・・・・で、クライアントPCのブラウザから http://IPアドレス もしくは LAN内にDNSサーバーがある場合は http://コンピュータ名 でアクセスし、希望通りのトップページが表示されたらOKです。

/etc/apache2/sites-enabled に /etc/apache2/sites-available/000-default.conf のシンボリックリンクは既にあるので・・・。

Site 000-default already enabled になりました。あえて a2ensite はいらなかったかな!?



ちなみに、000-default.conf をコピーして例えば domainname.conf とかした場合・・・・

$ sudo a2dissite 000-default.conf
$ sudo a2ensite domainname.conf

・・・で一旦000-default.confを削除して、domainname.conf とすればよいようです。
◆/etc/apache2/conf-available/security.conf の次のところを変更します。
ServerTokens Prod <--- OS をProdに変更。サーバーの情報(バージョン、OSなど)を表示しないようにします。
一旦設定を削除して再登録します。

$ sudo a2disconf security.conf
$ sudo a2enconf security.conf

 ↑
security.conf のシンボリックリンクが更新されましたね。
◆モジュールの組み込み
cgiやssiが動くようにしてみます。

enableにするモジュールはcgi cgid include perl php7 rewrite userdirなどです。

cgi cgiプログラムの実行をサポート
cgid cgiプログラム(スレッド)の実行をサポート
include ページ内に埋め込むSSI(Server Side Includes)のサポート
rewrite 要求されたURLの動的な書き換えをサポート
userdir http://ホスト名/~hogehoge/のページを許可する。

初期で有効化されているモジュールは次のようです。

  ↑
.loadがロードされているモジュールです。
 access_compat
 alias
 auth_basic
 authn_core
 authn_file
 authz_core
 authz_host
 authz_user
 autoindex
 deflate
 dir
 env
 filter
 mime
 mpm_event
 negotiation
 reqtimeout
 setenvif
 status.load
ロードできるモジュールは次のようです。
試しに remoteip をロードしてみます。
delegate配下でログにリモートアドレスが取得できるようにするモジュールです。
$ sudo a2enmod remoteip
Enabling module remoteip
To activate the new configuration, you need to run:
systemctl restart apache2

これで、/etc/apache2/mods-available で remoteip がシンボリックリンクされます。
apache2 をリスタートしてくださいと言っているのでリスタートします。

$ sudo systemctl restart apache2
この要領で、cgi cgid include perl php5 rewrite userdirをロードしておきます。

後は利用環境に応じてロードします。
◆PHPのインストールと設定
Synaptic パッケージマネージャでインストールします。

 ↑
関連パッケージが選択されていますね。
apache2のモジュールは自動的に有効となっていました。

/etc/apache2/mods-enabled に php7.3 があります。
apache2モジュール用のphp設定は/etc/php/7.3/apache2/php.iniを編集しま す。
日本語設定のため mbstring を設定します。

$ sudo vi /etc/php/7.3/apache2/php.ini

[mbstring]のところを以下のようにしました。
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
mbstring.func_overload = 1
一応、sudo systemctl restart apache2 しときます。
そして、ドキュルントルートあたりにテスト用のファイルを test.php とかにして保存します。
<?php
phpinfo();
?>
クライアントPCのブラウザから http://IPアドレス/test.php もしくは LAN内にDNSサーバーがある場合は http://コンピュータ名/test.php でアクセスします。

 ↑
いいようですね。
◆cgi環境の設定
Perlは apache2 をインストールした時にインストールされています。
モジュール cgi、cgid は先に有効化していますので、実行確認と実行環境を設定してみます。
デフォルトで [/usr/lib/cgi-bin] 配下が CGI 実行許可されます。
よって、例えば [/usr/lib/cgi-bin/test.cgi] スクリプトを作成して配置することで、[http://(Apache2 サーバー)/cgi-bin/test.cgi] へアクセス可能となります。 なお、この設定は [/usr/lib/cgi-bin] 配下のファイルを全て CGI と扱うため、CGI 以外のファイルは表示不可です。
$ sudo vi /usr/lib/cgi-bin/test.cgi で以下を保存

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello CGI\n";

$ sudo chmod 705 /usr/lib/cgi-bin/test.cgi
$ sudo perl /usr/lib/cgi-bin/test.cgi

Content-type: text/html

Hello CGI
・・・でOKです。
デフォルト以外のディレクトリで CGI の実行を許可する場合は以下のように設定します。
例として、[usr/html/cgi-test] 配下で CGI の実行を許可します。なお、CGI として扱う拡張子を指定しているため、html 等も配置可能です。
$ sudo vi /etc/apache2/conf-available/cgi-test.conf

<Directory "/usr/html/cgi-test">
Options +ExecCGI
AddHandler cgi-script .cgi .pl
</Directory>

$ sudo mkdir /usr/html/cgi-test
$ sudo a2enconf cgi-test
Enabling conf cgi-test.
To activate the new configuration, you need to run:
systemctl reload apache2
$ sudo systemctl reload apache2
設定したディレクトリで CGI テストページを作成して動作確認をします。

$ sudo vi /usr/html/cgi-test/test.cgi で以下を保存

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello CGI\n";

$ sudo chmod 705 /usr/html/cgi-test/test.cgi
クライアントPCのブラウザから http://IPアドレス/cgi-test/test.cgi もしくは LAN内にDNSサーバーがある場合は http://コンピュータ名/cgi-test/test.cgi でアクセスします。

Hello CGI と表示したらOKです。
◆エラーページをカスタマイズする。
※ここから delegate を通しての URL になります。

標準のままだと、例えばドキュメントの無いページを指定した場合、ブラウザは以下を表示します。
これをカスタマイズしてみます。
ファイルは /etc/apache2/conf-available/localized-error-pages.conf です。
$ sudo vi /etc/apache2/conf-available/localized-error-pages.conf

方法は色々あるみたいですが、自分は /usr/html/error に関連ファイルを用意してから以下のようにしました。

# Customizable error responses come in three flavors:
# 1) plain text
# 2) local redirects
# 3) external redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
#
ErrorDocument 401 /error/401.html
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
そして、$ sudo systemctl restart apache2 します。

 ↑
うん、いいですね。
◆ログのローテートについて
ディフォルトではlogrotateにより1日単位でApacheのログローティションさせているようです。
設定ファイルは /etc/logrotate.conf で Include されているフォルダ /etc/logrotate.d にある apache2 です。

 ↑
include /etc/logrotate.dですね。
/etc/logrotate.d には多くの関連ファイルがあります。

 ↑
日単位でローテートし、ローテート数は14個という感じでしょうか。

/var/log/apache2/*.log -> ローテートするファイル
daily -> ローテションを行う間隔を指定 daily(毎日) weekly(毎週) monthly(毎月)
missingok -> missingok(ログファイルがなくてもエラーにならない) nomissingok(ログファイルがない場合エラーにする)
rotate 14 -> 保存されるアーカイブファイルの数 ここでは14個残している
notifempty -> ifempty(ログファイルが空でもローテーションする) notifempty(ログファイルが空の場合はローテーションしない)
sharedscripts -> /var/log/apache2/*logに該当するファイルが複数ある場合でも postrotateからendscriptまでの実行は1回のみという設定
postrotate 〜 endscripまでのコマンドを実行
ですが、自分は毎週一回でローテート数を7にしたいので daily -> weekly rotate 14 -> rotate 7 にしました。
今日はここまで・・・・2021年02月07日(日)


サイトトップへ