www.smiyasaka.com は、 2019 年2月から SSL 化し 通信を暗号化した方式で発信をしています。
●   CentOS 6.8〜6.10 64bit のインストールと自宅サーバ構築   ●
アクセス数 昨日 2 今日 1
  累計 19,918   

64bit 版 CentOS-6.X-x86_64 を yum を使用しないで、自宅サーバを構築しました。
     ( SELinux は、有効/無効のどちらでも構築できるようにしています。)
     2018.06.30に CentOS 6.10 がリリースされています。 
=================================================================================
	目	次
  [○○○○]のクリックで、その項目の内容が目次の下に表示、再度クリックで非表示になります。
    本文を総て先読み非表示(折り畳み方式)し、目次のクリックで表紙する方式を採用しています。
                
---------------------------------------------------------------------------------
     ※ [ 総てを表示する ] ※ [ 総てを表示する 非表示 ] ※
------------------------------------------------------------------------------------------------------------
=================================================================================
  0.  インストールした PC のスペック等
=================================================================================
2019.09.17 付けで CentOS 6.10 のカーネルのバージョンは、
                         Kernel 2.6.32-754.22.1.el6.x86_64 になっています。

   現在、私の自宅サーバ機は、CentOS 7.7.1908 で運用しています。
   apache2 のバージョンは、httpd-2.4.41 です。

   私のサーバ機の仕様では、32bit OS の時、CPU 利用率が 11% から 13% でした。
                           64bit OS の時、CPU 利用率は、平均 8 % 位でした。

   現在のサーバ機の CPU 利用率 8.80 % CPU 温度 +35 です。

     2017.05.26から、新規に下記スペックの PC にインストールし、使用しています。
     -------------------------------------------------------------------------
     私の自宅サーバ機のスペック
           型    式 : mouse LM-mini76S-S1-MA CPU : Intel Celeron 3855U 2コア/1.60GHz
              消費電力 : 約 10W      メ モ リ : 8GB   SSD : 128GB
              インターネット回線 : STNet 光回線(ギガビット対応)
              USBカメラ : Logicool UVC対応 C270sCW 120万画素(固定焦点)
              LANカメラ : PCi CS-W05N 30万画素
     -------------------------------------------------------------------------


99% のパッケージは、事前に( ○○○.el6.x86_64.rpm と○○○.tar.gz ) windows PC 
でダウンロードしておきます。
ファイル転送プログラム  proftpd or vsftpd は、Tera Term の転送機能を使用して 
windows PC 側から直接転送し、インストールします。

proftpd or vsftpd インストール後ダウンロードしたファイルをサーバ機に ffftpで転送
・各種設定は、Windows PC ( Tera Term を使用 )からの遠隔操作で web サーバを構築し
ていきます。
---------------------------------------------------------------------------------
ディレクトリ等の名前は、私のサーバ機の環境での名前を使用していますので、利用すると
きには、あなたの環境に合わせて変更してください。
   ( /var/www/html/www.smiyasaka.com は、httpd.conf での、DocumentRoot のパスです。
                      /home/miyasakaは、ホームディレクトリです。 )

各種ファイルのダウンロードは、「3. 事前にダウンロードするファイル一覧と探し方」で、
ファイル名をクリックしたらダウンロード先へリンクするようにしています。

=================================================================================
  1. CentOS 6.9, 6.10 のインストール
=================================================================================
CentOS 6.9, 6.10 32bit のインストールは、DVD1.isoのみで行います。
なお、DVD2.iso は、不要で、iso ファイルは、DVD に書込み使用します。

CentOSの iso ファイルのダウンロードは、[ここをクリック]して最新バージョンをダウ
ンロードしてください。
32bit 版は、i386、64bit 版は、x86_64 のフォルダをクリックしてください。

以下にその手順を紹介します。

[ CentOS-6.10-x86_64 からインストール手順 ] の詳細は、[ここをクリック]してください。




=================================================================================
  2. CentOS 6.9, 6.10 再起動後のコンソールからの各種設定
=================================================================================
ここの設定だけは、サーバ機のコンソールから、GNOME(テキスト入力モード)で行ってくだ
さい。

 ○ ログインは、[ root ]と[ root のパスワード ]で行います。

 @ ユーザーの登録  ( Tera Term, ffftp でのログインの時に必要になります。)
    adduser ○○○○○                    <--- ○○○○○は、ユーザー名

 A ユーザーパスワードの登録  ( Tera Term, ffftp でのログインの時に必要になります。)
    passwd ○○○○○                     <--- ○○○○○は、ユーザー名
    パスワードを2回入力する。

 B Tera Termの文字化け対策( Windows側も、EUC コードを使用します。)
    ここを変更して再起動後は、サーバ機のディスプレイの漢字は、文字化けします。注意

    vi /etc/sysconfig/i18n

    LANG="ja-JP.UTF-8"  ----> LANG="ja-JP.eucJP" に変更する。


 C SELinux を無効にする設定。( これを忘れると、再起動後うまく動作しません。)

    vi /etc/sysconfig/selinux

    SELINUX=enforcing  ----> SELINUX=disabled に変更する。

    なお、SELinux を有効にしサーバを構築する時には、SELINUX=permissive にしてく
    ださい。
    SELinux の設定は、[ 5. ファイアウォール・SELinux の設定 ]項で解説しています。

 D Windows側から、Tera Termでアクセスするポート番号を設定する。

    vi /etc/ssh/sshd_config

    #Port 22 の前の行に、Port 2222 を追加する。

  ※ sshdが利用するポートで、標準では「22」に設定されていますが、22番ポートへのア
     タックは、非常に多いため、任意のポート( 2222等)に変更するのが一般的であると
     web上に記載されています。

 E ファイアウォールを無効にする設定。

    下記コマンドを入力すると 写真 @ の画面が表示します。

    system-config-firewall-tui

    写真 @ [*]Enabled  ----> [ ]Enabled に変更する。  [space] --> [Tab] -->
    [Enter]キーの順に押す。

    写真 A [Enter]キーを押す。
写真 @
A
写真 A B
 F システムのアップデートをする。

    初回の update は、数( 147個 )が多いので少し時間がかかります。

    yum -y update

 G システムの再起動をする。
    reboot または、 shutdown -rf now

   再起動後、windows 側から Tera Term で接続できない時には、サーバ機から直接ネッ
    トワークの設定で「起動時の自動起動設定」を忘れていないかを、下記コマンドで確認
    してみてください
    これでも接続できない時は、ファイアーウォールの無効も確認してみてください。
    変更後は、一度再起動( reboot )してください。

 H 再起動後、セキュリティ強化の為、sshd のアクセス制限を設定します。
     ( TCP Wrapper による SSH 接続のアクセス制御 )

    この設定は、必要とする方のみ行って下さい。
    私の場合、サーバ機の管理・設定は、ローカルの PC 以外しないので設定しています。

    hosts.allowとhosts.denyの設定( IPアドレスの制限 )
   この設定は、hosts.allow が優先されます。つまり、全てを拒否し、hosts.allow で指
   定された IPアドレスは、許可になります。

   H-1 /etc/hosts.deny に、 sshd:ALL ( すべての接続を拒否 )と書込みます。

     vi /etc/hosts.deny で sshd:ALLを追加  または、

     echo "sshd:ALL" >> /etc/hosts.deny

   H-2 /etc/hosts.allow で接続を許可するIPアドレスを指定します。

     vi /etc/hosts.allow で sshd:192.168.0. を追加 または、

     echo "sshd:192.168.0." >> /etc/hosts.allow

     192.168.0. は、私の環境下ですべてのローカルIPアドレスを許可する設定です。

 I 再起動後、ネットワークに接続できない時は、ネットワークの設定で「起動時の自動起
    動設定」を忘れているので、サーバ機のキーボードから、直接下記コマンドで、ネット
    ワークの設定を編集してから、一度再起動( reboot )してください。

    vi /etc/sysconfig/network-scripts/ifcfg-eth0

    ONBOOT="no"  ----> ONBOOT="yes" に変更する。

---------------------------------------------------------------------------------
Tera Term の文字化けを防ぐため、漢字コードをサーバ機側と同じ漢字コード EUC に必
 ず設定し、設定の保存」をしてください。
 接続すTCPポートは、2222 にすること。

再起動後は、設定は、windows側から、Tera Term を使用して各種設定を行います。
Tera Term の漢字-送受信コードは、EUC を指定して使用してください。

Tera Termの設定・使い方の参考になるサイト   Tera Term のセットアップ方法
Tera Term は、窓の杜ライブラリでダウンロードできます。


=================================================================================
  3. 事前にダウンロードするファイル一覧と探し方
=================================================================================
サーバ構築に必要なファイルの探し方は、
Google等の検索で、「 パッケージ名 」のキーワード検索でほとんどの場合ヒットします。
      
下記のパッケージ名をクリックするとダウンロード出来るサイトへジャンプします。
パッケージによっては、クリックだけでダウンロードできます。

( リンク切れでダウンロードできない時には、「 パッケージ名 」で検索してダウンロード
  してください。)

CentOS 6.X 64bit のほとんどは、 rpm パッケージは、el6.○○○.x86_64.rpm の名前が
付きます。
ソースファイル( tar )は、32bit・64bit の区別がありません

---------------------------------------------------------------
ftp
 proftpd-1.3.5.tar.gz
 vsftpd-2.2.2-27.1.el6.x86_64.rpm
 ftp-0.17-54.el6.x86_64.rpm
---------------------------------------------------------------
RPMforgeリポジトリ
 yum-plugin-priorities-1.1.30-17.el6_5.noarch.rpm
 rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
---------------------------------------------------------------
httpd
 httpd-2.4.41.tar.gz
 旧バージョンの httpd ダウンロード
 pcre-devel-7.8-6.el6.x86_64.rpm
 pcre-devel-7.8-7.el6.x86_64.rpm
 expat-devel-2.0.1-13.el6_8.x86_64.rpm
 apr-1.7.0.tar.gz
 apr-util-1.6.1.tar.gz
---------------------------------------------------------------
fswebcam
 fswebcam-20140113.tar.gz
 libXpm-3.5.10-2.el6.x86_64.rpm
 libjpeg-turbo-devel-1.2.1-3.el6_5.x86_64.rpm
 libXpm-devel-3.5.10-2.el6.x86_64.rpm
 gd-2.0.35-11.el6.x86_64.rpm
 gd-devel-2.0.35-11.el6.x86_64.rpm
---------------------------------------------------------------
sendmail
 hesiod-3.1.0-19.el6.x86_64.rpm
 procmail-3.22-25.1.el6.x86_64.rpm
 sendmail-8.14.4-8.el6.x86_64.rpm
---------------------------------------------------------------
logwatch
 logwatch-7.3.6-49.el6.noarch.rpm
 perl-YAML-Syck-1.07-4.el6.x86_64.rpm
 perl-Date-Manip-6.24-1.el6.noarch.rpm
---------------------------------------------------------------
clamd
 clamav-db-0.100.1-2.el6.x86_64.rpm
 clamav-0.100.1-2.el6.x86_64.rpm
 clamd-0.100.1-2.el6.x86_64.rpm
---------------------------------------------------------------
chkrootkit
 chkrootkit.tar.gz
 glibc-static-2.12-1.132.el6_5.4.x86_64.rpm
 glibc-static-2.12-1.149.el6.x86_64.rpm    <---- CentOS 6.6 の時
---------------------------------------------------------------
 webmin-1.680.tar.gz
 Jcode-2.07.tar.gz
 nkf-2.1.5.tar.gz
---------------------------------------------------------------
sensors
 lm_sensors-libs-3.1.1-17.el6.x86_64.rpm
 lm_sensors-3.1.1-17.el6.x86_64.rpm.html


=================================================================================
  4. セキュリティ対策のため停止したサービス
=================================================================================
停止したサービスは、下記のとおりです。

     atd             # 単発的にスケジュール化した コマンド を実行させるデーモンです
 cpuspeed        # 動作負荷に応じてCPUの速度を変化させるデーモンです
 kdump           # システムがクラッシュした時、原因を特定するためのdumpファイルを
                   保存してくれるサービス
 haldaemon       # USB外付けHDDやUSBメモリ等を使わないのであればOFF
 blk-availability# LVM2のミラーデバイスを管理する。
 acpid           # ホスト機の動作と電源を管理#
 messagebus      # アプリケーション間のメッセージを送るD-BUSデーモン
 saslauthd       # コネクションベースのプロトコル認証をサポートするデーモン
 mdmonitor       # ソフトウェアRAID 監視サービ
 netfs           # システム起動時にfstabに記述されているNFSやsambaを自動マウントする
                   ためのサービス
 rdisc           # ネットワークルータディスカバリーデーモン
 saslauthd       # コネクションベースのプロトコル認証をサポートするデーモン
 auditd          # 監査システムの一部を補助し、適切なログデータを出力する
 ip6tables       # IPv6でパケットフィルタリングを行うデーモンです
 lvm2-monitor    #  論理ボリュームマネージャー(LVM) 利用時の障害監視のためのデーモン
 restorecond     # SELinuxと連動
 postfix         # メールサーバ


サービスの停止を簡単に済ませたい時には、下記コマンドを入力すると写真 @ のように表
示するので[↑],[↓]キーでサービスの起動・停止したいサービスを選んで[スペース]キーを
押します。
終了は、[Tab]キーを押してから、[Enter]キーを押します。( 再起動後有効になります。)
( * の付いている箇所は、サービスを起動するサービスです。)

  ntsysv

※ 注意 ※ 
      ntsysv での設定は、現在のランレベルだけでの起動・停止設定になります。
      現在のランレベルの確認は、コマンド runlevel でします。 
      私のサーバ機の環境下では、N 3 ( ランレベル 3 )と表示しました。
      [ ランレベル 3 の意味 --- 通常のマルチユーザーモード(テキストログイン)]
      [ N は起動した後、ランレベルを切り替えていないことを意味します。]
写真 @
A


=================================================================================
  5. ファイアウォール・SELinux の設定
=================================================================================
許可(開放)しているネットワークポートの一覧 
         ( ファイアウォール iptables で下記のポート番号だけ、許可しています。 )
           1. 21        ( ftp ファイル転送 SMTP )
           2. 2222      ( ssh )
           3. 80        ( Webアクセス http )
           4. 123       ( NTP サーバの時刻合わせ )
           5. 10000     ( webmin )

            先人の知恵を借りて、シェルスクリプトのプログラム作成しました。
            下記は、私が改良したプログラム(例 CentOS 5.9 と同じ設定でOKです。)です。

[ 先人の知恵を借りて作成したファイアーウォールのプログラム ] の詳細は、
                                              [ここをクリック]してください。

〇 SELinux を使用した時の追加設定

[ CentOS 6 SELinux のアクセス制限を有効にした時の追加設定 ] の詳細は、
                                              [ここをクリック]してください。




=================================================================================
  6-1. Tera Termでproftpd( FTPサーバ )を転送しインストール
=================================================================================
---------------------------------------------------------------------------------
proftpd( FTPサーバ )をインストールするまでは、ffftpが、使用できないのでTera 
Termの転送機能で、proftpd( FTPサーバ proftpd-1.3.5.tar.gz )をホームディレクトリ
へ転送しインストールします。
( Tera Termの転送機能は、ホームディレクトにしか書込みが出来ません。)
---------------------------------------------------------------------------------

@ Tera Term から、proftpd をサーバ機のホームデレクトリィにファイルを転送する
   方法は、次の通りです。

 [ 転送方法 ]
 1. Tera Term の画面上・左端 [ファイル] をクリックする。            <--- 写真 @
 2.  プルダウンメニューの SSH SCP...をクリックする。                 <--- 写真 A
 3.  中央に窓が開くので写真 B の矢印で示すボタン[…]をクリックする。 <--- 写真 B
写真 @A 写真 AB 写真 BC
 4.  写真 C の様にファイルを選択するダイヤログ画面が開くので、
              proftpd-1.3.5.tar.gzを選択する(ダブルクリックする。)  <--- 写真 C       
 5. 写真 D の矢印で示す[Send]ボタンをクリックする。                <--- 写真 D
 6. ユーザのホームデレクトリィにファイルが転送される。
写真 C
A
写真 DB
A proftpd のインストール

    1.  転送した proftpd-1.3.5.tar.gz を /usr/loacl/src/ コピーする。
         cp /home/miyasaka/proftpd-1.3.5.tar.gz /usr/loacl/src/
    2.  proftpd-1.3.5.tar.gz を展開する。 
         cd /usr/loacl/src/ ;tar zxvf proftpd-1.3.5.tar.gz
    3.  展開したソースファイルの configure を実行する。
         cd proftpd-1.3.5; \
         ./configure --prefix=/usr/local/proftpd

         1 〜 3 をまとめて実行させると
         cp /home/miyasaka/proftpd-1.3.5.tar.gz /usr/loacl/src/; \
         cd /usr/loacl/src/; \
         tar zxvf proftpd-1.3.5.tar.gz; \
         cd proftpd-1.3.5; \
         ./configure --prefix=/usr/local/proftpd

    4.  make とインストールをする。
         make && make install

B proftpd.confの設定

※  注意  ※

   ○○○○.conf ファイルは、編集前にバックアップをホームディレクトリに取るように
   しましょう。
   ex,  proftpd.confの場合

  cp /usr/local/proftpd/etc/proftpd.conf /home/miyasaka/proftpd.conf.bak

  vi /usr/local/proftpd/etc/proftpd.confで、"# Bar use of SITE CHMOD by 
  default"以降をすべて削除し、下記の文を追加します。

  ※ まとめて削除する方法 ※

  "# Bar use of SITE CHMOD by default"の行へカーソルを移動して (削除行数)dd と
   # 入力する。

    #
    # Bar use of SITE CHMOD by default
    #     サイト内ファイルの属性変更を許可するグループ
    #
    <Limit SITE_CHMOD>
      #DenyAll
      AllowAll                
    </Limit>
    #ファイル一覧表示(ドットファイルの可視化)
    ListOptions "-a"
    #
    #ログイン時間の短縮化(DNS問い合わせしない・Identの停止)
    UseReverseDNS off
    IdentLookups off
    #
    # アクセス時刻の修正 GMT-->JST
    TimesGMT off
    # LAN内のみアクセスを許可する。
    <Limit LOGIN>
      Allow from 192.168.0.0/24    <--- ここの 192.168.0. は、あなたの環境の
    </Limit>                                   IPアドレスに合わせてください。

C proftpdの起動ファイルをコピー・編集する。

  作成された起動ファイル proftpd.init.d を /etc/rc.d/init.d/proftpd へコピーする。

 cp /usr/local/src/proftpd-1.3.5/contrib/dist/rpm/proftpd.init.d \
  /etc/rc.d/init.d/proftpd

D proftpdの起動ファイルの32、46行目を編集する。

  vi /etc/rc.d/init.d/proftpd

  32行目に追加( 環境変数 PATH に /usr/local/proftpd/sbin を追加・有効にする処理 )
  これは、proftpd のコンパイル後の保存先が、/usr/local/proftpd にしているためです。
  ( この操作を proftpd の「 パスを通す 」と言います。つまり、 proftpd を実行させる
    時にフルパスを入れなくても実行できるようにする為です。)

  export PATH="$PATH:/usr/local/proftpd/sbin"

  46行目を修正する

  # Make sure the binary is present.
  [ -x /usr/sbin/proftpd ] || exit 5
    ↓   ↓
  [ -x /usr/local/proftpd/sbin/proftpd ] || exit 5

※ 参考 ※ 
 1行毎直すのが面倒な時には、sed コマンドで下記の様にすると同じ事ができます。
 編集は、一度ユーザのフォルダにコピーしてから行います。
 ( sed -i は、上書き指定です。)
 ( "31a は、31行目の次の行として a 以降の文字列が追加・\ は、改行指示です。 )
 ( s/△△/□□/g は、△△の文字列が□□文字列に置換されます。 )
 ( \ は、メタ文字[ $, /, . 等 ]の使用指定です。 )

cp /usr/local/src/proftpd-1.3.5/contrib/dist/rpm/proftpd.init.d \
/etc/rc.d/init.d/proftpd; \
sed -i -e "31a\export PATH=\$PATH\:\/usr\/local\/proftpd\/sbin
s/-x \/usr\/sbin\/proftpd/-x \/usr\/local\/proftpd\/sbin\/proftpd/g" \
/etc/rc.d/init.d/proftpd

E  proftpd.conf は、グループの初期値が 
    30行目  User  nobody
    31行目  Group nogroup
    の設定なので、グループ名 nogroup を追加( groupadd nogroup )するか、
    31行目を  Group nobody に変更します。

    私は、groupadd nogroup のコマンド入力をしています。

F /etc/hostsに、ホスト名( 127.0.0.1 ○○○○ )を echo にて追加する。
  これをしないと起動しません。

    echo "127.0.0.1 ○○○○" >> /etc/hosts ( ○○○○は、ホスト名です。)

G 編集したproftpdの属性を変更、chkconfig に proftpd を追加して起動する。

  EFもまとめて実行させると
  groupadd nogroup; \
  echo "127.0.0.1 ○○○○" >> /etc/hosts; \
  chmod 755 /etc/rc.d/init.d/proftpd; \
  chkconfig --add proftpd; \
  /etc/rc.d/init.d/proftpd start

  以下の様に表示すれば起動成功です。

  Starting proftpd:                                               [  OK  ]

  ※※ 注意事項  ※※
      windows 側の ffftp の[ホストの設定][文字コード]は、
      ホスト側の漢字コード    ---> 無変換
      ファイル名の漢字コード  ---> 自動
      に設定してください。

H windows側にある各種インストールするためのプログラムは、ffftpで一度ホームデレク
   トリィに転送し、コマンドで所定デレクトリィに移動なり、コピーしてから、インスト
    ールします。

I ffftpの時間ずれを直すには、ffftpの設定を変更します。
   windows側でFFTPを起動し、接続時に設定変更で「拡張」を選び、ホストタイムゾーンを
   GMT+9:00 に変更します。

K ffftpで接続したときに所有者なの欄が数字に成っている時、ユーザー名に変更する
   方法

   ffftpの起動時に表示する「ホスト一覧」の画面で、ダイアログ→「高度」タブ→「可能
   であれば MLSDコマンドで一覧を取得(M)」のチェックを外すと所有者名が表示されます。

L ffftpの設定で[アップロードするファイルの属性]を事前に設定しておくと、転送後の属
   性設定が不要になるので便利です。 その方法は、ffftp のツールバーの[オプション(O)]
   [環境設定(S)]を選び、表示されるオプションの画面のタグ[転送3]をクリック、
   [追加(A)]で拡張子毎に設定追加します。

   設定例
      *.pl  *.cgi  *.sh ---> 755
      *.txt *.cnt       ---> 666
      *.html は、設定不要です。

  ※ 参考になるサイト   linuxmaster.jp


=================================================================================
  6-2. vsftpd( FTPサーバ )のインストール
=================================================================================
ここでは、先人の知恵を借りて、vsftpd のインストールと設定に挑戦してみました。
設定は、管理者のみ・LAN 内のみの接続にしています。また、個人使用の為、ログは取りま
せん。

※ 役に立つ情報 ※
  私は、サーバ再構築の際保存したある vsftpd.conf を上書きして設定しています。
  ffftp が使えないので、Tera Term の転送機能を利用して行います。
  その方法は、[ 6-1. Tera Termでproftpd( FTPサーバ )を転送しインストール ]で解説
  しています。

@ vsftpd のインストールと設定

-------------------------------------------------------------------------------------
   vsftpd-2.2.2-27.1.el6.x86_64.rpm は、Tera Term の転送機能を利用して
   ホームディレクトリに読込み cp コマンドで /usr/local/src/ へコピーします。
-------------------------------------------------------------------------------------

   cd /usr/local/src/; \
   rpm -ivh vsftpd-2.2.2-27.1.el6.x86_64.rpm

   yum でのインストールは、下記の通りです。

   yum -y install vsftpd

A vsftpd の設定

※  注意  ※

   ○○○○.conf ファイルは、編集前にバックアップをホームディレクトリに取るように
   しましょう。

   編集前の vsftpd.conf を .bak を付けて保存しておきます。

   cp /etc/vsftpd/vsftpd.conf /home/miyasaka/vsftpd.conf.bak
---------------------------------------------------------------------------------
   編集済の vsftpd.conf が有る場合には、Tera Term の転送機能を利用してホームディレ
   クトリに読込み cp コマンドで上書きします。

   cp /home/miyasaka/vsftpd.conf /etc/vsftpd/
---------------------------------------------------------------------------------
   下記の操作を sed コマンドで一括処理してみました。
    ( sed -i は、上書き編集、81s/#// は、81行目コメント削除、\$a\ は、最終行[\$]の
      行末[a]に a 以降の文字列を追加・\ は、先頭の改行、\n は、文字列中の改行の指
      示です。)

sed -i -e "s/anonymous_enable=YES/anonymous_enable=NO/g
s/xferlog_enable=YES/xferlog_enable=NO/g
#####   コメントアウト
/#ascii_upload_enable/s/^#//
/#ascii_download_enable/s/^#//
/#chroot_local_user/s/^#//
/#chroot_list_enable/s/^#//
/#chroot_list_file/s/^#//
/#ls_recurse_enable/s/^#//
s/listen=NO/listen=YES/g
s/listen_ipv6=YES/listen_ipv6=NO/g
#####    追加
\$a\local_root=public_html\n\
use_localtime=YES\n\
text_userdb_names=Yes\n\
force_dot_files=YES" /etc/vsftpd/vsftpd.conff

   vi /etc/vsftpd/vsftpd.conf

   12行目 匿名ログイン禁止

   anonymous_enable=NO

   39行目:転送記録をログに残す

   xferlog_enable=NO

   81,82行目 コメント解除 ( アスキーモードでの転送を許可 )
             これを忘れると perl、sh 等のソースファイルの転送が正しく行われない
             改行コードにエラーがでます。
             改行コードが\r\nで保存されるため、Linuxの\nに直す作業が発生します。

   ascii_upload_enable=YES
   ascii_download_enable=YES

   96,97行目:コメント解除 ( chroot有効 )

   chroot_local_user=YES
   chroot_list_enable=YES

   99行目 コメント解除 ( chroot リストファイル指定 )

   chroot_list_file=/etc/vsftpd/chroot_list

   105行目 コメント解除 ( ディレクトリごと一括での転送有効 )

   ls_recurse_enable=YES

  ### 最終行へ追記 ###

  # ルートディレクトリ指定 (指定しない場合はホームディレクトリがルートディレクトリ
                            となる)

  local_root=public_html

  # ローカルタイムを使う

  use_localtime=YES

  # Windows( ffftp )側で所有者名の表示

  text_userdb_names=Yes

  # Windows( ffftp )側で . ファイルの表示

  force_dot_files=YES

---------------------------------------------------------------------------------
  編集済の vsftpd.conf は、再構築時使用すると便利なので windows PC へ保存します。
  なお、ファイルの属性・所有者を変更しないと windows PC へ保存できないので変更し
  ます。
  ( ディレクトリ・ユーザ名は、私のサーバ機の場合の設定です。)

  cp /etc/vsftpd/vsftpd.conf /home/miyasaka/; \
  chown -R miyasaka:miyasaka /home/miyasaka/vsftpd.conf; \
  chmod 644 /home/miyasaka/vsftpd.conf

---------------------------------------------------------------------------------

B 上層への ディレクトリへのアクセスを許可するユーザーを追加

   vi /etc/vsftpd/chroot_list
    私の場合 miyasaka を書込みます。

    または、

   echo "miyasaka" >> /etc/vsftpd/chroot_list

C hosts.allowとhosts.denyの設定( IPアドレスの制限 )

   この設定は、hosts.allow が優先されます。つまり、deny で全てを拒否し、allow で指
   定された IPアドレスの許可をします。

  C-1 /etc/hosts.deny に、 vsftpd:ALL ( すべての接続を拒否 )と書込みます。

   vi /etc/hosts.deny

   vsftpd:ALL

   または、

   echo "vsftpd:ALL" >> /etc/hosts.deny

  C-2 /etc/hosts.allow で接続を許可するIPアドレスを指定します。

   vi /etc/hosts.allow

   vsftpd:192.168.0.

    または、

   echo "vsftpd:192.168.0." >> /etc/hosts.allow

   192.168.0. は、私の環境下ですべてのローカルIPアドレスを許可する設定です。

D vsftpd を起動する。

   /etc/rc.d/init.d/vsftpd start

   # が表示すれば OK です。

E vsftpd の自動起動を有効にする。

   chkconfig vsftpd on

   # が表示すれば OK です。

F B 〜 F-4 のコマンドをまとめて実行させると下記の様になります。

        echo "miyasaka" >> /etc/vsftpd/chroot_list; \
        echo "vsftpd:ALL" >> /etc/hosts.deny; \
        echo "vsftpd:192.168.0." >> /etc/hosts.allow; \
        /etc/rc.d/init.d/vsftpd start; \
        chkconfig vsftpd on

G  ここで、windows 側の ffftp で接続できるか確認します。

  ※※ 注意事項  ※※
  ffftp の設定は、
  ホスト名(アドレス)(N)      ----> CentOS6.5 のIPアドレス
  ユーザー名(U)              ----> CentOS6.5 のユーザー名
  パスワード/パスフレーズ(N) ----> CentOS6.5 のユーザー名パスワード
  ホスト側の漢字コード       ----> 無変換
  ファイル名の漢字コード     ----> 自動
  に設定してください。

H windows側にある各種インストールするためのプログラムは、ffftpで一度ホームデレク
   トリィに転送し、コマンドで所定デレクトリィに移動なり、コピーしてから、インスト
    ールします。

I ffftpの時間ずれを直すには、ffftpの設定を変更します。

   windows側でFFTPを起動し、接続時に設定変更で「拡張」を選び、ホストタイムゾーンを
   GMT+9:00 に変更します。

J ffftpの設定で[アップロードするファイルの属性]を事前に設定しておくと、転送後の属
   性設定が不要になるので便利です。  
   その方法は、ffftp のツールバーの[オプション(O)][環境設定(S)]を選び、表示される
   オプションの画面のタグ[転送3]をクリック、[追加(A)]で拡張子毎に設定追加します。

   設定例
      *.pl  *.cgi  *.sh ---> 755
      *.txt *.cnt       ---> 666
      *.html は、設定不要です。


=================================================================================
  7. ファイルの転送プログラムの作成
=================================================================================
私の場合、インストールするプログラムのファイルは、windows側でダウンロードし、
windows側のフォルダ src2にまとめて保存しおき、ffftpで /home/miyasaka/に転送し、サ
ーバ機側では、転送プログラムで所定のディレクトリに転送しています。  
ファイルのダウンロードは、ファイル名で検索するとダウンロード先を見つけることができ
ます。

ファイルを転送するシェルスクリプトのプログラムをホームディレクトリに作成して行いま
す。  下記は、私が作成したプログラム例です。

[ CentOS 6 SELinux のアクセス制限を有効にした時の追加設定 ] の詳細は、
                                           [ここをクリック]してください。




=================================================================================
  8. サーバの時刻を日本標準時に同期させる
=================================================================================
(独)情報通信研究機構 時空標準研究室 が、提供している「公開NTPサービス」を利用
して日本標準時にサーバの時刻を同期させます。(設定方法等は、先人の知恵を借りて行い
                                             ました。)

@ vi /etc/ntp.conf を入力して、設定ファイルを下記の様に変更します。
  22行目あたり

  server 0.centos.pool.ntp.org iburst
  server 1.centos.pool.ntp.org iburst
  server 2.centos.pool.ntp.org iburst
  server 3.centos.pool.ntp.org iburst

  こうなっている部分を以下のように変更します。
  ( 必ず三つ書き込みます。)
   ↓
  server ntp.nict.jp
  server ntp1.jst.mfeed.ad.jp
  server ntp2.jst.mfeed.ad.jp

※ 参考 ※  1行毎直すのが面倒な時には、sed コマンドで下記の様にすると同じ事が
            できます。     念のため、バックアップを取ってから置換します。

cp /etc/ntp.conf /home/○○○○/ntp.conf.bak; \
sed -i -e "s/server 0\.centos\.pool\.ntp\.org iburst/server ntp\.nict\.jp/g
s/server 1\.centos\.pool\.ntp\.org iburst/server ntp1\.jst\.mfeed\.ad\.jp/g
s/server 2\.centos\.pool\.ntp\.org iburst/server ntp2\.jst\.mfeed\.ad\.jp/g
s/server 3\.centos\.pool\.ntp\.org iburst//" /etc/ntp.conf

A ntpdを起動します。

  /etc/init.d/ntpd start

  下記の様に表示するはずです。
  --------------------------------------------------------------------------------
  ntpd を起動中:                                             [  OK  ]
  --------------------------------------------------------------------------------

B サーバー起動時に自動で、サーバーの時刻合わせを有効にする設定をする。

  vi /etc/rc.d/rc.local

  以下を追加する。

  #ntpd
  /etc/init.d/ntpd start

  ※  echo コマンドで追加する方法  ※
  下記2行をコピペして実行します。

  echo "#ntpd
  /etc/init.d/ntpd start" >> /etc/rc.d/rc.local

  ついでに自動起動の設定もしておきましょう。
  chkconfig ntpd on

  ABもまとめて実行させると
  echo "#ntpd
  /etc/init.d/ntpd start" >> /etc/rc.d/rc.local; \
  chkconfig ntpd on; \
  /etc/init.d/ntpd start

C ntpdのステータスの確認。

  # ntpq -p
  起動当初は、下記の様に表示します。
       remote           refid      st t when poll reach   delay   offset  jitter
  ==============================================================================
   ntp-b3.nict.go. .NICT.           1 u   58   64    1   19.006  1011.19   0.002
   ntp1.jst.mfeed. 172.29.2.50      2 u   57   64    1   16.972  1011.42   0.002
   ntp2.jst.mfeed. 133.243.236.18   2 u   56   64    1   16.953  1011.43   0.002

  以下のように*印がついていたら同期ができています。
   (起動してから同期までに10分ぐらいかかります。)
  # ntpq -p
       remote           refid      st t when poll reach   delay   offset  jitter
  ==============================================================================
  *ntp-b3.nict.go. .NICT.           1 u    3   64   77   17.612    0.205   0.323
   ntp1.jst.mfeed. 172.29.2.50      2 u   37   64   37   16.167    0.225   0.492
   ntp2.jst.mfeed. 172.29.2.50      2 u   24   64   37   16.255    0.433   0.202

D システム時刻(年月日,曜日,時刻)の確認と手動での修正方法

  date を入力して時刻が確認できます。
  例えば、下記の様に表示します。

  2013年 10月  7日 月曜日 13:21:17 JST

  時刻の修正は、date MMDDhhmmYYYY の様に入力します。 
  [ MM 月 01〜12 DD 日 01〜31 hhmm 時刻 24時表示 YYYY 年(西暦) ]

  ex. 2013年10月07日 09:05  --> date 100709052013


=================================================================================
  9. RPMforgeリポジトリを導入する
=================================================================================

○ yum-prioritiesインストール

  cd /usr/local/src/; \
  rpm -ivh yum-plugin-priorities-1.1.31-25.el7_0.noarch.rpm

  yum でのインストールは、下記の通りです。

  yum -y install yum-plugin-priorities

○ 標準リポジトリ設定ファイル編集

※ 参考 ※ 
 1行毎直すのが面倒な時には、sed コマンドで下記の様にすると同じ事ができます。
 念のため、バックアップを取ってから置換します。( 27i は、27行目に i 以降の文字列が
                                                 追加されます。)

cp /etc/yum.repos.d/CentOS-Base.repo /home/miyasaka/CentOS-Base.repo.bak; \
sed -i -e "19ipriority=1
27ipriority=1
35ipriority=1
44ipriority=1" /etc/yum.repos.d/CentOS-Base.repo

  vi /etc/yum.repos.d/CentOS-Base.repo

  [base]
  name=CentOS-$releasever - Base
  mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$base……
  #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
  gpgcheck=1
  gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
  priority=1  ← 追加する
  #released updates
  [updates]
  name=CentOS-$releasever - Updates
  mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$base……
  #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
  gpgcheck=1
  gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
  priority=1  ← 追加する
  #additional packages that may be useful
  [extras]
  name=CentOS-$releasever - Extras
  mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$base……
  #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
  gpgcheck=1
  gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
  priority=1  ← 追加する
  #additional packages that extend functionality of existing packages
  [centosplus]
  name=CentOS-$releasever - Plus
  mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$base……
  #baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
  gpgcheck=1
  enabled=0
  gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
  priority=1  ← 追加する
  #contrib - packages by Centos Users
  [contrib]
         ( 省略 )

○ RPMforgeリポジトリインストール

  rpm -ivh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

○ RPMforgeリポジトリのアップデート

  yum -y update rpmforge-release

  以下のメッセージ表示で終わります。
  151 packages excluded due to repository priority protections
  No packages marked for update

○ CentOS-Base.repo のファイルも編集済のファイルを上書きできるので保存しておくこと
   をすすめます。

 cp /etc/yum.repos.d/CentOS-Base.repo /home/miyasaka/CentOS-Base.repo.bak

  ※ 参考にしたサイト   RPMforgeリポジトリ導入(RPMforge)


=================================================================================
  10-1. apache2( httpd-2.4.41 )のインストール
=================================================================================

H31.03.31付けで httpd-2.4.39 がリリースされました。
2019.08.12付けで httpd-2.4.41 に成っていますがインストール・設定は同じでOKです。

httpd-2.4.X から、 srclib以下は何も用意されていないので、apr、apr-util、pcre を準
備しインストールして置く必要があるります。
httpd-2.4.26 からは、 expat-devel も準備しインストールして置く必要があるります。
インストールしないと make で [xml/apr_xml.lo] エラー 等々のエラーが出ます。

@ pcre, expat-devel のインストール

   pcre のインストール

   cd /usr/local/src; \
   rpm -Uvh pcre-devel-7.8-6.el6.x86_64.rpm  <---- CentOS6.5, 6.6 の時
   rpm -Uvh pcre-devel-7.8-7.el6.x86_64.rpm  <---- CentOS6.7, 6.9, 6.10 の時

   yum でのインストールは、   yum -y install pcre-devel

   expat-develのインストール  <---- httpd-2.4.26 〜 39の時必要

   rpm -Uvh expat-devel-2.0.1-13.el6_8.x86_64.rpm

   yum でのインストールは、   yum -y install expat-devel

  このパッケージが無いと make の最後に下記エラーが出ます。
  ( 表示例 )
  -------------------------------------------------------------------------------
  make[3]: *** [xml/apr_xml.lo] エラー 1
  make[3]: ディレクトリ `/usr/local/src/httpd-2.4.27/srclib/apr-util' から出ます
  make[2]: *** [all-recursive] エラー 1
  make[2]: ディレクトリ `/usr/local/src/httpd-2.4.27/srclib/apr-util' から出ます
  make[1]: *** [all-recursive] エラー 1
  make[1]: ディレクトリ `/usr/local/src/httpd-2.4.27/srclib' から出ます
  make: *** [all-recursive] エラー 1
  -------------------------------------------------------------------------------

A httpd-2.4.41, apr, apr-util を展開する。

   ○ httpd-2.4.41 を展開する。

   tar xzvf httpd-2.4.41.tar.gz; \
   chown -R root. httpd-2.4.41; \
   cd ./httpd-2.4.41/srclib
以下で、終われば、OK
---------------------------------------------------------------------------------
httpd-2.4.41/docs/manual/urlmapping.html
httpd-2.4.41/buildconf
httpd-2.4.41/Makefile.in
httpd-2.4.41/srclib/
httpd-2.4.41/srclib/Makefile.in

   ○ apr を展開したファイルをフォルダ ./httpd-2.4.41/srclib/ へ書き込む。

   tar xzvf apr-1.7.0.tar.gz; \
   chown -R root. apr-1.7.0/; \
   mv apr-1.7.0 apr; \
   tar xzvf apr-util-1.6.1.tar.gz; \
   chown -R root. apr-util-1.6.1/; \
   mv apr-util-1.6.1/ apr-util

B configure の実行

   cd /usr/local/src/httpd-2.4.41; \
   ./configure \
   --enable-rewrite \
   --enable-so \
   --enable-deflate=shared \     <---- 圧縮する処理を追加
   --with-included-apr

  -------------------------------------------------------------------------------
  ・enable-rewrite        : Rewriteサポート(mod_rewrite)
    Apache側で要求されたURLを書き換えたり、リダイレクトしたりしてくれるモジュール
  ・enable-so             : mod_soモジュールを静的に組み込む
  ・enable-deflate=shared : データの転送を圧縮するモジュールを組み込む
  -------------------------------------------------------------------------------

以下で、終われば、OK
---------------------------------------------------------------------------------
config.status: creating build/rules.mk
config.status: creating build/pkg/pkginfo
config.status: creating build/config_vars.sh
config.status: creating include/ap_config_auto.h
config.status: executing default commands
configure: summary of build options:

    Server Version: 2.4.41
    Install prefix: /usr/local/apache2
    C compiler:     gcc -std=gnu99
    CFLAGS:          -g -O2 -pthread
    CPPFLAGS:        -DLINUX -D_REENTRANT -D_GNU_SOURCE
    LDFLAGS:
    LIBS:
    C preprocessor: gcc -E

---------------------------------------------------------------------------------
D make & install
   make && make install
以下で、終われば、OK
---------------------------------------------------------------------------------
Installing CGIs
mkdir /usr/local/apache2/cgi-bin
Installing header files
Installing build system files
Installing man pages and online manual
mkdir /usr/local/apache2/man
mkdir /usr/local/apache2/man/man1
mkdir /usr/local/apache2/man/man8
mkdir /usr/local/apache2/manual
make[1]: ディレクトリ `/usr/local/src/httpd-2.4.41' から出ます
---------------------------------------------------------------------------------
E 私のサーバの環境でした、httpd.confの設定は、下記のとおりです。

※  注意  ※

   ○○○○.conf ファイルは、編集前にバックアップをホームディレクトリに取るように
   しましょう。
   ex,  httpd.confの場合 

  cp /usr/local/apache2/conf/httpd.conf /home/miyasaka/httpd.conf.bak

   下記は、修正箇所の一覧ですが、ディレクトリは、私のサーバ機の環境での設定値です。
   機能は、「cgi, SSI, が、.htmlで使用可能・cgi, SSI のファイルは、ホームページフ
   ァイルと同一ディレクトリで可能にする・png, jpg ファイル以外は、圧縮して転送する
    」を設定しています。
   なお、ドメインは一つしか使用しないのでバーチャルドホストの設定は、していません。
   圧縮設定は、最後に追加していますが、圧縮ログの出力は、コメントアウトしています
   ので、ローカルで確認する時
   には、削除してください。

 下記は、httpd.conf の編集を sed コマンドで一括編集をした時の sed コマンドのリスト
 です。
 ここまで sed コマンドを使うと Linux の正規表現等が良く理解できます。
 興味のある方は、下記をクリックしてください。別ページで表示します。
---------------------------------------------------------------------------------

[ sed コマンドによる httpd-2.4.XX の httpd.conf の一括編集 ] の詳細は、
                                                [ここをクリック]してください。

---------------------------------------------------------------------------------
※ httpd.conf の設定が、終わったファイルを ffftp で、windows側に転送しておくと、再
 構築の時に、そのファイルを上書きすれば、設定内容は、すべて有効になります。 
 ただし、直接上書きはできないので、一度ホームディレクトリへ転送し、コピーコマンド
 で、上書きします。

   cp /home/miyasaka/src2/httpd.conf /usr/local/apache2/conf/
---------------------------------------------------------------------------------

[ CentOS 6.X httpd-2.4.41 httpd.conf の編集項目 ] の詳細は、
                                           [ここをクリック]してください。

----------------------------------------------------------------------------------
  Alias(エイリアス) を使用して、別 DocumentRoot を作り CGI, SSI, html を動作
  させる方法を下記に紹介します。

  この方法は、当ホームページのトップページ内の指定した「日」および「月」の保存した
  定点カメラの映像表示で使用しています。

[ Alias で別 DocumentRoot を作り CGI, SSI, html を動かす ] の詳細は、
                                           [ここをクリック]してください。

---------------------------------------------------------------------------------
  編集済の httpd.conf は、再構築時使用すると便利なので windows PC へ保存します。
    ( ディレクトリ・ユーザ名は、私のサーバ機の場合の設定です。)

  cp /usr/local/apache2/conf/httpd.conf /home/miyasaka/
---------------------------------------------------------------------------------
Fホームページの書き込み先のフォルダを作成・所有者の変更・属性変更をします。
   ( /var/www/html/www.smiyasaka.com は、私の場合の DocumentRoot です。)

   mkdir -p /var/www/html/www.smiyasaka.com; \
   chown -R miyasaka:miyasaka /var/www/; \
   chmod 777 /var/www/html/www.smiyasaka.com

G httpd.confの設定に間違いが無いか確認します。

   /usr/local/apache2/bin/apachectl configtest

「 Syntax OK 」と表示されればOKです。

 ※※  注意  ※※
   configtest を実行する時に、DocumentRoot で指定したディレクトリが無いと下記エラ
   ーが出ますのでディレクトリを作成してから、configtest を実行してください。

              DocumentRoot must be a directory

H apache2を起動する。

   /usr/local/apache2/bin/apachectl start      <---  停止してから、起動する。

   または、

   /usr/local/apache2/bin/apachectl graceful   <---  アクセス中のユーザを有効に
                                                          したまま再起動する。

   どちらも、# が、表示すれば OK です。

J システム起動時に、自動起動させるために、rc.local に apache の起動コマンドを書き
   込みます。

   vi /etc/rc.d/rc.local

   下記を追加する。

   # Apache
   /usr/local/apache2/bin/apachectl start

   ※  echo コマンドで追加する方法  ※
   下記2行をコピペして実行します。

   echo "# Apache
   /usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.local

K ここで、 httpd.conf へ設定したドキュメントのルート( DocumentRoot )へホームペー
   ジのファイルデータを書き込みます。
   下記は、ホームページ表示テスト用のプログラムです。 SSI・CGI もテストするように
   しています。

   [ ホームページテストプログラム ] の詳細は、[ここをクリック]してください。

   私の場合は、自宅サーバの現用機で、毎日下記のファイルを圧縮してバックアップファ
   イルとし作成しているので

        1.ホームページのhtml・cgi・SSI・写真のファイルとデータ
        2.システム管理用に作成した perl・sh等の各種プログラム
        3.webalizerが解析した apacheのアクセスデータ(htmlデータ)
        4.apache のログデータ(1カ月分)
        5.root宛てメールデータ(10日分)

   専用の転送プログラムと展開プログラムで簡単に、前日の24時の時点に数分で復元で
   きるようにシステムを構築しています。

L 動作確認は、予備機のローカルIPアドレスを別の PC から入力して確認します。
   予備機を現用機とした時には、[ ホームページが外部へ公開 ] されているかの確認が
   出来るサイトで行います。下記をクリックするとそのサイトへジャンプします。
                     [サーバー監視/ネットワーク監視サービス]

M 書き込んだプログラムを定時実行させるため、cron への設定もします。
---------------------------------------------------------------------------------
   ※ 圧縮されたかの確認ができるwebサイトを紹介します。下記 URLをクリックし
      てあなたのホームページのURLを入れるだけです。
   www.gidnetwork.com
   私のドメインでアクセスした結果は、下記の通りです。(圧縮レベル 5 で設定)
 -------------------------------------------
 右の写真のような情報が取得できます。
 ( H28.11.01 アクセスし、データ取得 )

 Results for: www.smiyasaka.com    
 Web page compressed?     Yes   ← 圧縮有
 Compression type?        gzip  ← 圧縮タイプ
 Size, Markup (bytes)     13,077  ← 解凍した
                                 後の バイト数
 Size, Compressed (bytes)  4,515  ← 圧縮された
                                 時の バイト数
 Compression %            65.5  ← 圧縮率
 -------------------------------------------







www.gidnetwork.com からの回答
B
圧縮した時の圧縮ログデータは、このようになりました。
(私の環境では、/usr/local/apache2/logs/deflate_log に圧縮ログデータが保存されました)
   (出力バイト数)↓ ↓(入力)↓( 元データに対するデータの大きさ[ % ] ) を意味します。
"GET / HTTP/1.1" 10335/53768  (19%) Mozilla/5.0 (compatible; MSIE 9.0;……………
"GET /.webcam/camdata.jpg HTTP/1.1" 730/1235 (59%) Mozilla/5.0 (compatible;………
"GET /.webcam/camdata.jpg HTTP/1.1" -/- (-%) Mozilla/4.0 (compatible; )……………
"GET /fswebcam.html HTTP/1.1" 16258/71964 (22%) Mozilla/5.0 (compatible; MS………
"GET /server.html HTTP/1.1" 13682/55830 (24%) Mozilla/5.0 (Windows NT 6.1; ………
"GET /html_point.html HTTP/1.1" 14973/70669 (21%) Mozilla/5.0 (Windows NT  ………
"GET /html_point8.html HTTP/1.1" 1017/1985 (51%) Mozilla/5.0 (Windows NT …………
"GET /html_point4.html HTTP/1.1" 852/1575 (54%) Mozilla/5.0 (Windows NT……………
HTMLのページによって圧縮率[ 100 - 上記の()内の値 ]が違う事が分かります。また、jpg 
は、圧縮対象外にしているので圧縮されてないことも分かります。
圧縮率の計算は、
          {(入力バイト数)-(出力バイト数)}÷(入力バイト数)×100 %になるので
上記1行目の場合、( 53,768 - 10,335 )÷53,768×100=80.78 % になります。
---------------------------------------------------------------------------------

N mod_status を使用した apache サーバステータスの監視機能を使用可能にする設定。

apache サーバステータスを LAN内 PC から、ホームページとして見られる様に設定します。

   N-1 httpd.conf の編集

        vi /usr/local/apache2/conf/httpd.conf

        135行目あたり コメントアウトされてない事を確認する。

        LoadModule status_module modules/mod_status.so

        461行目あたり(原本での行数) コメントアウトを解除する。

        Include conf/extra/httpd-info.conf

   N-2 httpd-info..conf の編集

        vi /usr/local/apache2/conf/extra/httpd-info.conf

        <Location /server-status>
            SetHandler server-status

        16  Require host .example.com
               ↓ ↓ ↓
            Require host localhost

        17  Require ip 127
               ↓ ↓ ↓
            Require ip 192.168.0.  <--- LAN 内のみアクセス許可にする
        </Location>              ここは、あなたの環境に合わせてください。

        サーバステータス情報の拡張表示を行う
        25 #ExtendedStatus On
           ↓ ↓ ↓
           ExtendedStatus On

        httpd の設定情報は、不要なのですべてコメントアウトする

        32  #<Location /server-info>
        33  #    SetHandler server-info
        34  #    Require host .example.com
        35  #    Require ip 127
        36  #</Location>

       上記をまとめて sed コマンドで実行は、下記の様になります。
       なお、同じ文字列があるので、行を指定して実行しています。
  ( s/ の前の数字は、置換をさせる行番号です。 32,36s/^/#/ は、32 〜 36 行の先頭に
    # を挿入する指示です。)

sed -i -e "16s/Require host \.example\.com/Require host localhost/g
17s/Require ip 127/Require ip 192\.168\.0\./g
s/#ExtendedStatus On/ExtendedStatus On/g
32,36s/^/#/" /usr/local/apache2/conf/extra/httpd-info.conf

    ○  httpd を再起動する。

        /usr/local/apache2/bin/apachectl restart  <--- 停止してから起動する

        または、

        /usr/local/apache2/bin/apachectl graceful <---  アクセス中のユーザを
                                                          有効にしたまま再起動する。

   N-3 LAN内 PC からのアクセス方法

        [LAN内のサーバのIPアドレス]/server-status?refresh=5       <--- 5 秒更新
        [LAN内のサーバのIPアドレス]/server-status                 <--- 更新なし

        下記は、私のサーバ機で表示したサーバステータス情報です。
A
※※  apache のバージョンの確認方法  ※※

    /usr/local/apache2/bin/httpd -v のコマンドで確認できます。

    Server version: Apache/2.4.41 (Unix)
    Server built:   Sep  7 2019 06:23:27

○  おまけ

 1. Linux OS のバージョンの確認方法

    cat /etc/redhat-release のコマンドで確認できます。

    CentOS release 6.10 (Final)

 2. Linux カーネルのバージョンの確認方法

    uname -a のコマンドで確認できます。
    ( ただし、H30.08.25 現在 )

    Linux LeoMiya 2.6.32-754.3.5.el6.x86_64 #1 SMP Tue Aug 14 20:46:41 UTC  ………


=================================================================================
  10-2. SELinux を有効にした時の apache2 のポリシー設定
=================================================================================
※※※ 参考情報 ※※※  以下の設定が面倒な時は、ブール値 httpd_unified を on して
みてください。
    [ httpd_t に対して httpd の全タイプへの完全アクセスが許可されます (実行、 読み
込み、 書き込み)。] 私のこのホームページで試したら、ほぼ動作しました。
動作しない SSI・CGI プログラムは、ポリシーを httpd_unconfined_script_exec_t に設定
したら動作しました。
ちなみに動作しないプログラムには、OS のコマンドが入っていました。      
                  [ 私のサーバ機で検証 ]

  ○ httpd に設定したポリシー値

      ホームページ本体は、設定不要( 初期値 : httpd_sys_content_t )
      SSI・CGI プログラム         ---> httpd_sys_script_exec_t
      Read・Write するデータ      ---> httpd_sys_rw_content_t
      sh プログラム               ---> httpd_unconfined_script_exec_t
      SSI・CGI プログラム等で
          動作しないプログラム    ---> httpd_unconfined_script_exec_t

  ○ .html のプログラムファイルは、初期設定値 httpd_sys_content_t のままにしていま
     す。

      ※※ 参考情報 ※※  上記の設定が面倒な時は、ブール値 httpd_unified を on し
                          てみてください。

  ○ httpd のブール値は、下記を on にしています。

      httpd_enable_cgi --> on        ← cgi の動作を有効にする。
      httpd_enable_homedirs --> on   ← ホームディレクトリへのアクセスを有効にする。
      httpd_ssi_exec  --> on       ← Web ページ内の SSI (server side include) 
                                         要素を実行可能にするかどうかを定義。
                                         これを on するかは、動作結果を見て決めて
                                         見てください。
                                         ちなみに、httpd-2.4.6 の場合は、off のま
                                         まにしています。
      httpd_sys_script_anon_write --> on   ← pubuic_content_rw_t タイプのラベ
                                                 ルが付いたファイルへの書き込みア
                                  クセスを HTTPスクリプトに許可するかどうかを定義

---------------------------------------------------------------------------------

私のホームページでは、SELinuxを有効にするにあたってプログラムの配置を変更しました。
理由は、SELinux のポリシ
ーの設定を明確にし、一括設定をできるようにする為です。
変更設定は、コマンド semanage fcontext でポリシーを宣言してコマンド restorecon で
ポリシーを恒久的に設定しています。

  変更点 1. perl のブログラムをすべて1つのホルダー内に格納。
            プログラムは、すべて CGI 及び SSI実行可能なポリシー httpd_sys_script_
            exec_t に設定。
            一部プログラム内で Linux のコマンドを実行しているプログラムは、SELinux
            保護無効のポリシー httpd_unconfined_script_exec_t に設定。

    設定例
      semanage fcontext -a -t httpd_sys_script_exec_t\
       "/var/www/html/www.smiyasaka.com/SSI(/.*)?"
      restorecon -R -vF /var/www/html/www.smiyasaka.com/SSI/
      semanage fcontext -a -t httpd_unconfined_script_exec_t\
       /var/www/html/www.smiyasaka.com/SSI/cgi_test.cgi
      restorecon -vF /var/www/html/www.smiyasaka.com/SSI/cgi_test.cgi

  変更点 2. テキストファイル(.txt)を> すべて1つのホルダー内に格納。
            ファイルは、すべてホームページからの読み書き有効なポリシー httpd_sys_
            rw_content_t に設定。

    設定例
      semanage fcontext -a -t httpd_sys_rw_content_t\
       "/var/www/html/www.smiyasaka.com/TXT(/.*)?"
      restorecon -R -vF /var/www/html/www.smiyasaka.com/TXT/

※※ 参考情報 1 ※※  semanage fcontext でのポリシーの設定について。
 ポリシーは、パスの上位から、下位に向かって行いましょう。 つまり、上位のディレク
 トリをまとめて設定し、次に下位のファイル単位でポリシーを設定します。

※※ 参考情報 2 ※※ SELinux 有効化でのバックアップの作成について。

 バックアップは、コマンド tar で圧縮ファイルを作成しますが、その時、下記の様にオプ
 ション --selinux を付けるとバックアップの各ファイルに設定されている SELinux のコ
 ンテキスト( SELinux ポリシー )も一緒にバックアップされるので復元先でも各ファイル
 は、バックアップ元と同じ SELinux のコンテキストになります。
 なお、解凍先でコマンド semanage fcontext -l -C でポリシーの設定内容を見ても何の表
 示もありません。このサーバ機では、何も設定して無い為です。但し、httpd-2.4.XX でバ
 ックアップした HTMLファイルを httpd-2.4.6 の HTMLファイルとして解凍しても SELinux
 のコンテキスト等は、引継ぎされませんので再設定が必要です。

       /bin/tar --selinux -zcvf ○○○○.tar.gz △△△△

       △△△△ : バックアップとして、まとめたいファイルを指定。複数ある時には、
                  半角スペースを入れて続けて指定します。
                  具体的には、下記のようにします。

             例   BackUP_Dir="/var/html/www/home_page"
                  BackUP_Dir="${BackUP_Dir} /home/miyasaka/home_page_date"
                            ・            ↑ 半角スペースを入れる事       ○○○○ : 圧縮後のファイル名を指定。○○○○の前に保存先ディレクトリを
                  指定します。
             例   /home/BackUP_Dir/back_www_data20180225.tar.gz ${BackUP_Dir}  バ
                 ックアップは、毎日行うので日付を入れておくと良いと思います。

---------------------------------------------------------------------------------

※ semanage fcontext と restorecon オプションの説明 ※

semanage fcontext -a -t    <----- ポリシーの宣言

    「-a」オプションを指定して、コンテキストの設定の追加を行うようにしています。
    「-t」オプションで、タイプ「httpd_sys_script_exec_t」のコンテキストを設定する
     ようにしています。
     ディレクトリの指定は、正規表現を用いる。例 "/www(/.*)?" : ディレクトリ 
     /www を指定 
    「-d」オプションで、ポリシーの削除を指定します。

restorecon -vF             <----- 強制的にポリシーを恒久的に設定する。

    「-R」オプションを指定して、ディレクトリの下層にもコンテキストの設定が行われる
          ようにします。
          単独ファイル時には、宣言しない。
    「-v」オプションを指定して、コンテキストの変更内容がコマンド実行結果に表示され
          るようにします。
    「/var/www/……/」は、設定対象のディレクトリになります。
    「-F」オプションを指定して、強制的に変更を適用します。指定しないと変わらない時
          があるので指定します。

semanage fcontext -l -C    <----- 自分で設定したポリシーの設定内容を見る


=================================================================================
  10-3. apache2 の SSL 化の手順と httpd.conf、httpd-ssl.conf の設定
=================================================================================

  ※※※ 注意事項 ※※※ 

  下記の設定で使用している www.smiyasaka.comsmiyasaka.com は、私のドメイン
  名です。
  コマンドをコピーする時には、あなたのドメインに変更して使用してください。

  ※※※ 設定の基本方針 ※※※

  1. http:// のアクセスを https:// に自動変換させる。
  2. LAN 内 IP アドレスでのサーバ機へのアクセスを可能にする。
  3. 秘密鍵は、無償の Let's Encrypt を使用する。
  4. SELinux は、有効( Enforcing )にしたまま使用する。

  ※※※ 設定の前提条件 ※※※

  1. 現在 http://(ドメイン) でホームページが公開されている事。
  2. httpd-2.4.41 のバージョンの apache2 を使用している事。
  3. epelレポジトリのインストールが完了している事。
  4. iptables のポート 80 と 443 が解放されている事
  5. モデムのポート 80 と 443 が解放されている事。

=================================================================================

1. 無償の Let's Encrypt を使用して認証鍵の証明書を取得に関しての詳細( インストー
   ル・証明書の取得 )は、[ CentOS-7-x86_64-DVD-1810 のインストールとサーバ構築 ]の[ 
   10-3. apache2 の SSL 化の手順と httpd.conf、httpd_ssl.conf の設定 ]を参照してく
   ださい。
   なお、この章での[ 認証鍵の証明書 ]の使用は、現用サーバ機のデータをコピーして使
   用しています。

---------------------------------------------------------------------------------
2. mod_ssl パッケージのインストール

  CentOS 6.10 では、mod_ssl のインストールは、不要です。

  インストールされている ssl.conf のバスの確認

  find / -name *ssl.conf

  /usr/local/src/httpd-2.4.41/docs/conf/extra/httpd-ssl.conf
  /usr/local/apache2/conf/extra/httpd-ssl.conf               <--- httpd-ssl.confの
                                                                 フルパス
  /usr/local/apache2/conf/original/extra/httpd-ssl.conf

  インストールされている mod_ssl.so の確認

  find / -name mod_ssl.so

  /usr/local/src/httpd-2.4.41/modules/ssl/.libs/mod_ssl.so
  /usr/local/apache2/modules/mod_ssl.so                      <---  これです。

---------------------------------------------------------------------------------
3. httpd-2.4.41 の SSL を有効にしたインストール
---------------------------------------------------------------------------------
   @ Apacheのソースコード httpd-2.4.41.tar.gz を展開する。
---------------------------------------------------------------------------------
  cd /usr/local/src; \
  tar xzvf httpd-2.4.41.tar.gz; \
  chown -R root. httpd-2.4.41; \
  cd ./httpd-2.4.41/srclib/
--------------------------------------------------------------------------------
    A APRとAPR-Utilのソースコードを
       Apacheのソースコード内 httpd-2.4.41/srclib/ に展開する。
--------------------------------------------------------------------------------
  tar xzvf /usr/local/src/apr-1.7.0.tar.gz; \
  chown -R root. apr-1.7.0/; \
  mv apr-1.7.0 apr; \
  tar xzvf /usr/local/src/apr-util-1.6.1.tar.gz; \
  chown -R root. apr-util-1.6.1/; \
  mv apr-util-1.6.1/ apr-util
--------------------------------------------------------------------------------
    B mod_ssl.so を追加して再インストール
--------------------------------------------------------------------------------
  cd /usr/local/src/httpd-2.4.41;\
  ./configure \
  --enable-ssl \             <---  SSL の追加
  --with-included-apr \
  --enable-rewrite \
  --enable-so \
  --enable-deflate=shared
---------------------------------------------------------------------------------
4. Apache の SSLの設定 ssl.confファイルの編集

   DocumentRoot、ServerName、ErrorLog、CustomLog 等は、httpd.conf と同じ設定をします。

   原本は、保存しておきます。

   cp /usr/local/apache2/conf/extra/httpd-ssl.conf\
       /home/miyasaka/httpd-ssl.conf.bak

   vi /usr/local/apache2/conf/extra/httpd-ssl.conf

---------------------------------------------------------------------------------
    52行目あたり  SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
           ↓    ↓
        SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES:!DH

    53行目あたり  SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
           ↓    ↓
        SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES:!DH

    79行目あたり  SSLProtocol all -SSLv3
           ↓    ↓
        SSLProtocol all -SSLv2 -SSLv3

    80行目あたり  SSLProxyProtocol all -SSLv3
           ↓    ↓
        SSLProxyProtocol all -SSLv2 -SSLv3

   124行目あたり  DocumentRoot "/usr/local/apache2/htdocs"
           ↓    ↓
        DocumentRoot "/var/www/html/www.smiyasaka.com"

   125行目あたり  ServerName www.example.com:443
           ↓    ↓
        ServerName (サーバ機のホスト名):443 
     
   126行目あたり  ServerAdmin you@example.com
           ↓    ↓
        ServerAdmin (メールアドレス)

   127行目あたり  ErrorLog "/usr/local/apache2/logs/error_log"
           ↓    ↓
        ErrorLog "| /usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/
        (長いので二行表示です)       www.smiyasaka.com_error_log_%Y%m%d 86400 540"

   133行目あたりに以下を追加する

      Header set Strict-Transport-Security "max-age=315360000;includeSubDomains"

        上記の設定は、HSTS (HTTP Strict Transport Security) の導入になります。
                   
        これは、HTTPで接続した際に、強制的にHTTPSへリダイレクトし、以降のそのドメ
        インへの接続はすべてHTTPSとする機能です。
                          315,360,000 秒 というのは 3,650 日間 (10年間)

   144行目あたり  SSLCertificateFile "/usr/local/apache2/conf/server.crt"
           ↓    ↓
        # 証明書を指定する
        SSLCertificateFile "/etc/letsencrypt/live/www.smiyasaka.com/cert.pem"

   154行目あたり  SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"
           ↓    ↓
        # 秘密鍵を指定する
        SSLCertificateKeyFile "/etc/letsencrypt/live/www.smiyasaka.com/privkey.pem"

   165行目あたり  #SSLCertificateChainFile "/usr/local/apache2/conf/server-ca.crt"
           ↓    ↓
        # 取得した中間証明書を指定
        SSLCertificateChainFile /etc/letsencrypt/live/www.smiyasaka.com/chain.pem

   249行目あたり  <Files ~ "\.(cgi|shtml|phtml|php)$">
           ↓    ↓
        <FilesMatch "\.(cgi|shtml|html)$"$gt;
 
   252行目あたり  <Directory "/var/www/cgi-bin">
           ↓    ↓
        <Directory "/var/www/html/www.smiyasaka.com">

        コメントアウトする
   287行目あたり  #CustomLog "/usr/local/apache2/logs/ssl_request_log" \
   288行目あたり  #          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
           ↓    ↓
        CustomLog "| /usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/
(長いので3行表示です)   www.smiyasaka.com_access_log_%Y%m%d 86400 540"
                         combined env=!no-logfile

        ※※     ここからは、SSL でも圧縮処理をしたい時に追加してください。※※

        #---------------------------------------------------------------
        # 転送データの圧縮設定(画像以外全て圧縮する)
        #            実際の圧縮率は、1 も 3 も大差ありません
        #---------------------------------------------------------------
        <IfModule mod_deflate.c>
        # 圧縮レベル 1 に設定
             DeflateCompressionLevel 1
        #
            # 全てを圧縮する設定
            SetOutputFilter DEFLATE
            #
            # gzip圧縮に対応していない古いブラウザを除外
            # Netscape 4.x has some problems...
        # 送信先ブラウザがNetscape 4.xの場合はtext/htmlのみ圧縮
            BrowserMatch ^Mozilla/4 gzip-only-text/html
            # Netscape 4.06-4.08 have some more problems
        # 送信先ブラウザがNetscape 4.06-4.08の場合は圧縮しない
            BrowserMatch ^Mozilla/4\.0[678] no-gzip
            # MSIE masquerades as Netscape, but it is fine
        # 送信先ブラウザがMSIEの場合は全て圧縮する
            BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
            #
            # 画像以外全て圧縮する
            # Don't compress images
            SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
            #
            # Make sure proxies don't deliver the wrong content
        # プロキシサーバーが圧縮未対応ブラウザへ圧縮ファイルを送信しないようにする
            Header append Vary User-Agent env=!dont-vary
        # html や css, js, javescript などは個別指定
            AddOutputFilterByType DEFLATE text/plain
            AddOutputFilterByType DEFLATE text/html
            AddOutputFilterByType DEFLATE text/xml
            AddOutputFilterByType DEFLATE text/css
            AddOutputFilterByType DEFLATE text/js
            AddOutputFilterByType DEFLATE text/javascript
            AddOutputFilterByType DEFLATE application/xhtml+xml
            AddOutputFilterByType DEFLATE application/xml
            AddOutputFilterByType DEFLATE application/rss+xml
            AddOutputFilterByType DEFLATE application/atom_xml
            AddOutputFilterByType DEFLATE application/js
            AddOutputFilterByType DEFLATE application/javascript
            AddOutputFilterByType DEFLATE application/x-javascript
            AddOutputFilterByType DEFLATE application/x-httpd-php
        #
            # 圧縮の確認用ログ設定
            # 不要になったら、# で無効にしておく事。
            # Deflateが有効になっているか確認するログの出力
            #
            DeflateFilterNote Input instream
            DeflateFilterNote Output outstream
            DeflateFilterNote Ratio ratio
            LogFormat '"%r" %{outstream}n/%{instream}n\
            (%{ratio}n%%) %{User-agent}i' deflate
            CustomLog logs/deflate_log deflate
        </IfModule>
        #--------------------------------------------------
        # セキュリティ対策のため、最終行に追加しておきます。
        # サーバ署名(バージョンとサーバ名)のOFF
        ServerSignature Off
        #

---------------------------------------------------------------------------------
5. Apache の SSL の設定 httpd.conf ファイルの編集

   10-1 項の設定が完了してから、下記4ヶ所を変更します。

   vi /usr/local/apache2/conf/httpd.conf

   〇 mod_socache_shmcbを有効化するには、「httpd.conf」で以下の設定のコメントアウ
     トを解除します。

    88行目あたり #LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
                 ↓    ↓
       LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

      尚、mod_socache_shmcb.soは、httpdに含まれています。

   〇 mod_ssl.so の読み込みを行うには、以下の設定のコメントアウトを解除します

   133行目あたり #LoadModule ssl_module modules/mod_ssl.so
                 ↓    ↓
       LoadModule ssl_module modules/mod_ssl.so

   〇 https:// のアクセスを https:// に変換させる処理の追加の為、mod_rewrite.so を
      有効にします。

   152行目あたり #LoadModule rewrite_module modules/mod_rewrite.so
                 ↓    ↓
       LoadModule rewrite_module modules/mod_rewrite.so

   〇 「httpd-ssl.conf」の読み込みを行うには、以下の設定のコメントアウトを解除します。

   494行目あたり #Include conf/extra/httpd-ssl.conf
                 ↓    ↓
       Include conf/extra/httpd-ssl.conf

---------------------------------------------------------------------------------
7. http:// のアクセスを https:// に自動変換させる処理( 301リダイレクト )の追加

   .htaccess ファイルを作成し、下記コマンドを書込み、ドキュメントルート上に書込み
   ます。

   ( LAN 内 IP アドレスでのサーバ機へのアクセスも可能になります。)

   --------------------------------------------------------------
   <IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteCond %{HTTPS} off
   RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
   </IfModule>
   --------------------------------------------------------------

  ※ 参考情報 ※ 

     上記の設定をしなかった時には、http:// と https:// 共用になります。

---------------------------------------------------------------------------------
8. エラーのチェック

   /usr/local/apache2/bin/apachectl configtest

  「 Syntax OK 」と表示されればOKです。

---------------------------------------------------------------------------------
9. SELinux 対策  httpd からの秘密鍵のR/Wを有効にする。

semanage fcontext -a -t httpd_sys_rw_content_t\
 "/etc/letsencrypt/live/www.smiyasaka.com(/.*)?"; \
restorecon -R -vF /etc/letsencrypt/live/www.smiyasaka.com/

           上記設定の確認

   ls -Z /etc/letsencrypt/live/www.smiyasaka.com/

----------------------------------------------------------------------------------
10. apache2 を起動して https://(サーバ機の LAN 内 IP アドレス)でアクセス

   /usr/local/apache2/bin/apachectl start

   Windows PC の Web で、サーバ機の LAN 内 IP アドレスを使いアクセスする。

   (サーバ機の LAN 内 IP アドレス)
   
   この結果、セキュリティの警告が表示すれば OK です。
   アクセス先の URL が、 https://(サーバ機の LAN 内 IP アドレス)に成っている事を確
   認してください


=================================================================================
  11. fswebcom-20140113.tar.gz のインストールと定点カメラの設定
=================================================================================
※ 注意 ※ CentOS 6.X では、BUFFLOAD のカメラは、使用できません。
---------------------------------------------------------------------------------
  2014年 1月にリリースされたfswebcam-20140113.tar.gzバージョンをインストールしま
  した。
  このバージョンは、タイトルの日本語が文字化けしますので、タイトルに文字を設定す
  る時には、必ず E の処理を忘れずして下さい。fswebcam-20140113.tar.gz のインストール手順

  @ 依存関係のあるパッケージのインストール

     cd /usr/local/src/; \
     rpm -ivh libXpm-3.5.10-2.el6.x86_64.rpm; \
     rpm -ivh libjpeg-turbo-devel-1.2.1-3.el6_5.x86_64.rpm; \
     rpm -ivh libXpm-devel-3.5.10-2.el6.x86_64.rpm
     rpm -ivh gd-2.0.35-11.el6.x86_64.rpm; \
     rpm -ivh gd-devel-2.0.35-11.el6.x86_64.rpm

     yum でのインストールは、下記の通りです。

     cd /usr/local/src/; \
     yum -y install libXpm libjpeg-turbo-devel libXpm-devel gd gd-devel


  A fswebcam-20140113 の展開と configure

     tar zxvf fswebcam-20140113.tar.gz;\
     cd ./fswebcam-20140113; \
     ./configure --prefix=/usr

     以下で、終われば、OK 
   -------------------------------------------------------
     checking for working mmap... yes
     checking for gdImageCreateTrueColor in -lgd... yes
     checking for gdImageStringFT in -lgd... yes
     checking for gdImageJpeg in -lgd... yes
     checking for gdImagePngEx in -lgd... yes

        Buffer type ........... 16 bit
        PNG support ........... yes
        JPEG support .......... yes
        Freetype 2.x support .. yes
        V4L1 support .......... yes
        V4L2 support .......... yes

     configure: creating ./config.status
     config.status: creating Makefile
     config.status: creating config.h

  B make と インストール

     make && make install

     以下で、終われば、インストールOK です。
    ------------------------------------------------------
     mkdir -p /usr/bin
     mkdir -p /usr/share/man/man1
     install -m 755 fswebcam /usr/bin
     install -m 644 fswebcam.1.gz /usr/share/man/man1

  C Logicool C270 の UVC 対応 USB カメラの輝度・明るさの調整は、下記の様に設定し
    ています。

     -s Brightness=65%
     -s Contrast=15%   <----  明るさは、ここまで下げないと綺麗な画像になります。

  D Logicool C270 のカメラが認識された時の認識データは、 
                                  cat /proc/bus/usb/devices で下記の様になります。

     S:  SerialNumber=E981E810
     ( E981E810 は、USB カメラのシリアル番号なので同一機種でも、カメラを入れ替えれ
       ば変わります。)

  E タイトルの文字化け対策

     cron で一分毎に実行させるコマンドにシステムの文字コード環境変数の文字コードを
     変更するコマンドを下記の様( 私のサーバ機の環境の場合 )に追加する。
     fswebcam-20100622.tar.gz のバージョンでは、文字化け起こりませんので不要です。

      */1 6-18 * * * /var/www/html/www.smiyasaka.com/webcam/webcam.sh
                            ↓↓↓
      */1 6-18 * * * export LANG=ja_JP.eucJP; /var/www/html/…………/webcam.sh

  webcam.sh は、私が作成した USB カメラで撮影するシェルスクリプトのプログラムです。
  fswebcomを使った定点カメラの実現方法については、定点カメラの実現方法のペー
  ジで詳細に解説していますので参考にしてください。

                ※※   fswebcam で実現した 1分更新の定点カメラの映像です。  ※※
  上の映像は、我が家の東側の窓に取り付けた USB カメラで撮影した今の映像です。
           ( なお、17:00 〜 06:00 の間は、撮影を停止しています。)
  ここの映像の表示は、iframe を使用して、フレーム内だけを 30秒ごとに更新して表示し
  ています。

  HTML のプログラムは、こんな具合にします。( フレームの枠は、cssで定義しています。)

  <iframe src="./( 30秒ごとに更新して表示するページ ).html" frameborder="0"
     scrolling="no"marginwidth="0" marginheight="0" width="406" height="296">
    表示できません。</iframe>

    frameborder="0"    <---  境界線を表示しない
    scrolling="no"     <---  スクロールバーなし
    marginwidth="0"    <---  横方向余白なし
    marginheight="0"   <---  縦方向余白なし

---------------------------------------------------------------------------------
     ※※  iframe を使用した プログラム(例) ※※

		省略
    本体ページでは、30 秒毎の画面更新は、不要になります。
	<meta http-equiv="Refresh" content="30">
    </head> 
    
    <body>
    <div>
  <table border="0" width="100%"><col width="100%">
  <tr><td align="left" valign="top">
    iframe の枠線・スクロールバーは、表示なし・余白なしにします。
  <iframe src="./○○○○.html" frameborder="0" scrolling="no" marginwidth="0"
         marginheight="0" width="497" height="366">表示できません。</iframe>
  </td></tr>
  </table>
  </div></body></HTML>

    ※※  iframeからリンクするページ(○○○○.html)の HTML  ※※
    写真の枠線は、こちら側で設定します。
		省略
    30 秒毎の画面更新は、ここで設定します。
	<meta http-equiv="Refresh" content="30">
    </head> 
    <style type="text/css"><!--
    	/* 表示領域 枠線設定 */
    table.wakusen {border: solid 1px #649633; border-collapse: collapse;}
   	--></style>
  </head>
    <body>
    <div>
  <table class="wakusen" border="0" width="100%"><col width="100%">
  <tr><td align="left">
  <img src = "./webcam/camdata.jpg"  width="494" height="362"
         title="鬼北町の今の風景写真を表示中" alt="鬼北町の今の風景写真を表示中>
  </td></tr>
  </table>
  </div></body>
  </HTML>

---------------------------------------------------------------------------------

=================================================================================
  12. clamd( アンチウィルスソフト )のインストール
=================================================================================clamd のインストール手順

 @ clamd のインストール

    cd /usr/local/src; \
    rpm -Uvh clamav-db-0.100.1-2.el6.x86_64.rpm; \
    rpm -Uvh clamav-0.100.1-2.el6.x86_64.rpm; \
    rpm -Uvh clamd-0.100.1-2.el6.x86_64.rpm

     yum でのインストールは、下記の通りです。

    cd /usr/local/src; \
    yum -y install clamd

 A clamd設定ファイル編集
    root権限で動作するようにする。

    vi /etc/clamd.conf

    :194 で194行目へジャンプ

    User clamv
     ↓
    #User clamv  <----  コメントアウトする。

    sed コマンドで直接編集する。  念のため、オリジナルのバックアップを取ってから編
    集します。

cp /etc/clamd.conf /home/miyasaka/clamd.conf.bak; \
sed -i -e "s/User clam/#User clam/g" /etc/clamd.conf

 B clamdの起動と自動起動設定

    /etc/rc.d/init.d/clamd start
    chkconfig clamd on

 C ウィルス定義ファイル最新化

    freshclam

    ※ 定義ファイルのダウロードが極端に遅い時には、一度 [Ctrl]+c で強制終了させ再
       度実行させて見てください。

 D ウィルススキャン実行スクリプト作成

    作成方法は、下記リンクの「アンチウィルスソフト導入(Clam AntiVirus)」を参照して
    ください。

 E セルフチェックの頻度をへんこうする。

    初期設定では、10分に1回(24時間では、144回になる。)になっているので回数を30分に
    1回(24時間では、48回になる。)に変更する為、clamd.conf を編集する。

    Logwatch の rooo宛てメールを見ると下記のようなっています。

    --------------------- Clamav Begin ------------------------ 
 
     Daemon check list:
       Database status OK: 144 Time(s)  <----  ここが、セルフチェックの回数
                                                  48回になります。
    
    ---------------------- Clamav End -------------------------

    vi /etc/clamd.conf

    :186 で186行目へジャンプ

186 # SelfCheck 600   <----  単位は、秒,10分は、10 × 60 = 600
           ↓    ↓
      SelfCheck 1800  <----  コメントを取り、1800 にする。

    sed コマンドで直接編集する。  念のため、オリジナルのバックアップを取ってから編
    集します。

cp /etc/clamd.conf /home/miyasaka/clamd.conf.bak; \
sed -i -e "s/#SelfCheck 600/SelfCheck 1800/g" /etc/clamd.conf

    変更後再起動します。

   /etc/init.d/clamd restart

   下記の様に表示すれば、OKです。( チョット時間がかかります。)
   --------------------------------------------------------------------
   Stopping Clam AntiVirus Daemon:                            [  OK  ]
   Starting Clam AntiVirus Daemon:                            [  OK  ]
   --------------------------------------------------------------------

   Linux用のフリーのアンチウィルスソフトであるClam AntiVirus のインストール・設定
   方法は、下記サイトに詳しく紹介されていますので参考にしてください。

  ※ 参考にしたサイト   アンチウィルスソフト導入(Clam AntiVirus)

---------------------------------------------------------------------------------

○ yum を使用して ClamAV のバージョンアップする手順  H28.01.24 追加

   clamd のバージョンは、その時点での最新版を使用しないとウィルス定義ファイル更新
   時に下記の様にバージョンが古いと警告されてしまいます。
   ( 下記の警告は、0.100.1-1 の時に、0.98.7 を使用した時の警告です。 )

    WARNING: Your ClamAV installation is OUTDATED!
    WARNING: Local version: 0.98.7 Recommended version: 0.100.1-1

 @ ClamAVは EPELレポジトリにあるので、EPELレポジトリを追加します。
    ここでは、EPELレポジトリを yum でインストールするのでなく、rpmのパッケージでの
    インストールをしてみます。

    ダウロードは、[ここをクリック(epel-release-6-8.noarch.rpm)]して下さい。

 A EPELレポジトリのインストール

    rpm -ivh epel-release-6-8.noarch.rpm

    インストール後は、EPELレポジトリをアップデートして下さい。

    yum -y --enablerepo=epel update epel-release

 B yum で ClamAV をアップデートします。

    yum -y --enablerepo=epel update clamav

 C バージョンを確認してみます。

    バージョンの確認コマンド

    rpm -qa | grep clam

    アップデート前のバージョン

    clamd-0.100.1-2.el6.x86_64
    clamav-db-0.100.1-2.el6.x86_64
    clamav-0.100.1-2.el6.x86_64

      ↓   ↓   ↓

    アップデート後のバージョン H30.09.24現在

    clamd-0.100.3-1.el6.x86_64
    clamav-0.100.3-1.el6.x86_64
    clamav-db-0.100.3-1.el6.x86_64


=================================================================================
  13. chkrootkit のインストール
=================================================================================

  @ chkrootkit のインストール時のエラー対策

     make で「 chkrootkit /usr/bin/ld: cannot find -lc 」エラーが、出るので不足パ
     ッケージ glibc-static をインストールしておきます。

  cd /usr/local/src; \
  rpm -Uvh glibc-static-2.12-1.132.el6_5.4.x86_64.rpm <---- CentOS 6.5 の時

  rpm -Uvh glibc-static-2.12-1.149.el6.x86_64.rpm     <---- CentOS 6.6 の時

  CentOS 6.7 の時には、依存性が多いので yum でインストールします。

     cd /usr/local/src/; \
     yum -y install glibc-static

  A chkrootkit のインストール

     cd /usr/local/src; \
     tar zxvf chkrootkit.tar.gz; \
     cd chkrootkit-0.50; \
     make sense; \
     mv ./chkrootkit /usr/bin/chkrootkit

  B 起動用シェルスクリプトの作成

     cd /usr/local/src; \
     vi rootkit.sh
  -----------------------------------------------------------
  #!/bin/sh
  # コマンドパスの設定
  PATH=/usr/bin:/bin:/root/bin  <----  環境変数へ chkrootkit のパス設定
  #
  LOG='/var/log/chkrootkit.log'

  # chkrootkit実行
  ##  [Searching for Suckit rootkit... Warning: /sbin/init INFECTED] は、
  ##  当然誤検知で出るので事前にカットしておく。

  chkrootkit | grep INFECTED | egrep -v "/sbin/init" > ${LOG} 

  if [ ! -z "$(grep INFECTED$ ${LOG})" ]; then    <----  改ざんがあったかチェック

      #  改ざんがあった時の root 宛メール
      #  upstartパッケージ更新時のSuckit誤検知対策
      if ! rpm -V `rpm -qf /sbin/init` >/dev/null 2>&1;
        then
          cat "$(grep INFECTED$ ${LOG})" | mail -s "*** rootkit discovery ***" root
      fi
  else
       # 改ざんが無かった時の root 宛メールの出力の有
       echo "**** rootkit check OK ****"     <----  手動実行時の確認メッセージ
       echo "**** rootkit check OK ****" | mail -s "*** rootkit check ***" root 
  fi
  #
  chmod 600 ${LOG}
  -------------------------------------------------------------------------------
  ※ 参考情報 ※   if ! rpm -V `rpm -qf /sbin/init` > /dev/null 2>&1; とは、何か?

   rpm -qf ○○○○は、
        パッケージ名○○○○が、どのRPMパッケージでインストールされているかを調べ
        るコマンドです。

   rpm -V ○○○○は、パッケージ名○○○○が、改ざんされていないかを検証するコマン
       ドです。
       改ざんがなかった時には、何の出力もありません。

   私のサーバ機で rpm -qf /sbin/init 実行すると upstart-0.6.5-13.el6_5.3.x86_64 
   のパッケージ名が得られました。

   if ! ○○○○は、○○○○の文字列が、0 の時に then 以下が実行されます。
   つまり、「/sbin/init」のパッケージがアップデートされた時には、改ざんなしとする
   処理です。
    > /dev/null 2>&1; で出力結果とエラーメッセージは、捨てられます。

   なお、本当に改ざんがあり、かつ、「/sbin/init」のパッケージがアップデートされた
   時には、改ざんなしになってしまいます。
  -------------------------------------------------------------------------------

  C rootkit.sh に属性設定

     chmod 700 rootkit.sh

  D 毎日2時に実行するよう cron に設定する。
     0 2 * * * /usr/local/src/rootkit.sh

  E ハッカーの攻撃にあったかの確認

     root 宛てにメールが、来ているので確認する。
     mail コマンドを入力して rootkit check OK が、表示すれば、ハッカーの攻撃は、
    なしです。

 詳細の設定は、下記サイトを参考にしてください。
  ※ 参考にしたサイト   rootkit検知ツール導入(chkrootkit)


=================================================================================
  14. sendmail のインストール
=================================================================================

  ○ root 宛てのメールは、sendmail が、無いと来ないみたいのでインストールします。

    cd /usr/local/src; \
    rpm -ivh hesiod-3.1.0-19.el6.x86_64.rpm; \
    rpm -ivh procmail-3.22-25.1.el6.x86_64.rpm; \
    rpm -ivh sendmail-8.14.4-8.el6.x86_64.rpm

   yum でのインストールは、下記の通りです。

    yum -y install sendmail

    yum でインストールした時には、sendmail を起動する必要があります。

    /etc/rc.d/init.d/sendmail start

    sendmail を起動中:                                         [  OK  ]
    sm-client を起動中:                                        [  OK  ]

    root 宛てのメールは、mail コマンドでみます。詳細は、下記サイトを参考にしてく
    ださい。

  ※ 参考にしたサイト   mail コマンドの使い方


=================================================================================
  15. Logwatch のインストールと毎日のメールを簡単にチェックする方法
=================================================================================

  ○ サーバー上のログを定期的にまとめ、集約してレポートを出してくれるソフトウェア

     cd /usr/local/src/; \
     rpm -ivh perl-YAML-Syck-1.07-4.el6.x86_64.rpm; \
     rpm -ivh perl-Date-Manip-6.24-1.el6.noarch.rpm; \
     rpm -ivh logwatch-7.3.6-49.el6.noarch.rpm

     yum でのインストールは、下記の通りです。

     yum -y install logwatch

    Logwatch のインストールは、依存関係から、下記の順序で行ってください。

  ○ logwatch.conf は、下記の箇所を変更して 実行させれば root宛てにメールがきます。

※ 参考 ※
  1行毎直すのが面倒な時には、sed コマンドで下記の様にすると同じ事ができます。
  念のため、バックアップを取ってから置換します。

cp /usr/share/logwatch/default.conf/logwatch.conf\
 /home/miyasaka/logwatch.conf.bak; \
sed -i -e "s/#Archives = No/Archives = Yes/g
s/Detail = Low/Detail = Med/g
s/sendmail -t/sendmail -t -f root@localhost/g"\
 /usr/share/logwatch/default.conf/logwatch.conf

    vi /usr/share/logwatch/default.conf/logwatch.conf 

    アーカイブされたログも含めるかどうか
    60行目  コメントアウトの解除
    #Archives = Yes
    ↓
    Archives = Yes

    ログの詳細度、Low (=0), Med (=5), High (=10) または 0から10までの数字。
    72行目   私の場合、Med にしました。
    Detail = Low
             ↓
    Detail = Med

    メールコマンドパスの変更
    109行目 rooo宛てにする。
    [ Can't execute sendmail -t: No such file or directory ]というエラーが出るので
      修正します。

    mailer = "sendmail -t"
      ↓   ↓   ↓ 
    mailer = "sendmail -t -f root@localhost"


  ○ Logwatch の定時実行は、cron.daily の設定で午前 3時から 4時頃の間のランダムな
     時刻に毎日実行されるので、crontab に設定する必要は、無いようです。

  ○ Logwatch の rooo宛てメールを毎日簡単にチェック出来るように下記のような
     プログラムを作ってみました。

    1. Logwatch の rooo宛てメールを前日の日付でユーザーエリヤに保存するとともに、
       パスワードのかかったヘージから、ホームページから日にちを指定して見られるよ
       うにしています。

    2. 保存したLogwatch の rooo宛てメールは、10日間としそれ以前は、削除する
       ようにした。

    3. プログラムは、cron で毎日一回4時以降に実行させています。

    4. /var/spool/mail/root のメールデータは、本プログラムで転送後肥大を防ぐた
       め削除しています。

    5. また、ついでに chkrootkit 実行結果・DiCE のイベントログも同時に見られる
       ようにもしています。

        こんな具合に表示します。

  表示例

  ○ 11/14 7:34 デーモン動作を開始しました
  ○ 11/14 11:26 デーモン動作を開始しました
  ○ 11/14 11:26 IPアドレスが変わりました >123.215.114.234  <---- 変更後のグロバル
  ★ 11/14 11:27 に(イベント名が表示)が実行されました                IPアドレス
    IPアドレスを更新しました
  ○ 11/14 11:45 デーモン動作を開始しました

※※ 参考情報 ※※
   corn で定時的に実行させている処理のコマンドの最後に [  > /dev/null 2>&1 ] を付
  けましょう。これを付けないと実行結果が rooo宛てメールとして残ってしまいます。
( これは、実行結果を表示させない処理です。 メールデータの肥大化防止にもなります。)

   6. DiCE のイベントログの rooo宛てメールは、シェルスクリプトで簡単なプログラ
      ムを作り IPアドレスの更新が7日毎なので、これに合わせて、週一回 cron で
      実行させています。
      ( DiCE の IPアドレスの更新実行は、起動した日を基準に繰返し行われます。 )

   7. Logwatch の rooo宛てメールは、漢字があるので文字化けしない様に漢字コードを
      Jcode で Shift_JIS 変換にしてユーザーエリヤに保存しています。

   8. rooo宛てメールをホームページエリヤに移動保存すると、不正に見られることがあ
      るかもしれないので、移動保存は、ホームディレクトリにしていますが、perl では、
       cp ( コピーコマンド )使えないので、ユーザーエリヤに保存してあるメールデータ
      を読みだすため、open コマンドで変数( get_data )に書込む方法をとりました。
      コピーコマンド( cp )の替りに open を使つてプログラムを組むとデータの読込みが
      簡単になり、便利です。皆さんも是非マスターしてください。

          open( get_data, "<ユーザーエリヤの保存先のパス+ファイル名");

 下記がシェルスクリプト・cgi のプログラムと Logwatch の rooo宛てメールの内容です。
 ユーザーエリヤ等のパスは、○表記にしていますが、使用するときには、あなたの環境
 に合わせてください。

    ※ 注意 ※
    「rooo宛てメール」が見られる様になるのは、システムを起動後、翌々日からになり
     ますので注意してください。

[ Logwatch の rooo宛てメールをホームページとして簡単にみられるプログラム一式 ]
                                           の詳細は、[ここをクリック]してください。

  ○ rooo宛てメールで
            [ Searching for Suckit rootkit... Warning: /sbin/init INFECTED ]の
     メッセージがある時に、chkrootkit の誤検知かを判断する方法

    1. サーバ機にログインして rpm -qf /sbin/init のコマンドを入力して、インスト
       ールされているパッケージ名を確認します。

       CentOS 6.4 の場合、upstart-0.6.5-12.el6_4.1.i686 でした。

    2. Logwatch の rooo宛てメール内の yum によるアップデート情報をチェックします。
       私のサーバ機でのrooo宛てメールの表示例です。

      --------------------- yum Begin ------------------------ 
          Packages Updated:
          libcom_err-devel-1.41.12-14.el6_4.2.i686
          libss-1.41.12-14.el6_4.2.i686
          e2fsprogs-1.41.12-14.el6_4.2.i686
          e2fsprogs-libs-1.41.12-14.el6_4.2.i686
          upstart-0.6.5-12.el6_4.1.i686
          libcom_err-1.41.12-14.el6_4.2.i686
      ---------------------- yum End -------------------------

    3. /sbin/init にインストールされているパッケージがアップデートされているの
       でこの場合は、誤検知になります。

    4. メッセージの消去は、サーバ機を reboot する事により、次回からは、出なくな
       るそうです。
       ( 私は、試してはいませんが、私の場合には、予備機に入れ替えています。)


=================================================================================
  16. 漢字コード変換用に nkf のインストール 
=================================================================================
  ○ apache のアクセスログの文字化けを修正するための漢字コード変換パッケージ nkf 
     をインストールします。

※※ 参考情報 ※※

     漢字コードの変換は、Jcode より nkf の変換の方が使用方法が簡単に済ます。

  ○ nkf のインストール

    cd /usr/local/src; \
    tar zxvf nkf-2.1.5.tar.gz; \
    cd nkf-2.1.5; \
    make && make install

    以下で、終われば、OK 
    -----------------------------------------------------------
    mkdir /usr/local/bin     <---- ここが nkf のフルパスです。
    mkdir: ディレクトリ `/usr/local/bin' を作成できません: ファイルが存在します
    make: [install] エラー 1 (無視されました)
    mkdir /usr/local/man
    mkdir /usr/local/man/man1
    mkdir /usr/local/man/ja
    mkdir /usr/local/man/ja/man1
    cp -f nkf /usr/local/bin/
    cp -f nkf.1 /usr/local/man/man1/
    cp -f nkf.1j /usr/local/man/ja/man1/nkf.1
    -----------------------------------------------------------
  ○ nkf の使用方法

     私のサーバ機の環境では、EUC-JP コードを ホームページ表示コード Shift_JIS に変
     換するので下記の様な設定をします。
     なお、cronで自動実行させる時には、パスが通らないのでフルパスで nkfコマンドを
     実行させてください。

     1) 変換後上書き保存する時は、

     /usr/local/bin/nkf -s --overwrite ( 元ファイルのフルパス )

       -s : 変換コード Shift_JIS 指定
       -e : 変換コード EUC 指定 

     ( オプション --overwrite を付けると変換後のテキストデータが上書きされます。)

     2) 変換後別ファイルへ保存する時は、

     /usr/local/bin/nkf -s (元ファイルのフルパス) > (保存先ファイルのフルパス 

  ○ ファイルの文字コードの確認

     GMODE でのコマンド実行は、パス不要です。  
     結果は、Shift-JIS, EUC-JP の様に表示します

     nkf -g ( ファイルのフルパス )

  ○ コマンドのフルパスの確認

     Linux のコマンドのフルパスは、which コマンドで確認できます。

     例 nkf の場合

        which nkf   --->  /usr/local/bin/nkf

  ○ perl,シェルスクリプト(sh)でnkfを使用する時にも、パスが通らないのでフルパスで
     コマンドを記述してください。

  ○ cron で起動させる perl, シェルスクリプト(sh)で日本語を使用する時の文字化け対策

    1. Tera Term 使用して遠隔管理しているサーバ機では、ユーザの文字コードを初期設
       定で eucJP( EUC )に変更しているので cron で起動させる perl, シェルスクリプト
       (sh)で nkf を使用する時には、root 権限の文字コード( ja_JP.UTF-8 )になるので
       下記の様に文字コードを一時的に変更して実行させてください。

       11 */1 * * * export LANG=ja_JP.eucJP; /(DocumentRoot)/ondo_○○○.pl

    2. 日本語を含むデータをコマンド等で取得・解析する時には、nkf コマンドで EUC コ
       ードに変換してから解析をして下さい。
       Tera Term 等から実行した時には、上手く動くのに「 cron での実行時には、設計
       道理にならない 」という現象が発生します。
       ( Tera Term の文字コードが EUC 、サーバ側のユーザー文字コードも EUC になっ
         ているからです。)

    3. cron で起動させた perl のプログラムで日本語を使用して無くとも、プログラム内
       から、実行させるシェルスクリプト(sh)内で日本語を使用している時には、
       export LANG=ja_JP.eucJP;  を追加して実行させてください。

=================================================================================
※※ 参考情報 ※※

  ○ apache のアクセスログの文字化けを修正するための漢字コード変換パッケージ
     Jcode をインストールします。

    cd /usr/local/src; \
    tar zxfv Jcode-2.07.tar.gz; \
    cd ./Jcode-2.07; \
    perl Makefile.PL; \
    make; \
    make install

    以下で、終われば、OK 
    -----------------------------------------------------------
    Jcode-2.07/Unicode/Unicode.xs
    Checking if your kit is complete...
    Looks good
    Writing Makefile for Jcode
    cp Jcode/Nihongo.pod blib/lib/Jcode/Nihongo.pod
    cp Jcode.pm blib/lib/Jcode.pm
    Manifying blib/man3/Jcode::Nihongo.3pm
    Manifying blib/man3/Jcode.3pm
    Installing /usr/local/share/perl5/Jcode.pm
    Installing /usr/local/share/perl5/Jcode/Nihongo.pod
    Installing /usr/local/share/man/man3/Jcode::Nihongo.3pm
    Installing /usr/local/share/man/man3/Jcode.3pm
    Appending installation info to /usr/lib/perl5/perllocal.pod


=================================================================================
  17. 自宅サーバの管理・運用監視対策等
=================================================================================

 1 ). DiCEの設定(実行)時ののエラー対策

      ./diced で DiCE を起動した時、下記エラーが出るので ld-linux.so.2 をインスト
      ールします。
   ------------------------------------------------------------------------------
   -bash: ./diced: /lib/ld-linux.so.2: bad ELF interpreter: そのようなファイルや
          ディレクトリはありません
   ------------------------------------------------------------------------------
   この原因は、DiCE のパッケージが 32bit ベースで作られている為、OS 側に必要とする
   パッケージが不足しているからです。
   
   32bit ベースのパッケージの依存関係がチョット複雑なので ここは、yum でインストー
   ルします。

      yum -y install ld-linux.so.2

 2 ). DiCE 起動後 「 IPアドレスチェック タイムアウト 」が、頻発する時の対処方法

      DiCE 起動後は、下記コマンドでエラーが無いか確認しましょう。

      cat /usr/local/DiCE/log/events.log

      もしも、「 × 12/6 13:41 IPアドレスチェック タイムアウト 」のメッセージが出て
      いる時には、設定内容を確認した上で Linux システムを再起動してみてください。

      なお、DiCE の setup 「IPアドレスの検出方法を指定してください」で「(2) 外部の
      スクリプトから検出」に設定し、VALUE DOMAIN が提供しているIPアドレスの検出サ
      ービスのURLに変更しています。

      なお、URL は、http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip です。

      「(0) 自動検出」では、上手く検出できないようです。????

      ちなみに、デフォルトでは、下記のサイトが設定されていました。
         http://www.hi-ho.ne.jp/cgi-bin/user/yoshihiro_e/ip_chk.cgi
         http://hpcgi3.nifty.com/sarad/ip_check.cgi
         http://checkip.dyndns.org/

      私の場合、ネット上に色々解説がされていることを試しましたが、止まりませんでし
      たが再起動後、12 分毎に出ていたエラーが、ぴったりと止まりました。

 3 ). CPU 温度を取得する sensors コマンドのインストール

      cd /usr/local/src; \
      rpm -Uvh lm_sensors-libs-3.1.1-17.el6.x86_64.rpm; \
      rpm -Uvh lm_sensors-3.1.1-17.el6.x86_64.rpm

      yum でのインストールは、下記の通りです。

      yum -y install lm_sensors

      CPU 温度を取得する方法は、[ 18. 自宅サーバの管理・運用監視・アクセスログ文
      字化け対策等の 8. CPU 温度を取得する ]で解説しています。

 4 ). CPUの利用率を表示する方法

      現在のサーバ機の  です。

      CPUの利用率は、コマンド mpstat を使用して取得します。
      mpstat コマンドを実行すると下記の様な出力結果が得られます。
      プログラムは、" all " の文字が有る行の %idle を抽出します。
      抽出したデータは、CPU のアイドル状態の割合なので CPU の利用率は、
      ( 100 - %idleの値 )になります。 

Linux 2.6.32-431.29.2.el6.x86_64 (LeoMiya)    2014年XX月23日  _x86_64_   (2 CPU)

13時46分29秒  CPU   %usr  %nice   %sys %iowait  %irq  %soft %steal %guest %idle
13時46分29秒  all   2.22   1.55  12.60   0.04   0.01  0.03   0.00  0.00   83.56

      下記は、perl で作成した SSI のプログラムです。

[ perl で作成した CPU の利用率を表示するプログラム ] の詳細は、
                                          [ここをクリック]してください。

 6 ). 私のサーバ機では、プロセスコマンド( ps -ef )で http が起動しているかを 1 分
      毎にチェックし、止まっている場合は、起動するようにして運用しています。

     下記は、perl で作成したプロセス監視プログラムの例です。参考にしてみてください。
     監視は、cron で 1 分毎に下記プロセス監視プログラムを起動するだけです。

[ Linux サーバプロセス監視プログラム ] の詳細は、[ここをクリック]してください。

 7 ). サーバ機起動時に SDカードを自動でマウントする方法

      SDカードは、サーバ機起動時自動でマウントされないので私の場合、下記の様な方法
      でマウントしてます。

      @ SDカードを差し込んで認識されるデバイス名をコマンド lsblk で調べます。

         コマンド lsblk の表示例

         NAME                          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
         sdb                             8:16   0 232.9G  0 disk
         |-sdb1                          8:17   0   500M  0 part /boot
         `-sdb2                          8:18   0 232.4G  0 part
          |-vg_leomiya-lv_root (dm-0) 253:0    0    50G  0 lvm  /
          |-vg_leomiya-lv_swap (dm-1) 253:1    0     2G  0 lvm  [SWAP]
          `-vg_leomiya-lv_home (dm-2) 253:2    0 180.5G  0 lvm  /home
         sda                             8:0    1   3.7G  0 disk  <---- SDカードの
                                                                        デバイス名

         ( -sda1 が表示しない時は、SDカードのデバイス名は、sda になります。)

      A SDカードのマウントを実行するプログラムの作成

         vi SD_Card_mount.shで下記をコピペする    ( root 上に作成 )
         ------------------------------------------------------------------------
         #!/bin/sh
         #---------------------------------------------
         #  システム起動時に SDカードをマウント
         #---------------------------------------------
         #  || は、エラーの時には、次のコマンドをマウント実行して終了する指定
         #  sda ⇒ sda1 ⇒ sdb ⇒ sdb1
         #
         mount -t vfat /dev/sda /mnt/SD_Card > /dev/null 2>&1\
         || mount -t vfat /dev/sda1 /mnt/SD_Card > /dev/null 2>&1\
         mount -t vfat /dev/sdb /mnt/SD_Card > /dev/null 2>&1\
         || mount -t vfat /dev/sdb1 /mnt/SD_Card > /dev/null 2>&1
         ------------------------------------------------------------------------

         SD_Card_mount.sh に実行権限を付与します。

         chmod 755 SD_Card_mount.sh

         ※ 注意 ※  sda, sdb は、貴方のPC 環境に合わせてください。
                     /mnt にマウント先がない時には、事前に作成してください。
                   (例) マウントディレクトリ SD_Card を /mnt に作成する。

                   mkdir -p /mnt/SD_Card

      B 起動時にマウントを実行させる為、下記コマンドを /etc/rc.d/rc.local に登録
         します。

         echo "#SD_Card_mount
         sh /root/SD_Card_mount.sh" >> /etc/rc.d/rc.local

      C マウントされるかのテスト

         コマンド sh /root/SD_Card_mount.sh を実行し、コマンド lsblk で確認
         する。

         sda                             8:0    1   3.7G  0 disk /mnt/SD_Card

         この例の様にマウント先が表示されれば OK です。



TOPへ戻る