www.smiyasaka.com は、 2019 年2月から SSL 化し 通信を暗号化した方式で発信をしています。

●   CentOS 6.X 32bit のインストールと自宅サーバの構築   ●

アクセス数 昨日 - 今日 1
  累計 82,001   

インストールに便利な yum をあえて使用しないで、webサーバを構築してみました。
   
( " コピペ " で簡単にサーバ構築が出来るよう心掛けた作りにしています。)

     
※※※ サポート期限は、2020年11月30日までです。※※※

※ 注 意 事 項 ※
コマンド・プログラム等を コピペ する時には、全角のスペース が、入っていることがありますので
半角に変換 してから、使用してください。

スマホ対策の為、長いコマンド・プログラム等を継続記号( linux は、"\" 、EXCELマクロは、"_" )で
故意に数行に分割している箇所が有ります。

目    次
[○○○○]のクリックで、その内容が目次の下に表示、再度クリックで非表示になります。

     ※ [ 総てを表示する ] ※ [ 総てを表示する 非表示 ] ※

0. インストールした PC のスペック等

必要なパッケージは、○○○.i686.rpm と ○○○.tar.gz だけとし、すべてのファイルを 事前に windows PC でダウンロード しておきます。
ファイル転送プログラム proftpdTera Term の転送機能を使用して windows PC 側 から直接転送し、インストールします。。
proftpd インストール後ダウンロードしたファイルをサーバ機に ffftpで書き込み、各種 設定は、Windows PC ( Tera Term を使用 )からの遠隔操作で web サーバを構築していきます。。

( ダウロードコマンド
wget も、一切使用しないサーバ構築方法です。 )。

コマンドの入力は、このページのコマンドをコピーして、Tera Term の入力画面に張付け て実行します。
つまり、設定するコマンド等は、すべてテキストファイルでストリー的に事前に作り、す べてそこからのコピペだけでサーバシステムの構築 をしています。

[ コピペの見本 ] の詳細は、
            [ここをクリック]してください。
---------------------------------------------------------------------------------
2020.11.07 付けで CentOS 6.10 のカーネルのバージョンは、
Kernel 2.6.32-754.35.1.el6.i686 になっています。

サーバ機( OS バージョン CentOS 7.9.2009  64bit )の
CPU 利用率 0.96 % CPU 温度 +23 です。
2020.11.17 付けでカーネル( OS のバージョン )が、更新されました。
( カーネルのバージョン
Kernel 3.10.0-1160.6.1.el7.x86_64 です。)
2017.05.26から、新規に下記スペックの PC にインストールし、使用しています。
-------------------------------------------------------------------------
私の自宅サーバ機のスペック
型   式 : mouse LM-mini76S-S1-MA CPU : Intel Celeron 3855U 2コア/1.60GHz
消費電力 : 約 10W   メ モ リ : 8GBSSD : 128GB
インターネット回線 : STNet 光回線(ギガビット対応)
USBカメラ : Logicool UVC対応 C270sCW 120万画素(固定焦点)
LANカメラ : Logicool UVC対応 C270sCW 120万画素(固定焦点)
-------------------------------------------------------------------------

※ 参考情報 ※
BUFFALO の USB カメラは、フォーマットエラーになり使用できません。
ELECOM の USB カメラは、白とび・景色撮影等画質に難点があります。
Logicool のUSB カメラは、輝度・コントラストを調整して使用できます。

---------------------------------------------------------------------------------
※ お断り ※
以下は、まだまだビギナーである私が、独学と偏見(とりあえず動けば、良い)で勉強したこ とや苦労したことをまとめたもので、最善の方法とは限りません。
私の目標としてサーバの再構築を理屈抜きでいかに簡単に出来るかを考えて記述・まとめて います。
何度もサーバ構築を繰り返すとサーバ構築の理屈等も何となく分かってきます。

まずは動作させる事目標にし、理屈等は、後から気が向いたときに研究してみてください。
私自身も日々研究し改良をしています。 良い結果が出た時にホームページ上にアップをして います。
---------------------------------------------------------------------------------
ディレクトリ等の名前は、私のサーバ機の環境での名前を使用していますので、利用すると きには、あなたの環境に合わせて変更してください。
(
/var/www/html/www.smiyasaka.com は、httpd.conf での、DocumentRoot のパスです。
/home/miyasakaは、ホームディレクトリです。 )

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


1. 32 bit CentOS 6.X のインストール(自宅サーバ構築)

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

今年(2015年)になってから、reken.jp 等のミラーサイトから、 旧バージョンの CentOS の iso ファイルは、ダウンロードできなくなっています。

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

32bit 版は、i386、64bit 版は、x86_64 のフォルダをクリックしてください。

ファイルのダウンロードには、かなりの時間がかかりますので、覚悟して行ってください。

インストールの方法は、下記に示します。なお、固定IPアドレスの手動設定・起動時の自動 起動設定とrootのパスワード・ホスト名の記録は、忘れないでください。


サーバ構築に必要なソフトウェアの選択でのカスタマイズの項目は、次の通りで、この指定 で、最低限のディスクトップの操作( GNOME )もできます。
私のサーバ機の環境では、X Window Systemは使えなかったので、汎用ディスクトップ(GNOME)だけの設定にしています。


※ 参考情報 ※

 1行目 Install or upgrade an existing system で上手くいかない時には、
 2行目 Install system with basic video driver でインストールしてみてください。

Minimal を選ぶと、言語 --- 日本語サポート以外、すべてのチェックが外れます。

デスクトップ  --- 汎用ディスクトップ( GNOME )
ベースシステム --- Perlのサポート  
<--- これを入れないとSSI,cgi の実行が出来ません。
          ベース      
<--- これを忘れないで入れてください。
言語      --- 日本語サポート
開発      --- その他の開発   
<--- これを忘れないで入れてください。
                    このパッケージは、httpd で圧縮をしない時、
                    fswebcam を使用しない時には、不要です。
                    パッケージ数は、129個程なので選択してイ
                    ンストールすることを勧めます。

          開発ツール   
<--- これを入れないとconfigure, make 等の
                    実行が出来ません。


下記は、私の環境での
インストール手順のメモです。参考にしてください。
必要パッケージの選択は、サーバ機構築の最低の項目にしています。

[ 32 bit CentOS 6.X DVD からインストール手順 ] の詳細は、
            [ここをクリック]してください。

32bit CentOS6.8 minimal.iso でサーバ機を構築する手順( インストール・不足するパッ ケージのインストール )を下記に紹介します。

minimal.iso でのインストールは、パッケージ数が 204個なので短時間でインストールでき ますが不足するパッケージが沢山あるのでインストールの必要があります。
CentOS には、パッケージをまとめてインストールできる yum の機能 ( yum groupinstall )があり、これを使用して開発ツール・日本語のサポートのパッケージ郡をインストールします。
また、不要なサービスを導入することなく目的とするシステムが構築できるので、不要のサービスの停止項目も少なくなりました。

[ 32bit CentOS-6.X-i386-minimal.iso ] の詳細は、
            [ここをクリック]してください。



2. CentOS 6.X 再起動後のコンソールからの各種設定

ここの設定だけは、サーバ機のコンソールから、GNOME(テキスト入力モード)で行ってください。

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

○○○○○ login: root <--- ○○○○○は、ホスト名
Password: ( 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 に変更して下さい。
システム稼働後、enforcing にすることができます。disabled からの変更では、再起動ができなくなります。


permissive <---- アクセス制御が無効(エラーログは出力)になります。

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

vi /etc/ssh/sshd_config

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

E sshdの再起動
下記の再起動コマンドを入力して OK と表示したらポート設定完了です。

/etc/rc.d/init.d/sshd restart

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

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

system-config-firewall-tui

[
*]Enabled ----> [ ]Enabled に変更する。(space) ---> (Tab) ---> (Enter)キーを2回押す。


G システムのアップデートをする。

曜日と時間帯によっては、ミラーサイトが混雑していてアップデートに時間がかかる時が あります。 その時には、後でしましょう。
( 初回の update は、数が多いので少しの時間がかかります。 )


yum -y update

H システムの再起動をする。

reboot または、 shutdown -rf now

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等の検索で、「 パッケージ名 + download 」のキーワード検索でほとんどの場合、ヒットします。

下記のパッケージ名をクリックするとダウロード出来るサイトへジャンプします。
( パッケージは、○○○.i686.rpm と○○○.tar.gz だけです。)
IEで上手く、ダウンロード出来ない時には、Google chrome・FireFox で試してみてください。


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

---------------------------------------------------------------
ftp
proftpd-1.3.6.tar.gz
vsftpd-2.2.2-24.el6.i686.rpm
ftp-0.17-54.el6.i686.rpm
---------------------------------------------------------------
RPMforgeリポジトリ
yum-plugin-priorities-1.1.30-37.el6.noarch.rpm
rpmforge-release-0.5.3-1.el6.rf.i686.rpm
---------------------------------------------------------------
httpd
httpd-2.4.41.tar.gz
旧バージョンの httpd ダウンロード
apr-1.6.5.tar.gz
apr-1.7.0.tar.gz
apr-util-1.6.1.tar.gz
pcre-devel-7.8-6.el6.i686.rpm
pcre-devel-7.8-7.el6.i686.rpm
expat-devel-2.0.1-13.el6_8.i686.rpm
---------------------------------------------------------------
fswebcam
fswebcam-20100622.tar.gz
fswebcam-20140113.tar.gz
libXpm-3.5.10-2.el6.i686.rpm
libjpeg-turbo-devel-1.2.1-3.el6_5.i686.rpm
libXpm-devel-3.5.10-2.el6.i686.rpm
gd-devel-2.0.35-11.el6.i686.rpm
---------------------------------------------------------------
sendmail
hesiod-3.1.0-19.el6.i686.rpm
procmail-3.22-25.1.el6_5.1.i686.rpm
sendmail-8.14.4-9.el6.i686.rpm
---------------------------------------------------------------
logwatch
perl-Date-Manip-6.24-1.el6.noarch.rpm
perl-YAML-Syck-1.07-4.el6.i686.rpm
logwatch-7.3.6-54.el6.noarch.rpm
---------------------------------------------------------------
clamd
clamav-db-0.100.1-2.el6.i686.rpm
clamav-0.100.1-2.el6.i686.rpm
clamd-0.100.1-2.el6.i686.rpm
---------------------------------------------------------------
chkrootkit
chkrootkit-0.49-1.el6.rf.i686.rpm
---------------------------------------------------------------
sensors
lm_sensors-libs-3.1.1-17.el6.i686.rpm
lm_sensors-3.1.1-17.el6.i686.rpm
---------------------------------------------------------------
その他のパッケージ
Jcode-2.07.tar.gz
nkf-2.1.5.tar.gz
lsof-4.82-4.el6.i686.rpm
webmin-1.560-1.noarch.rpm
---------------------------------------------------------------
motion
motion-3.2.12.tar.gz


4. セキュリティ対策のため停止したサービス

停止したサービスは、下記のとおりです。

acpid
haldaemon
irqbalance
mdmonitor
messagebus
netfs

nfslock
rdisc
rpcidmapd
saslauthd
atd
nfs
rpcbind
cpuspeed
bluetooth
auditd
ip6tables
lvm2-monitor
restorecond
postfix

# ホスト機の動作と電源を管理#
# USB外付けHDDやUSBメモリ等を使わないのであればOFF
# マルチCPU環境で複数CPU割り込みを行うためのツール
# ソフトウェアRAID 監視サービ
# アプリケーション間のメッセージを送るD-BUSデーモン
# システム起動時にfstabに記述されているNFSやsambaを自動マウントする
ためのサービス
# ネームサービスキャッシュデーモン
# ネットワークルータディスカバリーデーモン
# RPC name to UID/GID mapper
# コネクションベースのプロトコル認証をサポートするデーモン
# 単発的にスケジュール化した コマンド を実行させるデーモンです
# NFSサーバーのデーモンです
# NFSが必要とするデーモン
# 動作負荷に応じてCPUの速度を変化させるデーモンです
# Bluetooth 機能を有効にする
# 監査システムの一部を補助し、適切なログデータを出力する
# IPv6でパケットフィルタリングを行うデーモンです
# 論理ボリュームマネージャー(LVM) 利用時の障害監視のためのデーモン
# SELinuxと連動
# メールサーバ

沢山のサービスの停止は、シェルスクリプトのプログラム作成して行います。
下記は、私が作成したプログラム例です。 コピーして貼り付けて使用します。

[ CentOS 6.8 の不要サービスを停止するシェルスクリプ ] の詳細は、
            [ここをクリック]してください。
現在動作しているサービスの確認は、 コマンド pstree で確認できます。
このページで設定した場合、動作しているサービスです。

  # pstree

  init-+-clamd---{clamd}
       |-crond
       |-2*[diced]
       |-httpd-+-httpd
       |       |-5*[httpd---26*[{httpd}]]
       |       `-2*[rotatelogs]
       |-6*[mingetty]
       |-ntpd
       |-proftpd---proftpd
       |-rsyslogd---3*[{rsyslogd}]
       |-2*[sendmail]
       |-sshd---sshd---sshd---bash---su---bash---pstree
       `-udevd


5. ファイアウォール・SELinux の設定

 許可(開放)しているネットワークポートの一覧
 ( ファイアーウォール iptables で下記のポート番号だけ、許可しています。 )

     1. 21    ( ftp ファイル転送 SMTP )
     2. 2222   ( ssh )
     3. 80    ( Webアクセス http )
     4. 123    ( NTP サーバの時刻合わせ )
     5. 10000   ( webmin )

 先人の知恵を借りて、シェルスクリプトのプログラム作成しました。

 下記は、私が改良したプログラム(例 CentOS 5.9 と同じ設定でOKです。)です。

[ CentOS 6.8 の不要サービスを停止するシェルスクリプ ] の詳細は、
            [ここをクリック]してください。

現在許可(開放)しているポートの確認は、 コマンド netstat で確認できます。
下記は、私の公開用サーバ機で動作しているサービスです。一覧の青文字からは、ホームペ
ージにアクセスしている人のグローバルIPアドレス表示されます。


( XX : LAN 内の IP アドレス 故意に XX にしています。)

# netstat -ant
<--- ant は、コマンドのオプションです。

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address  Foreign Address  State
tcp  0   0 127.0.0.1:3310    0.0.0.0:*    LISTEN
tcp  0   0 0.0.0.0:2222     0.0.0.0:*    LISTEN
tcp  0   0 0.0.0.0:21       0.0.0.0:*    LISTEN
tcp  0   0 127.0.0.1:25     0.0.0.0:*     LISTEN
tcp  0   0 192.168.0.XX:21    192.168.0.XX:1024  ESTABLISHED
tcp  0   96 192.168.0.XX:2222   192.168.0.XX:49337  ESTABLISHED
tcp  0   0 :::2222        :::*       LISTEN
tcp  0   0 :::80         :::*       LISTEN

tcp  0   0 ::ffff:192.168.0.XX:80::ffff:219.117.197.XX:65384 ESTABLISHED


----- 以下省略 -----

※ ポート番号と State の解説 ※

State が ESTABLISHED となっている 箇所は、現在接続がされている状態です。

3310 --> clamd, 2222 --> ssh, 21 --> ftp, 25 --> mail, 80 --> http


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

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



6. Tera Termでproftpd( FTPサーバ )を転送しインストー

私の場合、自宅サーバの構築に必要とする、ファイル等は、windows側で事前にダウンロー ドしておき、ffftpで一括に転送する方法を取っています。

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 にしているためです。

  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 -e "31a は、31行目の次の行として a 以降の文字列が追加されます。 )
   ( s/△△/□□/g は、△△の文字列が□□文字列に置換されます。 )
   ( \ は、メタ文字[ $,/ 等 ]の指定です。 )

cp /usr/local/src/proftpd-1.3.5/contrib/dist/rpm/proftpd.init.d \
/home/○○○○/proftpd; \
sed -e "31aexport PATH=\$PATH\:\/usr\/local\/proftpd\/sbin
s/-x \/usr\/sbin\/proftpd/-x \/usr\/local\/proftpd\/sbin\/proftpd/" \
/home/○○○○/proftpd > /etc/rc.d/init.d/proftpd

※※ 目から鱗の情報です ※※

sed コマンドでファイル内の書替えを
-i を追加することにより直接ファイルの書替えが できまるようになります。

sed -e  "s/○○○/□□□/g" /home/○○○○/proftpd > /etc/rc.d/init.d/proftpd
    ↓   ↓   ↓   ↓
sed -i -e "s/○○○/□□□/g" /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; \
sed -i -e "31aexport PATH=\$PATH\:\/usr\/local\/proftpd\/sbin
s/-x \/usr\/sbin\/proftpd/-x \/usr\/local\/proftpd\/sbin\/proftpd/" \
/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


7. ファイルの転送プログラムの作成

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


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

[ ファイルの転送プログラム ] の詳細は、
            [ここをクリック]してください。



サーバ機の時刻を日本標準時に同期させる

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


( ntp が無い時には、 yum -y install 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/○○○○/; \
sed -e "s/server 0.centos.pool.ntp.org iburst/server ntp.nict.jp/
s/server 1.centos.pool.ntp.org iburst/server ntp1.jst.mfeed.ad.jp/
s/server 2.centos.pool.ntp.org iburst/server ntp2.jst.mfeed.ad.jp/
s/server 3.centos.pool.ntp.org iburst//" \
/home/○○○○/ntp.conf > /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 w……h delay offset jitter
----------------------------------------------------------------
 ntp-b3.nict.go. .NICT.          1 u  ……  19.006 1011.19 0.002
 ntp1.jst.mfeed. 172.29.2.50     2 u  ……  16.972 1011.42 0.002
 ntp2.jst.mfeed. 133.243.236.18  2 u  ……  16.953 1011.43 0.002

以下のように*印がついていたら同期ができています。
(起動してから同期までに10分ぐらいかかります。)

  # ntpq -p

     remote        refid      st t …… delay offset jitter
-------------------------------------------------------------
*ntp-b3.nict.go. .NICT.       1 u   ……  17.612  0.205  0.323
 ntp1.jst.mfeed. 172.29.2.50  2 u  ……  16.167  0.225  0.492
 ntp2.jst.mfeed. 172.29.2.50  2 u  ……  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. yumを使用しないで、RPMforgeリポジトリを導入する

RPMforgeリポジトリの導入は、yum でのインストールで依存関係あるファイル等のインスト ールが出来るようにする。
つまり、標準リポジトリで提供されないパッケージをyumでインストールできるようになり ます。


Jcode( 漢字コード変換 ),clamd( アンチウィルスソフト ),chkrootkit 等がyumでインスト ールできるようになります。

yum 無しでRPMforgeリポジトリの導入する方法を紹介します。( インストール後の設定等は 先人の知恵を拝借しています。)

○ yum-prioritiesインストール
[ yum では、 yum -y install yum-plugin-priorities でインストールします。]

cd /usr/local/src/; \
rpm -Uvh yum-plugin-priorities-1.1.30-37.el6.noarch.rpm

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

※ 参考 ※
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&……
#baseurl=http://mirror.centos.org/centos/$releasever/os/$……
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&……
#baseurl=http://mirror.centos.org/centos/$releasever/upda……
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&……
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$……
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&……
#baseurl=http://mirror.centos.org/centos/$releasever/centos……
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.i686.rpm

○ RPMforgeリポジトリのアップデート updateなので、ここだけは、 yum を使用します。

yum -y update rpmforge-release

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

cp /etc/yum.repos.d/CentOS-Base.repo /home/miyasaka/
<---- ホームディレクトリへ保存

cp /home/miyasaka/CentOS-Base.repo /etc/yum.repos.d/
<---- 上書きする

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


10-1. apache2( httpd-2.4.7 〜 httpd-2.4.43 )のインストール

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


※※ 参考情報 ※※
    httpd-2.4.4 以降のインストール
    httpd-2.4.4 以降ののインストールは、httpd-2.4.*-deps.tar.gz は、不要です。
---------------------------------------------------------------------------------
httpd-2.4.X から、 srclib以下は何も用意されていないので、apr、apr-util、pcre, expat-devel を準備しインストールして置く必要があるります。
( コマンドの
; \ は、連続してコマンドを実行させる指示です。 )

httpd-2.4.26 からは、 expat-devel も準備しインストールして置く必要があるります。
インストールしないと make で [xml/apr_xml.lo] エラー 等々のエラーが出ます。

@-1 pcre のインストール
<---- このインストールを忘れないように

 cd /usr/local/src; \
 rpm -Uvh pcre-devel-7.8-6.el6.i686.rpm <---- CentOS 6.5, 6.6 の時

 rpm -Uvh pcre-devel-7.8-7.el6.i686.rpm <---- CentOS 6.7 〜 6.10 の時

 yum でのインストールは、

 yum -y install pcre-devel

@-2 expat-devel のインストール

 cd /usr/local/src; \
 rpm -Uvh expat-devel.i686 0:2.0.1-13.el6_8.rpm <---- httpd-2.4.26 〜 38 の時必要

 yum でのインストールは、

 yum -y install expat-devel

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


 ○ httpd-2.4.7 〜 2.4.43 を展開する。

  tar xzvf httpd-2.4.41.tar.gz; \
<---- httpd-2.4.41 は、httpd-2.4.XX の
  chown -R root. httpd-2.4.43; \
   バージョンに合わせてください。
  cd ./httpd-2.4.41/srclib

 ○ apr を展開する。

  httpd-2.4.7 〜 2.4.25 の時

  tar xzvf apr-1.5.2.tar.gz; \
  chown -R root. apr-1.5.2/; \
  mv apr-1.5.2 apr; \
  tar xzvf apr-util-1.5.4.tar.gz; \
  chown -R root. apr-util-1.5.4/; \
  mv apr-util-1.5.4/ apr-util

  httpd-2.4.26 〜 43 の時

  tar xzvf apr-1.6.5.tar.gz; \ 
<---- httpd-2.4.38 からは、apr-1.7.0.tar.gzを
  chown -R root. apr-1.6.5/; \  
使用してください。
  mv apr-1.6.5 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; \ 
<---- httpd-2.4.41 は、httpd-2.4.XX の
 ./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_S……ILE64_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の設定は、下記のとおりです。


下記は、修正箇所の一覧ですが、ディレクトリは、私のサーバ機の環境での設定値です。

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


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


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

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

---------------------------------------------------------------------------------
下記は、httpd.conf の編集を sed コマンドで一括編集( 行指定編集は、使用していません。
)をした時のリストです。
興味のある方は、下記をクリックしてください。別ページで表示します。

[ sed コマンドによる httpd-2.4.XX の 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

何も表示しなければ OK です。

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

 vi /etc/rc.d/rc.local

 下記を追加する。
 # Apache
 /usr/local/apache2/bin/apachectl restart

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

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

K
ここで、 httpd.conf へ設定したドキュメントのルート( DocumentRoot )へホームペー ジのファイルデータを書き込みます。

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

   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 で設定)

--------------------------------------------
右の写真のような情報が取得できます。
( H25.09.05 アクセスし、データ取得 )


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






www.gidnetwork.com からの回答
B

圧縮した時の圧縮ログデータは、このようになりました。
( 私の環境では、/usr/local/apache2/logs/deflate_log に圧縮ログデータが保存されました。)
圧縮結果のログデータは、管理者か゜root の為、ffftp でダウンロードできないので、ユーザー権限に変更します。

  chown -R miyasaka:miyasaka /usr/local/apache2/logs/deflate_log; \
  chmod -R 666 /usr/local/apache2/logs/deflate_log

保存場所 ----> /usr/local/apache2/logs/deflate_log

圧縮した時の圧縮ログデータは、このようになりました。( TeraPad で見ます。)

    (出力バイト数)↓  ↓(入力)↓( 元データに対するデータの大きさ[ % ] ) を意味します。
"GET  / HTTP/1.1" 10335/53768 (19%) Mozilla/5.0 (compatible…
"GET  /.webcam/camdata.jpg HTTP/1.1" 730/1235 (59%) Mozilla/…
"GET  /.webcam/camdata.jpg HTTP/1.1" -/- (-%) Mozilla/4.0 (…
"GET  /fswebcam.html HTTP/1.1" 16258/71964 (22%) Mozilla/5.…
"GET  /server.html HTTP/1.1" 13682/55830 (24%) Mozilla/5.0 …
"GET  /html_point.html HTTP/1.1" 14973/70669 (21%) Mozilla …
"GET  /html_point8.html HTTP/1.1" 1017/1985 (51%) Mozilla/5…
"GET  /html_point4.html HTTP/1.1" 852/1575 (54%) Mozilla/5.…
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

N-4 apache のコマンド apachectl status と fullstatus を使えるようにする。

CentOS 6.5 32bit 版では、テキストベースのブラウザパッケージ[ elinks ]のインストールは、必要ありません。

コマンド apachectl status でコンソールから、テキスト情報で見ることができます。

詳しいアクセス情報の表示は、コマンド apachectl fullstatus で見ることもできます。


下記は、コマンド apachectl status の表示例です。

コマンドには、/usr/local/apache2/bin/apachectl statusの様にフルパスを付けて実行してください。


# /usr/local/apache2/bin/apachectl status
Apache Server Status for localhost (via ::1)
Server Version: Apache/2.4.10 (Unix)
Server MPM: event
Server Built: Oct 2 2014 08:34:47
----------------------------------------------------------------------
Current Time: Sunday, 05-Oct-2014 09:30:12 JST
Restart Time: Sunday, 05-Oct-2014 09:26:37 JST
Parent Server Config. Generation: 2
Parent Server MPM Generation: 1
Server uptime: 3 minutes 34 seconds
Server load: 0.09 0.15 0.09
Total accesses: 1 - Total Traffic: 3 kB
CPU Usage: u0 s.01 cu0 cs0 - .00467% CPU load
.00467 requests/sec - 14 B/second - 3072 B/request
1 requests currently being processed, 74 idle workers
以下 省略

サーバステータスの監視機能の出力結果の見方の解説は、
        [サーバステータスの監視の解説は、ここをクリック]してください。

---------------------------------------------------------------------------
※※
apache のバージョンの確認方法 ※※
  /usr/local/apache2/bin/httpd -v のコマンドで確認できます。

  Server version: Apache/2.4.38 (Unix)
  Server built: Jan 23 2019 08:55:34

※※
参考情報 ※※

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

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


CentOS release 6.10 (Final)

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

  uname -a のコマンドで確認できます。


  Linux LeoMiya 2.6.32-754.10.1.el6.i686 #1 SMP Tue Ja ……

3. 起動時にエラーに成る時の対処方法

(1) httpd を restrat としたら、こんなエラーが出た時の対処方法

このエラーは、他のプロセスがポート80を使用しているため、停止が出来なかった時にでます。


(98)address already in use: ah00072: make_sock: ……address [::]:80
(98)address already in use: ah00072: make_sock: ……address 0.……

  何番のプロセスが httpd を使用しているか、lsof コマンドで調べます。

  lsof -i | grep http

  この様に表示します。(一例)

httpd 1391  root  4u IPv6 10236 0t0 TCP *:http (LISTEN)
httpd 2175 miyasaka  4u IPv6 10236 0t0 TCP *:http (LISTEN)
   ( 以下省略 )

  kill コマンドで root のプロセス番号を削除し、再度 start したら終了です。

  kill 1391

  (2) httpd を strat としたら、こんなエラーが出た時の対処方法

  (20014)Internal error (specific information not available):
  AH00058: Error retrieving pid file logs/httpd.pid
  AH00059: Remove it before continuing if it is corrupted.

通常 apache は、停止時に httpd.pid ファイルを削除するのですが、削除されて

ないと httpd.pid ファイルが存在するので、apache は起動していると、誤認識して起動できなくなっている為です。
対処は、httpd.pid ファイルを次の手順で削除するだけです。


httpd.pid ファイルの存在とパスをコマンド find / -name httpd.pid で確認します。

表示された httpd.pid ファイルのパスを指定して下記コマンドで削除します。
( 下記のパスは、私のサーバ機の環境の場合です。)


  rm /usr/local/apache2/logs/httpd.pid


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_sys_script_anon_write  --> on   ← pubuic_content_rw_t タイプのラベルが付いた
   ファイルへの書き込みアクセスを HTTPスクリプトに許可するかどうかを定義


  
httpd_ssi_exec  --> off   ← Web ページ内の SSI (server side include) 要素を
   実行可能にするかどうかを定義。 これを on するかは、動作結果を見て決めて見てださい。

httpd-2.4.XX でも off のままで OK です。
httpd-2.4.6 の場合は、off しないと動作しない SSI
プログラムがありました。


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

私のホームページでは、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.com と smiyasaka.com は、私のドメイン名です。
コマンドをコピーする時には、あなたのドメインに変更して使用してください。


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

 1. http:// のアクセスを https:// に自動変換させる。

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


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


 1. 現在 http://(ドメイン) でホームページが公開されている事。

 2. httpd-2.4.XX のバージョンの 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/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
#


下記は、httpd-SSL.conf の編集を sed コマンドで一括編集をした時の sed コマンドの

リストです。
( sed コマンドをより理解するため無駄ですが挑戦してみました。)
Linux の正規表現等が良く理解できました。( 自己満足 )
興味のある方は、下記をクリックしてください。別ページで表示します。
---------------------------------------------------------------------------------

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

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

10-1 項の設定が完了してから、下記4ヶ所のコメントアウトを解除します。

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

〇 mod_socache_shmcbを有効化する。

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

上記の操作を sed コマンドで一括処理してみました。


sed -i -e "/mod_socache_shmcb\.so/s/^#//
/mod_ssl\.so/s/^#//
/mod_rewrite\.so/s/^#//
/httpd-ssl\.conf/s/^#//" /usr/local/apache2/conf/httpd.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 のインストール手順

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

  5個の i686.rpm のパッケージを下記の順序でインストールする。
  必ず、システムのアップデート後にインストールしてください。
  依存関係のエラーが出る時には、該当パッケージを yum でインストールしてください。
  [ yum では、yum -y install libXpm libjpeg-turbo-devel libXpm-devel gd gd-devel
  でインストールします。]


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

 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 を使用したホームページの作成方法については、定点カメラの実現方法の 5. ライブ定点カメラとして、ホームページが公開できるようにします。のページで詳細 に解説していますので参考にしてください。


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

Linux用のフリーのアンチウィルスソフトであるClam AntiVirus のインストール・設定方 法は、下記サイトに詳しく
紹介されていますので参考にしてください。
なお、yum 使用しないので、下記の3個のパッケージを最初に インストールします。

※ 注意 ※
 パッケージのインストールは、下記の順序でしてください。順序が変わると、依存関係のエラーがでます。

 clamd のバージョンは、極力最新のバージョンをインストールしてください。

[ yum では、 yum -y install clamd でインストールします。]

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

○ clamd設定ファイル編集

  root権限で動作するようにする。

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

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


vi /etc/clamd.conf
:207 で207行目へジャンプ

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

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

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

○ セルフチェックの頻度を変更する。

  初期設定では、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 -------------------------

※ 参考 ※ sed コマンドで下記の様にすると同じ事ができます。

sed -i -e "s/#SelfCheck 600/SelfCheck 1800/g" /etc/clamd.conf


  vi /etc/clamd.conf
:185 で185行目へジャンプ

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

詳細の設定は、下記サイトを参考にしてください。
※ 参考にしたサイト  アンチウィルスソフト導入(Clam AntiVirus)


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

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

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


   WARNING: Local version: 0.99.4 Recommended version: 0.100.1

@ ClamAVは EPELレポジトリにあるので、EPELレポジトリを yum で追加します。

   yum -y install epel-release

※※ 参考情報 ※※ epel.repo の無効化の手順

   ア. コマンド rpm -qa | grep epel で epel のバージョンを調べる。
   例
     rpm -qa | grep epel
     epel-release-6-8.noarch

   イ. コマンド rpm -e で削除する。

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

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

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

B yum で ClamAV をアップデートします。
   ( この時 clamd は、停止する必要はありません。)

   yum -y --enablerepo=epel update clamav

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

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

   rpm -qa | grep clam

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

   clamd-0.99.4-1.el6.x686
   clamav-db-0.99.4-1.el6.x686
   clamav-0.99.4-1.el6.x686

    ↓  ↓  ↓

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

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

D clamd を再起動します。

   /etc/init.d/clamd restart

  この時、下記のようなメッセージが、出た時には、該当のファイルを消去してから再起動します。
  ( これは、同じデータベースファイルが二重にある事の警告です。)


  Stopping Clam AntiVirus Daemon:         [ OK ]
  Starting Clam AntiVirus Daemon: LibClamAV Warning: Detected du……
  /var/lib/clamav/daily.cvd and /var/lib/clamav/daill……
                            [ OK ]

  上記の場合の該当のファイルを消去

  rm -f /var/lib/clamav/daily.cvd
  rm -f /var/lib/clamav/daily.cld

  再起動後、下記の様になれば、OKです。

  /etc/init.d/clamd restart
  Stopping Clam AntiVirus Daemon:          [ OK ]
  Starting Clam AntiVirus Daemon:           [ OK ]


13. chkrootkitの導入

インストールは、chkrootkit.tar.gz を使いたいのですが、make sense で下記エラーが出 るので chkrootkit-0.49-1.el6.rf.i686.rpm を使用します。

/usr/bin/ld: cannot find -lc
collect2: ld はステータス 1 で終了しました
make: *** [strings-static] エラー 1
----------------------------------------------------------------------------
※※ 参考情報 ※※
  chkrootkit.tar.gz を使いたい時には、まず、yum で

  yum -y install glibc-static を実行してから、インストールします。

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

@ chkrootkit のインストール
[ yum では、 yum -y install chkrootkit でインストールします。]

cd /usr/local/src; \
rpm -Uvh chkrootkit-0.49-1.el6.rf.i686.rpm

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

   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.i686 のパッケージ名が得られました。

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


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


B rootkit.sh に属性設定

   chmod 700 rootkit.sh

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

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

   root 宛てにメールが、来ているので確認する。

   mail コマンドを入力して rootkit check OK が、表示すれば、ハッカーの攻撃は、なしです。


詳細の設定は、下記サイトを参考にしてください。

※ 参考にしたサイト  rootkit検知ツール導入(chkrootkit)


14. sendmail のインストール

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

依存関係のある2個のパッケージも一緒にインストールします。


   cd /usr/local/src; \
   rpm -Uvh hesiod-3.1.0-19.el6.i686.rpm; \
   rpm -Uvh procmail-3.22-25.1.el6_5.1.i686.rpm; \
   rpm -Uvh sendmail-8.14.4-9.el6.i686.rpm

   /etc/init.d/sendmail start

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

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


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

○ サーバー上のログを定期的にまとめ、集約してレポートを出してくれるソフトウェア   (Logwatch)は、CentOS 6.4 の場合、デフォルトでインストールされていないのでインストールします。
  [ yum では、 yum -y install logwatch でインストールします。]

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


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

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


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

cp /usr/share/logwatch/default.conf/logwatch.conf\
/home/miyasaka/logwatch.conf.bak; \
sed -i -e "s/#Archives = Yes/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 デーモン動作を開始しました 
変更後のグロバルIPアドレス
                       ↓  ↓
 ○ 11/14 11:26 IPアドレスが変わりました >123.215.114.234
 ★ 11/14 11:27 に(イベント名が表示)が実行されました
       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. ftp のインストール

○ 上記のインストール方法では、Linux のファイルを、ネットワークでつながった他の Linux や PC に転送する「 ftp 」(file transfer protocol)というコマンドが使え ないので、ftp をインストールします。
  ftp は、運用・管理のバックアップファイルの転送の時に必要になります。
  [ yum では、 yum -y install ftp でインストールします。]


   cd /usr/local/src; \
   rpm -Uvh ftp-0.17-54.el6.i686.rpm


17. 漢字コード変換用に 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


18. 自宅サーバの管理・運用監視・アクセスログ文字化け対策等

自宅から、Webサーバを開設・運用するには、次の事もしなければなりません。

1. 停電の対策

  私の場合、100% 趣味として、運用しているので、対策はしていません。

2. グローバルIPアドレスの監視

  ネームサーバへのグローバルIPアドレス変更の通知は、DiCEで対応していますが、自 分で気づいたときは、( ほとんどの場合、ルータの電源断です。)
  直接ネームサーバへログインして変更をかけています。( 20分程度で変更されています。)


3. サーバの監視

  
プロセス監視は、perl で作成した監視プログラム内から、ps コマンド実行させ DiCE, ssh, apache, proftpd が、停止していないかチェックしています。

  ( DiCE のプログラムは、時々落ちるのでぜひ定時監視させる必要があります。私は、毎 週 土曜日に DiCE のイベントログをチェックしていますが、「デーモン動作を開始し ました」のメッセージが結構表示されています。)


  監視プログラムは、 cron で1分ごとに実行させプロセス( DiCE,ssh,apache,proftpd )の停止を監視させ、停止した場合に再起動し、システムの安定稼働を実現させています。


  監視プログラムの概要

  
Linux のコマンド [/bin/ps -aef]をopen 関数で実行させプロセスが稼働していれ ば、それぞれのプロセスで下記のメッセージがあるので、そのメッセージの有無を判 定させ、無い時には、再起動するようにさせています。

  proftpd --->
proftpd: (accepting connections)
  apache --->
/usr/local/apache2/bin/httpd -k restart
  apache --->
/usr/local/apache2/bin/httpd -k start
  DiCE   --->
/usr/local/DiCE/diced -d -l
  ssh   --->
/usr/sbin/sshd

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

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

4. webalizerを使用したapacheのアクセスログの取得と解析

  国別集計だけが上手く行かない為、現在研究中です。
  問題等が解決して国別集計が出来るようになったら、方法等を公開します。

5. アクセスログの文字化け対策・月初め処理・不要な過去のログの自動削除

  Jcode にて、毎晩定時に日本語のコード変換をして別ファイル名で保存するプログラムを作成しています。
  なお、毎月 1日と元旦の日は、次のように特別処理をしていいます。

  このプログラムは、シェルスクリプトで作成し、
1月1日時には、前年の12月31日に ・1日の時には、前月の30日または、31日にして日本語のコード変換をして、その月の 変換 HTML ファイルとして保存するようにしています。

  表示の時には、webalizer が作成する index.html の月別リンクページのファイル名 を入れ替えるプログラムを perl で作成して cgi として実行させて日本語のコード 変換をしたページを表示さています。

  これらのプログラムでは、一年分の処理をさせているので、毎日前日の文字化けのな いアクセスログを見ることができています。

下記に、先人の知恵を借りて私なりに改良した、上記の問題点を処 理したシェルスクリプトとcgiのプログラムです。 参考にしてください。

下記プログラムは、webalizer のログ解析ファイル名に「年月」の文字が入っていることを前提として、処理しています。

[ アクセスログの文字化け・月末処理対策するシェルスクリプトと cgi ] の詳細は、
             [ここをクリック]してください。

6. サーバ機が、ダウンした場合の予備サーバ機の準備等 ホームページのファイルとapacheのアクセスログは、毎日定時に、バックアップ ( 圧縮 )をとり、予備機との入れ替えをスムーズにできるようにシステムを組んでいます。

7. サーバ機のシステムが正常に動作しているか・外部から不正アクセスがないか等は、 Logwatchのrooo宛てメールをホームページ上で見えるようにして日々チェックしています。

※ 有ると便利なパッケージを紹介します。

 ポート番号からサービスを特定したり、どんなプロセスが動いているとかの確認プロ グラムをダウロードしてインストールするだけです。

  

 cd /usr/local/src; \
 rpm -Uvh lsof-4.82-4.el6.i686.rpm

使用例
   ポート 3310 をオープンしているプロセスを調べてみます。
   -i オプションでポート番号を指定すると、そのポートをオープンしているプロセスが表示されます。

lsof -i:3310
COMMAND PID USER  FD  TYPE DEVICE SIZE/OFF NODE NAME
clamd  1111 root   5u IPv4  9747    0t0 TCP localhost:dyna-access (LISTEN)

 ポート 3310 は、clamd が使用していることが分かります。

詳しい使い方は、下記サイトを参考にしてください。
※ 参考になるサイト  lsof の使い方

8. CPU 温度を表示させるプログラム


  こんな具合に表示できます。

  現在のサーバ機の CPU 温度 +23 です。

  ダウロードしてインストールした後、少しの設定をするだけです。

  ※ CPU温度の取得は、CPUの種類によって違いますので、あなたのサーバ機の仕様に合わせてくたせさい。

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

  sensors-detectと入力し、すべてに対して[return]キー(14回ほど)を押し、最後に[ OK ]がでれば、動作します。

  sensors と入力すると下記の様に表示します。
  (下記は、私のサーバ機 CPU:Intel(R) Atom(TM) CPU N455 の表示です)

  coretemp-isa-0000
  Adapter: ISA adapter
  Core 0:    +33.0°C (high = +80.0°C, crit = +100.0°C)

下記は、CPU 温度をホームページ上に表示させるプログラム( シェルスクリプト・SSI )の例です。

[ sensors を使用して CPU の温度だけを取り出すシェルスクリプト ] の詳細は、
            [ここをクリック]してください。

9. CPUの稼働時間・HDDの稼働時間と温度を表示する方法

   こんな具合に表示できます。

  
サーバ機連続稼働時間  5 日と 18 時間 47
   現在のサーバ機の CPU 利用率 0.96 % です。
   現在のサーバ機の SSDの稼働時間と温度は、 14,938 時間 ( 622 10 時間 ) です。

  
CPUの稼働時間と HDDの温度を表示させるプログラムは、CentOS 6.4 の場合標準でインストールされていました。

 
※※ 参考情報 1 ※※
 HDD の情報を取得するパッケージ( smartmontools, 他 )は、ホームページからの SSI 等で実行させても結果は得られませんので注意して下さい。
 端末から実行すると結果が表示するのでちょっと疑問を持つと思います。
  ( 私も悩みました。)

 これらは、
root 権限でないと実行されない( ホームページの実行は、ユーザー モードの実行になります。 )ので、これらを実行させて情報を得たい時には、 cron で定時的に実行させファイルへ結果を保存し、ホームページでは、それを参 照する方法にします。
 私のサーバ機の HDD の情報は、この方法で実現しています。

10. エラーページを表示させる設定

   .htaccess というファイル名で下記を記述します。

ErrorDocument 400 /error400.html <--- エラーコード 400「要求されたコードを理解できません」
ErrorDocument 401 /error401.html <--- エラーコード 401「認証に失敗」
ErrorDocument 403 /error403.html <--- エラーコード 403「アクセスする為の許可がありません」
ErrorDocument 404 /error404.html <--- エラーコード 404「ページが見つかりません」
ErrorDocument 500 /error500.html <--- エラーコード 505「サーバは内部エラー」

( error400 〜 500.html は、エラーに成った時に表示するホームページのファイル名 )

  .htaccess というファイルとエラーに成った時に表示するホームページのファイルをホームページのディレクトリ( ドキュメントルート )へ保存します。

  .htaccess を有効にする設定は、httpd.conf の 230行目前後に有る AllowOverride None を AllowOverride All に変更します。

11. ホームページ上にDiCE のログを表示させる。

   DiCE のIPアドレス更新ログをその都度サーバにログインして見るのは、面倒なので、    パスワードのかかったページに perl と HTML でプログラムを組み見られる様にしてみました。
   DiCE のログは、日本語表示なので、EUCコードをシフトJISコードに変換して表示しています。
   DiCE の events.log のパスは、あなたの環境に合わせてください。

[ ホームページ上にDiCE のイベントログのみを表示させるプログラム ] の詳細は、
            [ここをクリック]してください。


上記 perl のプログラム中に日本語のコード変換モジュールを使用とてします。
ここのサイトから、[ここから]の jcode.pl の行をクリックしダウンロードしてください。

あとは、そのモジュールを上記の perl のプログラムと同じディレクトリーに転送する
だけです。

HTML の記述例
dice_events_check.pl は、perlのプログラム名です。

<CENTER><H3>DiCE のIPアドレス更新履歴
<br><!--#exec cmd="./dice_events_check.pl"--></H3>

表示結果

       DiCE のIPアドレス更新履歴

   ○ 1/28 17:45 デーモン動作を開始しました
   ○ 1/30 11:26 IPアドレスが変わりました >125.215.114.205
   ○ 2/1 1:00 デーモン動作を開始しました     <---- 毎週定時に DiCE を再起動
                                     しています
   ★ 2/4 9:25 にm○○○○○が実行されました   <---- ○○○○○は、イベント名
    IPアドレスを更新しました
   ○ 2/8 1:00 デーモン動作を開始しました

12. サーバ構築で .conf 等の設定ファイルを編集後 ffftp でwindows側へ保存しましょう。

サーバを再構築する時にwindows側へ保存したファイルを使用すると簡単に再構築が出 来るようになります。 私は、この方法で再構築をしています。

保存したファイルは、直接目的のディレクトリに書込みはできないので一度 home ディレ
クトリへ ffftp で転送し、cp コマンドで目的のディレクトリに書込みます。
この時、上書きの yes/no が聞かれますので y を入力して上書きさせれば編集終了です。


19. motion ( 動画 )のインストールからホームページでの表示までの設

motion を使って動画のホームページ作成してみました。

motion のインストールは、依存するパッケージが沢山あるので、ここでは、yum を使用しています。
手順は、下記の通りです。詳細は、下記のフレームを参照してください。

参考情報

1 私のサーバ機の環境では、fswebcam と motion は、同時には、動作しませんでした。
 何か設定方法が有るのかもしれません。???

2 motion は、私のサーバ機ではかなりの負荷がかかっているようです。
 cpu の利用率・温度が、fswebcam の時は、10%・40度位に対して40%・50度を軽く越してしまいます。
 motion で動画を配信するには、パワーの有るCPUのサーバ機が必要ではないかと思います。

@ ffmpegを含めた依存パッケージのインストール

 依存パッケージ数が多いので、ここでは、yum を使用します。
 ( 事前に RPMforgeリポジトリを導入をしないと No package ffmpeg available.になります。)

  yum -y install ffmpeg

A motion ( motion-3.2.12.tar.gz )のインストール

  ダウンロードは、 ここを クリックしてください。

  cd /usr/local/src/; \
  tar -xvzof motion-3.2.12.tar.gz; \
  cd motion-3.2.12; \
  ./configure

  make && make install

B motion を起動時のエラー対策

  
これを忘れると motion は、動作しませんので注意してください。

  ディレクトリ( /var/run/motion )の作成

  mkdir -p /var/run/motion

C motion の起動スクリプトの作成

  motion と入力するだけで起動しますが、停止するのがチョット面倒です。
  上手い具合に、Fedora用の起動スクリプトが作成されているので流用し編集します。
  起動スクリプトの名前は、motion にしています。 ( 起動スクリプトの名前は、自由に決めてください。 )
  これにより、start/restart/stop が簡単にできるようになります。

  cp /usr/local/share/motion-3.2.12/examples/motion.init-Fedora \
  /etc/rc.d/init.d/motion; \
  chmod 755 /etc/rc.d/init.d/motion

D motion の起動スクリプトの編集

  パスの設定を2か所修正します。

  motion=${MOTION-/usr/bin/motion}  <--- 26行目
  ↓
  motion=${MOTION-/usr/local/bin/motion}

  pidfile=/var/run/motion.pid  <--- 26行目
  ↓
  pidfile=/var/run/motion/motion.pid

E motion-dist.conf を motion.conf でコピーし、編集します。

  14か所修正します。

F 一時的な動作確認

  motion -n のコマンドで動作確認します。
   ( 本番は、サービス(デーモン) つまり、裏で動作させます。 )
   ( -n : Run in non-daemon mode. )

  motion -n を入力すると
  ......... 何やらメッセージが沢山でます。

  終了は、(Ctrl)+C を入力します。

  ブラウザを起動し、URL に http://(ローカルIPアドレス):8081
  ( IEでは、不可 fire fox, Safariは、OK )
  にアクセスしてライブ映像が見れる事を確認。

G Javaアプレットを使用して、IEでも見られるホームページを作成する。

  cambozola ストリーミング・イメージ・ビューアを使用して、IE でも見られる様にします。

  ダウンロードは、 ここを クリックしてください。

H motion の起動・停止・再起動

  /etc/rc.d/init.d/motion start / restart / stop

  /etc/rc.d/init.d/motion restart
  motion を停止中:                [ OK ]
  motion を起動中:                [ OK ]

  pstree コマンドで動作を確認してみました。

  # pstree

  init-+-abrtd
     |-anacron
     |-crond
     |-httpd-+-httpd
     |     |-4*[httpd---26*[{httpd}]]
     |     `-2*[rotatelogs]
     |-6*[mingetty]
     |-
motion---2*[{motion}]
     |-ntpd
     |-proftpd
     |-rsyslogd---3*[{rsyslogd}]
     |-2*[sendmail]
     |-sshd---sshd---sshd---bash---su---bash---pstree
     `-udevd---2*[udevd]

I システム起動時に、自動起動するように設定をします。

  chkconfig --add motion; \
  chkconfig motion on

J 動画の外部への公開には、8081 の ポートを開放する必要があります。

K 上記手順の詳細を、下記に記述しています。

[ CentOS 6.4 で motion を動作させてみました ] の詳細は、
            [ここをクリック]してください。

下記は、motion のテスト用ホームページです。

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

上記の方法でこんな具合に表示します。
   ( 使用したUSBカメラは、ELECOM UCAM-DLA200HWH です。)

A
  ※ 参考にしたサイト  Papa Net ライブカメラサーバー(motion)


20. motion ( 静止画 )のインストールからホームページでの表示までの設定

H26.04.10 追加
motion で1秒更新の静止画の取込み・表示をしてみました。
( 当然、fswebcam の1分更新の定点カメラとの共用をしています。 )

---------------------------------------------------------------------------
※※ 参考情報 1 ※※
CPU の利用率は、fswebcam (カメラ1台)時は、   10〜15%
fswebcam (カメラ1台) + motion 静止画(カメラ1台)
30〜40%
fswebcam (カメラ1台) + motion 静止画(カメラ2台)
70% 以上になります。
motion のアプリは、かなり CPU の負荷に影響しますので、注意して下さい。

※※ 参考情報 2 ※※
今回、fswebcam で使用できなかった BUFFALO の USB カメラが、motion でカメラ1台時は、使用出来ました。
カメラ2台の時には、motion は、 USB カメラを選ぶようです。ELECOM 2台では、動作 しましたが、BUFFALO + ELECOM と BUFFALO + BUFFALO の組合せでは、動作しませんでした。
なお、この検証は、私のサーバ機では、重荷なので、DELL のデスクトップ PC で行いました。
この時の CPU の利用率は、70% を超えていました。
( DELL デスクトップ PC の仕様は、AMD Athlon(tm) 64 Processor 3500+ 2.2GHz です。)

※※ 注意情報 ※※
USB カメラを入替えた時には、必ず motion を restart してください。
---------------------------------------------------------------------------

インストール・起動スクリプトの作成までは、19項の motion ( 動画 )@〜Dまでは、同じ 手順で行います。また、将来複数台のカメラを使用することを考慮し、カメラ毎の設定 conf ファイルは、thread○.conf で設定する方法で行いました。


@ motion.conf と thread1.conf の編集
motion.conf の編集

cp /usr/local/etc/motion-dist.conf /usr/local/etc/motion.conf
vi /usr/local/etc/motion.conf

thread1.conf の編集
thread1.conf のファイルは、/usr/local/src/motion-3.2.12 に展開された設定ファイル
thread1.conf を /usr/local/etc/ にコピーして編集します。

cp /usr/local/src/motion-3.2.12/thread1.conf /usr/local/etc/
vi /usr/local/etc/thread1.conf

[ 静止画の時の motion,thread の編集箇所 ] の詳細は、
            [ここをクリック]してください。

---------------------------------------------------------------------------
  
● ホームページの記述は、下記の通りです。参考にしてください。
---------------------------------------------------------------------------
   ※※ 本体ページの HTML ※※
   ( 表示サイズは、css で設定しています。 )
省略
  <table border="1" width="100%"><col width="100%">
  <tr><td align="left" valign="top">
  
iframe の枠線・スクロールバーは、表示なし・余白もなしにします。
  <iframe src="./○○○○.html" marginwidth="0" marginheight="0"
   frameborder="0" scrolling="no" width="497" height="366">
   表示できません。</iframe>
  </td></tr>
  </table>

  
※※ iframeからリンクするページ(○○○○.html)の HTML ※※

  
写真の枠線は、こちら側で設定します。
省略
  
1秒毎の画面更新は、ここで設定します。
<meta http-equiv="Refresh" content="1">
   </head>
   <style type="text/css"><!--
   /* 表示領域 枠線設定 */
   table.wakusen {border: solid 1px #649633; border-collapse: collapse;}
   --></style>
  </head>
   <body>
   <div>
  <table class="wakusen" border="1" width="100%"><col width="100%">
  <tr><td align="left">
  <img src = "./snapshot.jpg" width="494" height="362"
      title="今の風景写真を表示中" alt="今の風景写真を表示中>
  </td></tr>
  </table>


TOPへ戻る