カテゴリー: Linux

Zabbixエージェントのインストール

Zabbixエージェントを沢山インストールしたのでメモ。

Zabbix SIAのyumリポジトリを利用する場合

Zabbix 2.2 for RHEL5, Oracle Linux 5, CentOS 5:

# rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/5/x86_64/zabbix-release-2.2-1.el5.noarch.rpm

Zabbix 2.2 for RHEL6, Oracle Linux 6, CentOS 6:

# rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm

Zabbix agent だけインストールする場合

# yum install zabbix-agent

エージェントにはスタンドアロンの「zabbix_agentd」とxinetd経由の「zabbix_agent」の2種類ある。
「zabbix_agent」は機能に制限があるようなので「zabbix_agentd」を利用する。

設定ファイル「/etc/zabbix/zabbix_agentd.conf」を編集

Server=ZabbixサーバのIPに設定

エージェントの起動

# service zabbix-agent start

エージェントのステータス確認

# service zabbix-agent status

自動起動の設定

# chkconfig zabbix-agent on

ファイアウォールがある場合はZabbix Agentホストのポート10050番を開けないと監視されない。
iptablesの設定を変更してポートを開放する。
※Zabbixサーバ側はポート10051番が開いてる必要がある。

後はZabbixサーバ側でホストを追加して「Template OS Linux」テンプレートとかをリンクさせて
しばらく待つ。

■参考
Zabbix Documentation 2.2
https://www.zabbix.com/documentation/2.2/manual/installation/install_from_packages#red_hat_enterprise_linux_centos

Zabbix 2.4 を yumでインストール(CentOS6.5)※このシリーズ
https://blog.apar.jp/linux/334/

(12)Cannot allocate memory: fork: Unable to fork new process が出たので調査を開始

やったことのメモ。

(12)Cannot allocate memory: fork: Unable to fork new process
が発生したので調査のためにスクリプトを追加。

発生までの経緯をみるとどうもswapが徐々に喰いつぶされていき、swapが無くなると
上記のエラーが発生しているような感じ。

徐々にといっても何らかのタイミングでガクンとswapが減るのでそれをどうにか
突き止めたい。。。

いろいろ調べて以下のページを参考にしてスクリプトを作成(そのまま)

Find Out What Is Using Your Swap
http://northernmost.org/blog/find-out-what-is-using-your-swap/
/proc/以下のプロセスのフォルダ内のsmaps内をさらって合計していく感じ。

■getswap.sh

    #!/bin/bash
    # Get current swap usage for all running processes
    # Erik Ljungstrom 27/05/2011
    SUM=0
    OVERALL=0
    for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
            PID=`echo $DIR | cut -d / -f 3`
            PROGNAME=`ps -p $PID -o comm --no-headers`
            for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
            do
                    let SUM=$SUM+$SWAP
            done
            echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
            let OVERALL=$OVERALL+$SUM
            SUM=0

    done
    echo "Overall swap used: $OVERALL"

■cronswap.sh
クーロンで叩く用。

    #!/bin/bash
    FILENAME=`date +"%Y%m%d_%H%M%S"`
    echo "${FILENAME}"
    /root/swapLog/getswap.sh  | egrep -v "Swap used: 0" |sort -n -k 5 > /root/swapLog/log/"${FILENAME}".log

■logs
このフォルダに日時の形式で出力

■cronの設定
1ファイル2KB程度なのでとりあえずとりっぱなしで。10分毎。

    #swaplog
    */10 * * * * /root/swapLog/cronswap.sh

■設置時のswap出力例
swapを使ってるプロセスが表示される。

    $ less 20150914_162958.log 
    Overall swap used: 123388                                                                                                                                                                                                                    
    PID=1840 - Swap used: 28 - (syslogd )
    PID=2245 - Swap used: 28 - (saslauthd )
    PID=2247 - Swap used: 28 - (saslauthd )
    PID=2248 - Swap used: 28 - (saslauthd )
    PID=2244 - Swap used: 32 - (saslauthd )
    PID=2246 - Swap used: 32 - (saslauthd )
    PID=1843 - Swap used: 44 - (klogd )
    PID=2328 - Swap used: 48 - (mingetty )
    PID=2323 - Swap used: 52 - (mingetty )
    PID=2332 - Swap used: 52 - (mingetty )
    PID=2307 - Swap used: 56 - (gam_server )
    PID=2324 - Swap used: 56 - (mingetty )
    PID=2330 - Swap used: 56 - (mingetty )
    PID=2329 - Swap used: 60 - (mingetty )
    PID=1 - Swap used: 64 - (init )
    ・・・・
    PID=2274 - Swap used: 148 - (hald-runner )
    PID=9940 - Swap used: 148 - (pop3-login )
    PID=2054 - Swap used: 152 - (mysqld_safe )
    PID=2017 - Swap used: 224 - (vsftpd )
    PID=496 - Swap used: 260 - (udevd )
    PID=1962 - Swap used: 304 - (sshd )
    PID=1901 - Swap used: 448 - (3dm2 )
    PID=1914 - Swap used: 448 - (3dm2 )
    PID=1915 - Swap used: 448 - (3dm2 )
    PID=2273 - Swap used: 1900 - (hald )
    PID=2320 - Swap used: 7172 - (miniserv.pl )
    PID=1804 - Swap used: 7468 - (miniserv.pl )
    PID=17177 - Swap used: 7736 - (spamd )
    PID=17197 - Swap used: 8364 - (spamd )
    PID=2303 - Swap used: 10060 - (yum-updatesd )
    PID=2158 - Swap used: 24512 - (spamd )
    PID=2101 - Swap used: 44588 - (mysqld )

あと合わせてsarコマンドも設定

参考
http://blog.ybbo.net/2013/07/10/oom-killer%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/
http://b.l0g.jp/dev/finding-bottleneck-with-sar1/
http://b.l0g.jp/dev/finding-bottleneck-with-sar2/

pstreeも確認するようにする。

$ pstree -lcph

http://itpro.nikkeibp.co.jp/article/COLUMN/20071204/288730/

またアクセスログの記録と対応するようにApacheのaccess_logの先頭にPIDを表示するように設定を変更した。
「%P」はPIDを出力する。先頭に追加。
これでswapを確保したままになっているのがhttpのプロセスだった場合にどのアクセスと対応しているのか
がわかるはず。

    $ diff httpd.conf httpd.conf_back20150914 
    485,486c485,486
    < LogFormat "%P %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    < LogFormat "%P %h %l %u %t \"%r\" %>s %b" common
    ---
    > LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    > LogFormat "%h %l %u %t \"%r\" %>s %b" common

再起動必須。

実際「Cannot allocate memory」が出て已む無くapacheをリスタートしようと
したのに起動に失敗したときの対応は以下。

#service httpd restart
失敗した!
#/usr/sbin/lsof -i | grep http
開いているファイルのプロセスを特定
#kill-9 プロセスID
そのほかのプロセスも殺す。
#service httpd start

後はswapの残りを監視してアラート飛ばすのを作る予定。

Vagrant CentOS7 上でdockerはじめてみた

Vagrant CentOS7 上でdockerはじめてみた

Vagrantbox.es
http://www.vagrantbox.es/

CentOS 7 x64 (Minimal, Shrinked, Guest Additions 4.3.26) (Monthly updates)
https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box

↑のboxで起動しただけの初期状態からdockerをインストールする。

■dockerを探す

[vagrant@localhost ~]$ yum search docker
Loaded plugins: fastestmirror
・・・・・
============================================================================================================ N/S matched: docker ============================================================================================================
cockpit-docker.x86_64 : Cockpit user interface for Docker containers
docker-logrotate.x86_64 : cron job to run logrotate on docker containers
docker-python.x86_64 : An API client for docker written in Python
docker-registry.noarch : Registry server for Docker
docker-registry.x86_64 : Registry server for Docker
docker-selinux.x86_64 : SELinux policies for Docker
docker.x86_64 : Automates deployment of containerized applications
docker-devel.x86_64 : A golang registry for global request variables (source libraries)

  Name and summary matches only, use "search all" for everything.

■インストール

[root@localhost ~]# yum install docker

[root@localhost ~]# systemctl status docker.service
docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled)
   Active: inactive (dead)
     Docs: http://docs.docker.com

■いざ起動

[root@localhost ~]# systemctl start docker.service
Job for docker.service failed. See 'systemctl status docker.service' and 'journalctl -xn' for details.

動かない。。

[root@localhost ~]# systemctl status docker.service
docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled)
   Active: failed (Result: exit-code) since Fri 2015-06-26 03:37:05 UTC; 4min 2s ago
     Docs: http://docs.docker.com
  Process: 2467 ExecStart=/usr/bin/docker -d $OPTIONS $DOCKER_STORAGE_OPTIONS $DOCKER_NETWORK_OPTIONS $ADD_REGISTRY $BLOCK_REGISTRY $INSECURE_REGISTRY (code=exited, status=1/FAILURE)
 Main PID: 2467 (code=exited, status=1/FAILURE)

Jun 26 03:36:05 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
Jun 26 03:36:05 localhost.localdomain docker[2467]: time="2015-06-26T03:36:05Z" level=info msg="+job serveapi(unix:///var/run/docker.sock)"
Jun 26 03:36:05 localhost.localdomain docker[2467]: time="2015-06-26T03:36:05Z" level=info msg="Listening for HTTP on unix (/var/run/docker.sock)"
Jun 26 03:37:05 localhost.localdomain docker[2467]: time="2015-06-26T03:37:05Z" level=fatal msg="Shutting down daemon due to errors: error intializing graphdriver: exit status 1"
Jun 26 03:37:05 localhost.localdomain systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
Jun 26 03:37:05 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.
Jun 26 03:37:05 localhost.localdomain systemd[1]: Unit docker.service entered failed state.

■以下のページを発見。

CentOS7でDockerを動かす場合
http://shimakaze.hatenablog.com/entry/2015/04/02/103449

■とりあえず「libdevmapper」インストール。

# yum -y install libdevmapper.so.1.02

[root@localhost ~]# systemctl start docker.service
Job for docker.service failed. See 'systemctl status docker.service' and 'journalctl -xn' for details.

[root@localhost ~]# systemctl status docker.service
docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled)
   Active: failed (Result: exit-code) since Fri 2015-06-26 03:45:26 UTC; 14s ago
     Docs: http://docs.docker.com
  Process: 2680 ExecStart=/usr/bin/docker -d $OPTIONS $DOCKER_STORAGE_OPTIONS $DOCKER_NETWORK_OPTIONS $ADD_REGISTRY $BLOCK_REGISTRY $INSECURE_REGISTRY (code=exited, status=1/FAILURE)
 Main PID: 2680 (code=exited, status=1/FAILURE)

Jun 26 03:45:26 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
Jun 26 03:45:26 localhost.localdomain docker[2680]: time="2015-06-26T03:45:26Z" level=info msg="+job serveapi(unix:///var/run/docker.sock)"
Jun 26 03:45:26 localhost.localdomain docker[2680]: time="2015-06-26T03:45:26Z" level=info msg="Listening for HTTP on unix (/var/run/docker.sock)"
Jun 26 03:45:26 localhost.localdomain docker[2680]: time="2015-06-26T03:45:26Z" level=fatal msg="Shutting down daemon due to errors: error intializing graphdriver: Error running DeleteDevice dm_task_run failed"
Jun 26 03:45:26 localhost.localdomain systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
Jun 26 03:45:26 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.
Jun 26 03:45:26 localhost.localdomain systemd[1]: Unit docker.service entered failed state.

まだ動かない。。

■調べて以下のページをみつける。

[1.6.0][graphdriver] prior storage driver “devicemapper” failed: error intializing graphdriver #13008
https://github.com/docker/docker/issues/13008

[root@localhost lib]# pwd
/var/lib
[root@localhost lib]# rm -rf docker/

とりあえず消してみた。

[root@localhost ~]# systemctl start docker.service
Job for docker.service failed. See 'systemctl status docker.service' and 'journalctl -xn' for details.

[root@localhost ~]# systemctl status docker.service -l
docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled)
   Active: failed (Result: exit-code) since Fri 2015-06-26 03:51:46 UTC; 47s ago
     Docs: http://docs.docker.com
  Process: 15073 ExecStart=/usr/bin/docker -d $OPTIONS $DOCKER_STORAGE_OPTIONS $DOCKER_NETWORK_OPTIONS $ADD_REGISTRY $BLOCK_REGISTRY $INSECURE_REGISTRY (code=exited, status=1/FAILURE)
 Main PID: 15073 (code=exited, status=1/FAILURE)

Jun 26 03:51:45 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
Jun 26 03:51:46 localhost.localdomain docker[15073]: time="2015-06-26T03:51:46Z" level=info msg="+job serveapi(unix:///var/run/docker.sock)"
Jun 26 03:51:46 localhost.localdomain docker[15073]: time="2015-06-26T03:51:46Z" level=info msg="Listening for HTTP on unix (/var/run/docker.sock)"
Jun 26 03:51:46 localhost.localdomain docker[15073]: time="2015-06-26T03:51:46Z" level=fatal msg="Shutting down daemon due to errors: error intializing graphdriver: Unable to take ownership of thin-pool (centos-docker--pool) that already has used data blocks"
Jun 26 03:51:46 localhost.localdomain systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
Jun 26 03:51:46 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.
Jun 26 03:51:46 localhost.localdomain systemd[1]: Unit docker.service entered failed state.

動かない・・・。

■一旦dockerを消す。

[root@localhost ~]# yum remove docker  

■とりあえずupdateする。

[root@localhost ~]# yum update

■もう一回いれてみる。

[root@localhost ~]# yum install docker

[root@localhost ~]# systemctl start docker

[root@localhost ~]# systemctl status docker
docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled)
   Active: active (running) since Fri 2015-06-26 03:57:52 UTC; 17s ago
     Docs: http://docs.docker.com
 Main PID: 1027 (docker)
   CGroup: /system.slice/docker.service
           └─1027 /usr/bin/docker -d --selinux-enabled

Jun 26 03:57:51 localhost.localdomain docker[1027]: time="2015-06-26T03:57:51Z" level=warning msg="Docker could not enable SELinux on the host system"
Jun 26 03:57:51 localhost.localdomain docker[1027]: time="2015-06-26T03:57:51Z" level=info msg="+job init_networkdriver()"
Jun 26 03:57:52 localhost.localdomain docker[1027]: time="2015-06-26T03:57:52Z" level=info msg="-job init_networkdriver() = OK (0)"
Jun 26 03:57:52 localhost.localdomain docker[1027]: time="2015-06-26T03:57:52Z" level=info msg="Loading containers: start."
Jun 26 03:57:52 localhost.localdomain docker[1027]: time="2015-06-26T03:57:52Z" level=info msg="Loading containers: done."
Jun 26 03:57:52 localhost.localdomain docker[1027]: time="2015-06-26T03:57:52Z" level=info msg="docker daemon: 1.6.2 ba1f6c3/1.6.2; execdriver: native-0.2; graphdriver: devicemapper"
Jun 26 03:57:52 localhost.localdomain docker[1027]: time="2015-06-26T03:57:52Z" level=info msg="+job acceptconnections()"
Jun 26 03:57:52 localhost.localdomain docker[1027]: time="2015-06-26T03:57:52Z" level=info msg="-job acceptconnections() = OK (0)"
Jun 26 03:57:52 localhost.localdomain docker[1027]: time="2015-06-26T03:57:52Z" level=info msg="Daemon has completed initialization"
Jun 26 03:57:52 localhost.localdomain systemd[1]: Started Docker Application Container Engine.

動いた・・・!

先に「libdevmapper.so.1.02」がはいってないといけなかったのか?

■動いたので自動起動に。

[root@localhost ~]# systemctl enable docker
ln -s '/usr/lib/systemd/system/docker.service' '/etc/systemd/system/multi-user.target.wants/docker.service'

■Dockerイメージの検索

[root@localhost ~]# docker search centos
INDEX       NAME                                    DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/centos                        The official build of CentOS.                   1087      [OK]       
docker.io   docker.io/tutum/centos                  Centos image with SSH access. For the root...   13                   [OK]
docker.io   docker.io/blalor/centos                 Bare-bones base CentOS 6.5 image                9                    [OK]
docker.io   docker.io/torusware/speedus-centos      Always updated official CentOS docker imag...   6                    [OK]
docker.io   docker.io/million12/centos-supervisor   Base CentOS-7 with supervisord launcher, h...   4                    [OK]
docker.io   docker.io/jdeathe/centos-ssh            CentOS-6 6.6 x86_64 / EPEL Repo. / OpenSSH...   3                    [OK]
docker.io   docker.io/layerworx/centos              A general CentOS 6 image with the EPEL6 an...   2                    [OK]
docker.io   docker.io/akroh/centos                  Centos 6 container that has been updated w...   0                    [OK]
docker.io   docker.io/nathonfowlie/centos-jre       Latest CentOS image with the JRE pre-insta...   0                    [OK]
docker.io   docker.io/pdericson/centos              Docker image for CentOS                         0                    [OK]

■Dockerイメージのダウンロード
とりあえず公式のcentosを取得する

[root@localhost ~]# docker pull docker.io/centos
Trying to pull repository docker.io/centos ...
7322fbe74aa5: Download complete
f1b10cd84249: Download complete
c852f6d61e65: Download complete
Status: Downloaded newer image for docker.io/centos:latest

■ダウンロードしたイメージの確認

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.io/centos    latest              7322fbe74aa5        7 days ago          172.2 MB

■Dockerコンテナの作成
docker runでコンテナの新規作成と実行の両方が行われる

[root@localhost ~]# docker run -it --name centos1 docker.io/centos:latest /bin/bash
Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.
[root@f89ddd90d0fd /]# 

実行された。

docker run の主なオプション
-i:コンテナーの標準入力を開く。/bin/bashなどでコンテナーを操作する際に指定
-t:tty(端末デバイス)を確保する。/bin/bashなどでコンテナーを操作する際に指定
-d:バックグラウンドで実行する(後述)。既定では、コンテナーをフォアグラウンドで実行するため、Webサーバーやアプリケーションサーバーなど常時実行するコンテナーで指定
-p {ホストのポート番号}:{コンテナーのポート番号}:Dockerサーバーのホストとポートマッピングを構成

■コンテナにapache入れてみる。

[root@f89ddd90d0fd /]# yum install httpd

■一旦コンテナ停止

[root@f89ddd90d0fd /]# exit
exit

[Ctrl]+[d]キーでbashプロセスを終了できる。

コンテナを停止することなく、元のシェルに戻したい場合は[Ctrl-P]+[Ctrl-q]でコンテナのTTYを抜けられる。

■停止中のコンテナも含めてコンテナの状態を確認する

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS                     PORTS               NAMES
f89ddd90d0fd        docker.io/centos:latest   "/bin/bash"         9 minutes ago       Exited (0) 3 minutes ago                       centos1

■コンテナの起動

[root@localhost ~]# docker start centos1
centos1

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS              PORTS               NAMES
f89ddd90d0fd        docker.io/centos:latest   "/bin/bash"         10 minutes ago      Up 19 seconds                           centos1 

■コンテナへの再接続

[root@localhost ~]# docker attach centos1
Enter押す
[root@f89ddd90d0fd /]# 

■[Ctrl-P]+[Ctrl-q]でTTY抜けてみる。

[root@f89ddd90d0fd /]# [root@localhost ~]# 

■コンテナの停止

[root@localhost ~]# docker stop centos1
centos1

■コンテナの再起動
※コンテナのプロセスを強制終了して再度スタート

[root@localhost ~]# docker restart centos1
centos1

■コンテナのコミット

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS                     PORTS               NAMES
f89ddd90d0fd        docker.io/centos:latest   "/bin/bash"         About an hour ago   Exited (0) 7 seconds ago                       centos1

[root@localhost ~]# docker commit -a MOGUMAGU -m "CentOS7 installed Apache" centos1 localrepo:withApache
74fe551af11fbdbe8e5e4849fcd4dd580ce7057d80e976ceeaaf8b9750954756

保存したイメージの確認

[root@localhost ~]# docker images localrepo
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
localrepo           withApache          74fe551af11f        44 seconds ago      268.4 MB

イメージの作成履歴を見る

[root@localhost ~]# docker images -t
Warning: '-t' is deprecated, it will be removed soon. See usage.
└─f1b10cd84249 Virtual Size: 0 B
  └─c852f6d61e65 Virtual Size: 172.2 MB
    └─7322fbe74aa5 Virtual Size: 172.2 MB Tags: docker.io/centos:latest
      └─74fe551af11f Virtual Size: 268.4 MB Tags: localrepo:withApache

■コンテナの削除

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS                     PORTS               NAMES
f89ddd90d0fd        docker.io/centos:latest   "/bin/bash"         About an hour ago   Exited (0) 5 minutes ago                       centos1
[root@localhost ~]# docker rm centos1
centos1
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost ~]# 

※保管が必要ならあらかじめdocker commitでイメージを保管しておくこと

■さっき作ったコンテナから起動

[root@localhost ~]# docker run -it --name centos2 localrepo:withApache /bin/bash
Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.
[root@5cdc79690cee /]# 
[root@5cdc79690cee /]# yum info httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
Installed Packages
Name        : httpd
Arch        : x86_64
Version     : 2.4.6
Release     : 31.el7.centos
Size        : 9.4 M
Repo        : installed
From repo   : base
Summary     : Apache HTTP Server
URL         : http://httpd.apache.org/
License     : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
            : web server.

apache入ってる。

[Ctrl-P]+[Ctrl-q]でTTY抜ける

[root@5cdc79690cee ~]# [root@localhost ~]# 

コンテナの起動状態を確認。

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                  COMMAND             CREATED              STATUS              PORTS               NAMES
5cdc79690cee        localrepo:withApache   "/bin/bash"         About a minute ago   Up About a minute                       centos2

動いてる。

■webサーバとして起動する例
先ほどコミットしたlocalrepo:withApacheをベースにwebサーバを起動しブラウザから確認する。

[root@localhost ~]# docker run -d --name webserver --expose=80 --publish 80:80 localrepo:withApache /usr/sbin/httpd -D FOREGROUND 

上記でホストのipでブラウザアクセスしたらapacheの初期画面が表示される。

状態はこちら

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                  COMMAND                CREATED             STATUS                     PORTS                NAMES
6fd53d6fd905        localrepo:withApache   "/usr/sbin/httpd -D    3 minutes ago       Up 3 minutes               0.0.0.0:80->80/tcp   webserver
5cdc79690cee        localrepo:withApache   "/bin/bash"            46 minutes ago      Exited (0) 8 minutes ago                        centos2

実際のコンテンツなどはホストとボリュームを共有して保持しておくほうがいいみたい。

Vagrant:ゲストOSのディスク容量を増やしたときの作業ログ

Vagrantで立てたゲストの容量が8GBしかなかったので容量を20GBに増やしたときの作業ログ。

■環境
ホストOS:CentOS6.5
Vagrant:1.7.2
VirtualBox:4.3.28
ゲストOS:CentOS7

■ホスト側の作業場所

$ pwd
/home/user/VirtualBox VMs/cent7_default_1434608680280_85072

$ ll
合計 2961448
drwx------  3 user user       4096  6月 18 15:42 2015 ./
drwx------ 11 user user       4096  6月 18 15:24 2015 ../
drwx------  2 user user       4096  6月 18 15:24 2015 Logs/
-rw-------  1 user user 3033137152  6月 18 15:42 2015 box-disk1.vmdk
-rw-------  1 user user       8514  6月 18 15:42 2015 cent7_default_1434608680280_85072.vbox
-rw-------  1 user user       8514  6月 18 15:24 2015 cent7_default_1434608680280_85072.vbox-prev

■元々のvmdkファイルの確認

$ pwd
/home/user/VirtualBox VMs/tuat_163_cent7_default_1434608680280_85072

$ VBoxManage showhdinfo box-disk1.vmdk
UUID:           cd97ec61-426b-4d6b-9ae3-d79d07300179
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       /home/user/VirtualBox VMs/tuat_163_cent7_default_1434608680280_85072/box-disk1.vmdk
Storage format: VMDK
Format variant: dynamic default
Capacity:       8192 MBytes
Size on disk:   2892 MBytes
In use by VMs:  cent7_default_1434608680280_85072 (UUID: 39b0d85e-cff7-40c3-b497-bc6b110fc49a)


■vmdkをvdiとしてクローン


$ VBoxManage clonehd box-disk1.vmdk box-disk1.vdi --format VDI
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 3630f1b4-3090-4009-88eb-4d634da2e42f

$ ll
合計 5948496
drwx------  3 user user       4096  6月 18 17:37 2015 ./
drwx------ 11 user user       4096  6月 18 15:24 2015 ../
drwx------  2 user user       4096  6月 18 15:24 2015 Logs/
-rw-------  1 user user 3060793344  6月 18 17:37 2015 box-disk1.vdi
-rw-------  1 user user 3033137152  6月 18 15:42 2015 box-disk1.vmdk
-rw-------  1 user user       8514  6月 18 17:37 2015 cent7_default_1434608680280_85072.vbox
-rw-------  1 user user       8514  6月 18 15:42 2015 cent7_default_1434608680280_85072.vbox-prev

■vdiのサイズ変更

$ VBoxManage modifyhd box-disk1.vdi --resize 20480
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

20(GB) * 1024(MB) = 20480

■できたvdiの確認

$ VBoxManage showhdinfo box-disk1.vdi
UUID:           3630f1b4-3090-4009-88eb-4d634da2e42f
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       /home/user/VirtualBox VMs/cent7_default_1434608680280_85072/box-disk1.vdi
Storage format: VDI
Format variant: dynamic default
Capacity:       20480 MBytes
Size on disk:   2919 MBytes

■ここからGUIのVirtualBoxの管理画面でHDDをVDIに差し替える

ここのCUIでのやり方がわからない・・・。

※あとで判明。。以下を参考に。

Vagrant on Mac上のCeontOS7のディスク容量を後から増やす

■HDDをVDIに差し替えたらゲストを起動
ここからゲストでの操作

fdiskで/dev/sdaの容量が増えている事を確認する。

# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000ac089

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    16777215     7875584   8e  Linux LVM

Disk /dev/mapper/centos-swap: 859 MB, 859832320 bytes, 1679360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

Disk /dev/mapper/centos-root: 7201 MB, 7201619968 bytes, 14065664 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

増加したところに新しくパーティション、論理ボリュームを作成し容量を増やす。

■パーティションを追加

# fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

コマンド (m でヘルプ): n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): 
Using default response p
パーティション番号 (3,4, default 3): 3
最初 sector (16777216-41943039, 初期値 16777216): 
初期値 16777216 を使います
Last sector, +sectors or +size{K,M,G} (16777216-41943039, 初期値 41943039): 
初期値 41943039 を使います
Partition 3 of type Linux and of size 12 GiB is set

コマンド (m でヘルプ): p

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000ac089

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    16777215     7875584   8e  Linux LVM
/dev/sda3        16777216    41943039    12582912   83  Linux

「/dev/sda3」が追加された

■/dev/sda3のシステムをLinux LVMにする

コマンド (m でヘルプ): t
パーティション番号 (1-3, default 3): 3
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

コマンド (m でヘルプ): p

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000ac089

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    16777215     7875584   8e  Linux LVM
/dev/sda3        16777216    41943039    12582912   8e  Linux LVM

■反映して終了する

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。

WARNING: Re-reading the partition table failed with error 16: デバイスもしくはリソースがビジー状態です.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
ディスクを同期しています。

■ゲストの再起動

# shutdown -r now

■Physical Volumeの状態を確認

# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               centos
  PV Size               7.51 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              1922
  Free PE               0
  Allocated PE          1922
  PV UUID               zR6Hya-5HZV-3dT5-NQZA-b3gF-gGif-SA3K4d

■pvcreateコマンドでPhysical Volumeを作成する。

# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created

■作成内容を確認。

# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               centos
  PV Size               7.51 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              1922
  Free PE               0
  Allocated PE          1922
  PV UUID               zR6Hya-5HZV-3dT5-NQZA-b3gF-gGif-SA3K4d

  "/dev/sda3" is a new physical volume of "12.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda3
  VG Name               
  PV Size               12.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               dJEJG3-j8DO-JWwn-cHyc-xeHR-cs5J-3jhgfT

■Volume GroupにPhysical Volumeを追加する

# vgextend centos /dev/sda3
  Volume group "centos" successfully extended

■Volume Groupの確認

# vgdisplay 
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               19.50 GiB
  PE Size               4.00 MiB
  Total PE              4993
  Alloc PE / Size       1922 / 7.51 GiB
  Free  PE / Size       3071 / 12.00 GiB
  VG UUID               mtWHXb-DYzV-cxFV-psLD-XvDR-sKjQ-lUZygi

増えてる。

■Logical Volumeの容量を増やす

増やしたいマウントポイントのLogical Volumeをdfコマンドで確認。

# df -h
ファイルシス            サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root   6.7G  2.5G  4.3G   37% /
devtmpfs                  236M     0  236M    0% /dev
tmpfs                     245M     0  245M    0% /dev/shm
tmpfs                     245M  4.3M  241M    2% /run
tmpfs                     245M     0  245M    0% /sys/fs/cgroup
/dev/sda1                 497M  166M  332M   34% /boot

今回の対象は「/dev/mapper/centos-root」

■lvdisplayコマンドでLogical Volumeの詳細を確認。

# lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                IuMeqQ-dd1j-73Wo-tZLt-7wYA-KCaB-FZlS2B
  LV Write Access        read/write
  LV Creation host, time localhost, 2014-08-01 21:31:57 +0900
  LV Status              available
  # open                 2
  LV Size                820.00 MiB
  Current LE             205
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                V2bGxj-hmyn-PP1V-RNdJ-hSY1-PVwu-L3ekOr
  LV Write Access        read/write
  LV Creation host, time localhost, 2014-08-01 21:31:58 +0900
  LV Status              available
  # open                 1
  LV Size                6.71 GiB
  Current LE             1717
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

■Logical Volumeのサイズを拡張。

# lvextend -L +12284 /dev/centos/root
  Size of logical volume centos/root changed from 6.71 GiB (1717 extents) to 18.70 GiB (4788 extents).
  Logical volume root successfully resized

ここの「12284」はvgdisplayで表示されたFree PE / SizeとPE Sizeをかけた値になる
3071 * 4.00 = 12284

■Logical Volumeの確認。

# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                IuMeqQ-dd1j-73Wo-tZLt-7wYA-KCaB-FZlS2B
  LV Write Access        read/write
  LV Creation host, time localhost, 2014-08-01 21:31:57 +0900
  LV Status              available
  # open                 2
  LV Size                820.00 MiB
  Current LE             205
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                V2bGxj-hmyn-PP1V-RNdJ-hSY1-PVwu-L3ekOr
  LV Write Access        read/write
  LV Creation host, time localhost, 2014-08-01 21:31:58 +0900
  LV Status              available
  # open                 1
  LV Size                18.70 GiB
  Current LE             4788
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

【ここからファイルシステムのリサイズ】

■CentOS7でファイルシステムがxfsだったのでresize2fsの代わりにxfs_growfsを使用

# xfs_growfs /dev/centos/root 
meta-data=/dev/mapper/centos-root isize=256    agcount=4, agsize=439552 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=1758208, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 1758208 to 4902912

■出来た!

# df -h
ファイルシス            サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root    19G  2.5G   17G   14% /
devtmpfs                  236M     0  236M    0% /dev
tmpfs                     245M     0  245M    0% /dev/shm
tmpfs                     245M  4.3M  241M    2% /run
tmpfs                     245M     0  245M    0% /sys/fs/cgroup
/dev/sda1                 497M  166M  332M   34% /boot

■参考ページ

VirtualBoxのゲストOSのディスク容量を増やす
http://te2u.hatenablog.jp/entry/2015/04/20/012914

Vagrant VMのディスクサイズを後から拡張する方法
http://blog.dakatsuka.jp/2014/04/24/vagrant-hdd-resize.html

CentOS 7(XFS)でLVMディスク拡張でハマったこと
http://qiita.com/fetaro/items/d7dc74262633ba474bc8

昔契約したさくらインターネットのVPSでyum-updateonbootがonに 設定されていたのでoffにした件

昔契約したさくらインターネットのVPSでyum-updateonbootがonに
設定されていたのでoffにした。

さくらインターネットのサイトでは初回起動時のみ有効と書いて
あったんだけどなんでだろうか?

https://help.sakura.ad.jp/app/answers/detail/a_id/2126
起動デーモンの項目の「yum-updateonboot」。

今回上記に気づいたのはduplicityでのバックアップが出来なくなって
いたから。

バックアップができなくなったのがサーバの再起動をした日
からだった。

再起動をした理由は「VENOM」の対策のため。
※正確にはサーバを停止してその後管理パネルから起動した。

起動時にかなり時間がかかっていて、RPMをUPDATEする旨の文字が
出ていて気になっていた。

その後はduplicityでバックアップをとろうとすると以下のエラーが出ていた。

Traceback (most recent call last):
  File "/usr/bin/duplicity", line 45, in <module>
    from duplicity import collections
  File "/usr/lib64/python2.6/site-packages/duplicity/collections.py", line 29, in <module>
    from duplicity import path
  File "/usr/lib64/python2.6/site-packages/duplicity/path.py", line 36, in <module>
    from duplicity import librsync
  File "/usr/lib64/python2.6/site-packages/duplicity/librsync.py", line 29, in <module>
    import _librsync
ImportError: librsync.so.1: cannot open shared object file: No such file or directory

結局今回はepelリポジトリを使ってduplicityをyumでインストールしなおしたら正常にバックアップできるようになった。

# yum install duplicity

※もともとは「duplicityをCentOS6.3にインストールするメモ」の方法でインストールしていた。
http://www.mogumagu.com/wp/wordpress/?p=1162

ちなみにOSのバージョンはインストールしたときは

CentOS release 6.2 (Final)

だったのに今みたら以下になっていた。

CentOS release 6.6 (Final)

他にもVPSサーバはあるのになんで1つのサーバだけ設定が違っていたのか謎。

YAMAHA NVR500をCentOS7にインストールしたMRTGで負荷監視する設定

YAMAHA NVR500をCentOS7にインストールしたMRTGで負荷監視する設定

設定メモ

■参考
CentOS7で作るネットワークサーバ構築ガイドを参考

■環境例
ルータのIPを192.168.1.1とする
MRTGを入れるサーバのIPを192.168.1.166とする

[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.1.1503 (Core) 

■CentOS7のサーバにMRTGをインストール

[root@localhost ~]# yum install mrtg

■コンフィグ設定

[root@localhost ~]# cfgmaker --out=/etc/mrtg/mrtg.cfg --global "workdir: /var/www/mrtg" --global "Language:eucjp" public@192.168.1.1
Use of uninitialized value $t in substitution (s///) at /bin/cfgmaker line 1375.
Use of uninitialized value $t in substitution (s///) at /bin/cfgmaker line 1376.
Use of uninitialized value $t in substitution (s///) at /bin/cfgmaker line 1377.
Use of uninitialized value $fs in pattern match (m//) at /bin/cfgmaker line 1382.
Use of uninitialized value $t in hash element at /bin/cfgmaker line 1383.
Use of uninitialized value $t in substitution (s///) at /bin/cfgmaker line 1375.
Use of uninitialized value $t in substitution (s///) at /bin/cfgmaker line 1376.
Use of uninitialized value $t in substitution (s///) at /bin/cfgmaker line 1377.
Use of uninitialized value $fs in pattern match (m//) at /bin/cfgmaker line 1382.
Use of uninitialized value $t in hash element at /bin/cfgmaker line 1383.
--base: Get Device Info on public@192.168.1.1:
SNMP Error:
no response received
SNMPv1_Session (remote host: "192.168.1.1" [192.168.1.1].161)
                  community: "public"
                 request ID: 132523945
                PDU bufsize: 8000 bytes
                    timeout: 2s
                    retries: 5
                    backoff: 1)
 at /usr/bin/../lib64/mrtg2/SNMP_util.pm line 651.
SNMPWALK Problem for 1.3.6.1.2.1.1 on public@192.168.1.1::::::v4only
 at /bin/cfgmaker line 951.
WARNING: Skipping public@192.168.1.1: as no info could be retrieved

Use of uninitialized value $comment_sysdescr in substitution (s///) at /bin/cfgmaker line 379.
Use of uninitialized value $sysname in concatenation (.) or string at /bin/cfgmaker line 412.
Use of uninitialized value $comment_sysdescr in concatenation (.) or string at /bin/cfgmaker line 412.
Use of uninitialized value $syscontact in concatenation (.) or string at /bin/cfgmaker line 412.
Use of uninitialized value $syslocation in concatenation (.) or string at /bin/cfgmaker line 412.
--base: Writing /etc/mrtg/mrtg.cfg

■エラーが出たのでルータ側でSNMPをざっくり有効化

NVR500の管理画面から実行したコマンド
snmp host any
snmp community read-only public
※これはざっくり設定なのでちゃんと制限したりしたほうが良いと思われます。

■もう一度コンフィグの設定

[root@localhost ~]# cfgmaker --out=/etc/mrtg/mrtg.cfg --global "workdir: /var/www/mrtg" --global "Language:eucjp" public@192.168.1.1
Use of uninitialized value $t in substitution (s///) at /bin/cfgmaker line 1375.
Use of uninitialized value $t in substitution (s///) at /bin/cfgmaker line 1376.
Use of uninitialized value $t in substitution (s///) at /bin/cfgmaker line 1377.
Use of uninitialized value $fs in pattern match (m//) at /bin/cfgmaker line 1382.
Use of uninitialized value $t in hash element at /bin/cfgmaker line 1383.
Use of uninitialized value $t in substitution (s///) at /bin/cfgmaker line 1375.
Use of uninitialized value $t in substitution (s///) at /bin/cfgmaker line 1376.
Use of uninitialized value $t in substitution (s///) at /bin/cfgmaker line 1377.
Use of uninitialized value $fs in pattern match (m//) at /bin/cfgmaker line 1382.
Use of uninitialized value $t in hash element at /bin/cfgmaker line 1383.
--base: Get Device Info on public@192.168.1.1:
--base: Vendor Id: Unknown Vendor - 1.3.6.1.4.1.1182.1.40
--base: Populating confcache
--base: Get Interface Info
--base: Walking ifIndex
--snpd:   public@192.168.1.1: -> 1 -> ifIndex = 1
--snpd:   public@192.168.1.1: -> 2 -> ifIndex = 2
--snpd:   public@192.168.1.1: -> 3 -> ifIndex = 3
--snpd:   public@192.168.1.1: -> 4 -> ifIndex = 4
--snpd:   public@192.168.1.1: -> 52 -> ifIndex = 52
--snpd:   public@192.168.1.1: -> 53 -> ifIndex = 53
--snpd:   public@192.168.1.1: -> 54 -> ifIndex = 54
--snpd:   public@192.168.1.1: -> 55 -> ifIndex = 55
--snpd:   public@192.168.1.1: -> 56 -> ifIndex = 56
--snpd:   public@192.168.1.1: -> 57 -> ifIndex = 57
--snpd:   public@192.168.1.1: -> 58 -> ifIndex = 58
--snpd:   public@192.168.1.1: -> 59 -> ifIndex = 59
--snpd:   public@192.168.1.1: -> 60 -> ifIndex = 60
--snpd:   public@192.168.1.1: -> 61 -> ifIndex = 61
--base: Walking ifType
--snpd:   public@192.168.1.1: -> 1 -> ifType = 6
--snpd:   public@192.168.1.1: -> 2 -> ifType = 6
--snpd:   public@192.168.1.1: -> 3 -> ifType = 1
--snpd:   public@192.168.1.1: -> 4 -> ifType = 20
--snpd:   public@192.168.1.1: -> 52 -> ifType = 24
--snpd:   public@192.168.1.1: -> 53 -> ifType = 24
--snpd:   public@192.168.1.1: -> 54 -> ifType = 24
--snpd:   public@192.168.1.1: -> 55 -> ifType = 24
--snpd:   public@192.168.1.1: -> 56 -> ifType = 24
--snpd:   public@192.168.1.1: -> 57 -> ifType = 24
--snpd:   public@192.168.1.1: -> 58 -> ifType = 24
--snpd:   public@192.168.1.1: -> 59 -> ifType = 24
--snpd:   public@192.168.1.1: -> 60 -> ifType = 24
--snpd:   public@192.168.1.1: -> 61 -> ifType = 24
--base: Walking ifAdminStatus
--snpd:   public@192.168.1.1: -> 1 -> ifAdminStatus = 1
--snpd:   public@192.168.1.1: -> 2 -> ifAdminStatus = 1
--snpd:   public@192.168.1.1: -> 3 -> ifAdminStatus = 1
--snpd:   public@192.168.1.1: -> 4 -> ifAdminStatus = 1
--snpd:   public@192.168.1.1: -> 52 -> ifAdminStatus = 1
--snpd:   public@192.168.1.1: -> 53 -> ifAdminStatus = 1
--snpd:   public@192.168.1.1: -> 54 -> ifAdminStatus = 1
--snpd:   public@192.168.1.1: -> 55 -> ifAdminStatus = 1
--snpd:   public@192.168.1.1: -> 56 -> ifAdminStatus = 1
--snpd:   public@192.168.1.1: -> 57 -> ifAdminStatus = 1
--snpd:   public@192.168.1.1: -> 58 -> ifAdminStatus = 1
--snpd:   public@192.168.1.1: -> 59 -> ifAdminStatus = 1
--snpd:   public@192.168.1.1: -> 60 -> ifAdminStatus = 1
--snpd:   public@192.168.1.1: -> 61 -> ifAdminStatus = 1
--base: Walking ifOperStatus
--snpd:   public@192.168.1.1: -> 1 -> ifOperStatus = 1
--snpd:   public@192.168.1.1: -> 2 -> ifOperStatus = 1
--snpd:   public@192.168.1.1: -> 3 -> ifOperStatus = 2
--snpd:   public@192.168.1.1: -> 4 -> ifOperStatus = 2
--snpd:   public@192.168.1.1: -> 52 -> ifOperStatus = 1
--snpd:   public@192.168.1.1: -> 53 -> ifOperStatus = 1
--snpd:   public@192.168.1.1: -> 54 -> ifOperStatus = 1
--snpd:   public@192.168.1.1: -> 55 -> ifOperStatus = 1
--snpd:   public@192.168.1.1: -> 56 -> ifOperStatus = 1
--snpd:   public@192.168.1.1: -> 57 -> ifOperStatus = 1
--snpd:   public@192.168.1.1: -> 58 -> ifOperStatus = 1
--snpd:   public@192.168.1.1: -> 59 -> ifOperStatus = 1
--snpd:   public@192.168.1.1: -> 60 -> ifOperStatus = 1
--snpd:   public@192.168.1.1: -> 61 -> ifOperStatus = 1
--base: Walking ifMtu
--snpd:   public@192.168.1.1: -> 1 -> ifMtu = 1500
--snpd:   public@192.168.1.1: -> 2 -> ifMtu = 1500
--snpd:   public@192.168.1.1: -> 3 -> ifMtu = 1500
--snpd:   public@192.168.1.1: -> 4 -> ifMtu = 1500
--snpd:   public@192.168.1.1: -> 52 -> ifMtu = 65535
--snpd:   public@192.168.1.1: -> 53 -> ifMtu = 65535
--snpd:   public@192.168.1.1: -> 54 -> ifMtu = 65535
--snpd:   public@192.168.1.1: -> 55 -> ifMtu = 65535
--snpd:   public@192.168.1.1: -> 56 -> ifMtu = 65535
--snpd:   public@192.168.1.1: -> 57 -> ifMtu = 65535
--snpd:   public@192.168.1.1: -> 58 -> ifMtu = 65535
--snpd:   public@192.168.1.1: -> 59 -> ifMtu = 65535
--snpd:   public@192.168.1.1: -> 60 -> ifMtu = 65535
--snpd:   public@192.168.1.1: -> 61 -> ifMtu = 65535
--base: Walking ifSpeed
--snpd:   public@192.168.1.1: -> 1 -> ifSpeed = 1000000000
--snpd:   public@192.168.1.1: -> 2 -> ifSpeed = 100000000
--snpd:   public@192.168.1.1: -> 3 -> ifSpeed = 64000
--snpd:   public@192.168.1.1: -> 4 -> ifSpeed = 128000
--snpd:   public@192.168.1.1: -> 52 -> ifSpeed = 100000000
--snpd:   public@192.168.1.1: -> 53 -> ifSpeed = 100000000
--snpd:   public@192.168.1.1: -> 54 -> ifSpeed = 100000000
--snpd:   public@192.168.1.1: -> 55 -> ifSpeed = 100000000
--snpd:   public@192.168.1.1: -> 56 -> ifSpeed = 100000000
--snpd:   public@192.168.1.1: -> 57 -> ifSpeed = 100000000
--snpd:   public@192.168.1.1: -> 58 -> ifSpeed = 100000000
--snpd:   public@192.168.1.1: -> 59 -> ifSpeed = 100000000
--snpd:   public@192.168.1.1: -> 60 -> ifSpeed = 100000000
--snpd:   public@192.168.1.1: -> 61 -> ifSpeed = 100000000
--base: Writing /etc/mrtg/mrtg.cfg

■mrtgコマンドの実行

[root@localhost ~]# LANG=ja_JP.eucJP mrtg /etc/mrtg/mrtg.cfg
2015-06-15 11:05:29, Rateup WARNING: /usr/bin/rateup could not read the primary log file for 192.168.1.1_1
2015-06-15 11:05:29, Rateup WARNING: /usr/bin/rateup The backup log file for 192.168.1.1_1 was invalid as well
2015-06-15 11:05:29, Rateup WARNING: /usr/bin/rateup Can't rename 192.168.1.1_1.log to 192.168.1.1_1.old updating log file
2015-06-15 11:05:29, Rateup WARNING: /usr/bin/rateup could not read the primary log file for 192.168.1.1_2
2015-06-15 11:05:29, Rateup WARNING: /usr/bin/rateup The backup log file for 192.168.1.1_2 was invalid as well
2015-06-15 11:05:29, Rateup WARNING: /usr/bin/rateup Can't rename 192.168.1.1_2.log to 192.168.1.1_2.old updating log file
[root@localhost ~]# LANG=ja_JP.eucJP mrtg /etc/mrtg/mrtg.cfg
[root@localhost ~]# LANG=ja_JP.eucJP mrtg /etc/mrtg/mrtg.cfg

■mrtg.confの設定を変更しローカルエリアから見えるようにする。
※あとEUC-JPで正しく表示できるようにoffにしておく

[root@localhost conf.d]# pwd
/etc/httpd/conf.d
[root@localhost conf.d]# vim mrtg.conf 
<Location /mrtg>
    Require local
    Require ip 192.168.1.0/24
    AddDefaultCharset off
    # Require host example.org
</Location>

■グラフの右端が最新になるようにする。また単位をビットにする

[root@localhost mrtg]# vim /etc/mrtg/mrtg.cfg
#Options[_]: growright, bits

↓

Options[_]: growright, bits

■インデックスファイルの作成

[root@localhost ~]# indexmaker /etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html

今回の場合は以下のURLで表示されるはず
http://192.168.1.166/mrtg/

■cronの設定(5分毎)

[root@localhost ~]# vim /etc/cron.d/mrtg
[root@localhost ~]# cat /etc/cron.d/mrtg
*/5 * * * * root LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok

Vagrantで立てたCnetOS7にLAMP環境を構築する

Vagrantで立てたCnetOS7にLAMP環境を構築する

ざっくりとローカル環境を構築する手順。

【とりあえず】

# yum update

【時間】

# timedatectl status
      Local time: Wed 2015-05-27 00:34:51 EDT
  Universal time: Wed 2015-05-27 04:34:51 UTC
        Timezone: America/New_York (EDT, -0400)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: yes
 Last DST change: DST began at
                  Sun 2015-03-08 01:59:59 EST
                  Sun 2015-03-08 03:00:00 EDT
 Next DST change: DST ends (the clock jumps one hour backwards) at
                  Sun 2015-11-01 01:59:59 EDT
                  Sun 2015-11-01 01:00:00 EST

# timedatectl set-timezone Asia/Tokyo

# timedatectl status
      Local time: Wed 2015-05-27 13:35:36 JST
  Universal time: Wed 2015-05-27 04:35:36 UTC
        Timezone: Asia/Tokyo (JST, +0900)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

# date
Wed May 27 13:35:46 JST 2015

【日本語化】

# yum -y install ibus-kkc vlgothic-* 

# localectl list-locales | grep -i ja
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc

# localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: jp106
      X11 Layout: jp

# localectl set-locale LANG=ja_JP.utf8

# localectl status
   System Locale: LANG=ja_JP.utf8
       VC Keymap: jp106
      X11 Layout: jp

# source /etc/locale.conf

# echo $LANG
ja_JP.utf8

# date
2015年  5月 27日 水曜日 13:42:59 JST

【NTP】

# yum install chrony

# systemctl start chronyd.service

# systemctl enable chronyd.service

# systemctl status chronyd.service
chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled)
   Active: active (running) since 水 2015-05-27 13:53:36 JST; 7min ago
 Main PID: 4658 (chronyd)
   CGroup: /system.slice/chronyd.service
           └─4658 /usr/sbin/chronyd -u chrony

 5月 27 13:53:36 localhost.localdomain chronyd[4658]: chronyd version 1.29.1 starting
 5月 27 13:53:36 localhost.localdomain chronyd[4658]: Linux kernel major=3 minor=10 patch=0
 5月 27 13:53:36 localhost.localdomain chronyd[4658]: hz=100 shift_hz=7 freq_scale=1.00000000 nominal_tick=10000 slew_delta_tick=833 max_tick_bias=1000 shift_pll=2
 5月 27 13:53:36 localhost.localdomain chronyd[4658]: Generated key 1
 5月 27 13:53:36 localhost.localdomain systemd[1]: Started NTP client/server.
 5月 27 13:53:41 localhost.localdomain chronyd[4658]: Selected source 157.7.235.92
 5月 27 13:53:41 localhost.localdomain chronyd[4658]: System clock wrong by 404.387741 seconds, adjustment started
 5月 27 14:00:25 localhost.localdomain chronyd[4658]: System clock was stepped by 404.388 seconds

・状態確認
# chronyc sources
210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^+ y.ns.gin.ntt.net              2   6    37    29   +714us[  -30ms] +/-   49ms
^+ li528-174.members.linode.     3   6    37    29   +111us[  -30ms] +/-   59ms
^+ chobi.paina.jp                2   6    37    29   -321us[  -31ms] +/-   47ms
^* v157-7-235-92.z1d6.static     2   6    37    29   -727us[  -32ms] +/-   38ms

「*」が現在同期をとっているサーバ

【SELinux】

# getenforce 
Enforcing

ローカルの開発環境なので無効にする
# vim /etc/selinux/config  
SELINUX=disabled

# reboot

# getenforce
Disabled

【Webサーバ】

# yum install httpd httpd-devel httpd-tools

# systemctl status httpd.service
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled)
   Active: inactive (dead)

# systemctl start httpd.service

# systemctl enable httpd.service

# systemctl status httpd.service
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: active (running) since Tue 2015-05-26 21:12:03 EDT; 1min 10s ago
 Main PID: 7308 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─7308 /usr/sbin/httpd -DFOREGROUND
           ├─7309 /usr/sbin/httpd -DFOREGROUND
           ├─7310 /usr/sbin/httpd -DFOREGROUND
           ├─7311 /usr/sbin/httpd -DFOREGROUND
           ├─7312 /usr/sbin/httpd -DFOREGROUND
           └─7313 /usr/sbin/httpd -DFOREGROUND

May 26 21:12:03 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
May 26 21:12:03 localhost.localdomain httpd[7308]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
May 26 21:12:03 localhost.localdomain systemd[1]: Started The Apache HTTP Server.

# firewall-cmd --permanent --add-service=http
success

# firewall-cmd --reload
success

# pwd
/etc/httpd/conf

# cp httpd.conf httpd.conf.org

# vim httpd.conf

# pwd
/etc/httpd/conf.d

# cp userdir.conf userdir.conf.org

# vim userdir.conf

# systemctl restart httpd.service

【PHP】

# yum install php php-cli php-common php-devel php-gd php-mbstring php-mysql php-pdo php-xml php-xmlrpc php-pear

# pwd
/etc

# cp php.ini php.ini.org

# systemctl restart httpd.service

【データベース】

# yum install mariadb-server mariadb-devel mariadb-libs  

# systemctl start mariadb.service

# systemctl enable mariadb.service

# firewall-cmd --permanent --add-service=mysql
success

# firewall-cmd --reload
success

# systemctl status mariadb.service
mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled)
   Active: active (running) since Tue 2015-05-26 22:22:28 EDT; 1min 24s ago
 Main PID: 12165 (mysqld_safe)
   CGroup: /system.slice/mariadb.service
           ├─12165 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
           └─12323 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock

May 26 22:22:26 localhost.localdomain mariadb-prepare-db-dir[12087]: The latest information about MariaDB is available at http://mariadb.org/.
May 26 22:22:26 localhost.localdomain mariadb-prepare-db-dir[12087]: You can find additional information about the MySQL part at:
May 26 22:22:26 localhost.localdomain mariadb-prepare-db-dir[12087]: http://dev.mysql.com
May 26 22:22:26 localhost.localdomain mariadb-prepare-db-dir[12087]: Support MariaDB development by buying support/new features from MariaDB
May 26 22:22:26 localhost.localdomain mariadb-prepare-db-dir[12087]: Corporation Ab. You can contact us about this at sales@mariadb.com.
May 26 22:22:26 localhost.localdomain mariadb-prepare-db-dir[12087]: Alternatively consider joining our community based development effort:
May 26 22:22:26 localhost.localdomain mariadb-prepare-db-dir[12087]: http://mariadb.com/kb/en/contributing-to-the-mariadb-project/
May 26 22:22:26 localhost.localdomain mysqld_safe[12165]: 150526 22:22:26 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
May 26 22:22:26 localhost.localdomain mysqld_safe[12165]: 150526 22:22:26 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
May 26 22:22:28 localhost.localdomain systemd[1]: Started MariaDB database server.

# mysqladmin -u root password '******'

# mysqladmin -p -u root -h localhost password '******'
Enter password: 

# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 5.5.41-MariaDB MariaDB Server

Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

MariaDB [(none)]> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

設定ファイルを変更する
# pwd
/etc

# cp my.cnf my.cnf.org

# diff my.cnf.org  my.cnf                                                                                                                                                                                                
10a11,12
> character-set-server = utf8
> 

※[mysqld] に、character-set-server = utf8 を追記。

# systemctl restart mariadb.service

MariaDB [(none)]> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

【Samba】

# yum install samba samba-client samba-common samba-devel samba-libs

# systemctl start smb.service

# systemctl enable smb.service

# firewall-cmd --permanent --add-service=samba
success

# firewall-cmd --permanent --add-service=samba-client
success

# firewall-cmd --reload
success

・ユーザの追加
# pdbedit -a -u linuxusername
new password:
retype new password:
Unix username:        linuxusername
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-3433598194-894145024-3160967228-1000
Primary Group SID:    S-1-5-21-3433598194-894145024-3160967228-513
Full Name:            
Home Directory:       \\localhost\linuxusername
HomeDir Drive:        
Logon Script:         
Profile Path:         \\localhost\linuxusername\profile
Domain:               LOCALHOST
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          Wed, 06 Feb 2036 10:06:39 EST
Kickoff time:         Wed, 06 Feb 2036 10:06:39 EST
Password last set:    Wed, 27 May 2015 00:03:41 EDT
Password can change:  Wed, 27 May 2015 00:03:41 EDT
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

・セクションの追加
# pwd
/etc/samba

# cp smb.conf smb.conf.org

# vim smb.conf

# diff smb.conf.org smb.conf
296a297,306
> 
>       comment = Document Root Directory
>       path = /var/www/html
>       public = yes
>       writable = yes
>       printable = no
> 
>       create mask = 0664
>       directory mask = 0775
> 

【サービスの公開状態確認】

# firewall-cmd  --list-services
dhcpv6-client http mysql samba samba-client ssh

CentOS7をVagrantで動かしたい

CentOS7をVagrantで動かしたい。

CentOS7の練習のために環境が欲しい。

$ vagrant box add CentOS7_minimal https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box                                                  
Downloading or copying the box...
Extracting box...ate: 9955k/s, Estimated time remaining: --:--:--)
Successfully added box 'CentOS7_minimal' with provider 'virtualbox'!

初期化。

$ vagrant init CentOS7_minima

VagrantfileでIPの指定してから起動

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'CentOS7_minimal'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
[default] Configuring and enabling network interfaces...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

ARPCHECK=no /sbin/ifup eth1 2> /dev/null

Stdout from the command:



Stderr from the command:

エラー出た。

■[Sy] 【解決した】VagrantでCentOS7のVMを作ったらネットワーク設定でコケた(固定IP割り当てに失敗)
http://www.utano.jp/entry/2014/11/vagrant_centos7_network_error

上記サイトを参考にvagrantを新しくしてみる。

https://www.vagrantup.com/downloads.html

# rpm -Uvh vagrant_1.7.2_x86_64.rpm
# vagrant -v
Vagrant 1.7.2

CentOS7を起動してみる。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: bridged
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: 
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default: 
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if its present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => /home/takeuchi/fujita_cent7
Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant

The error output from the last command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device

共有フォルダのマウントで失敗している模様。

■vagrant起動で”Failed to mount folders in Linux guest”のエラーが出た件
http://l-light-note.hatenablog.com/entry/2015/04/04/212648

以下をやってみた。

$ vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Installed the plugin 'vagrant-vbguest (0.10.0)'!

一旦落として。

$ vagrant halt

再度起動。

$ vagrant up

起動できた。

そもそも共有フォルダ使ってないから使わないようにしたらよいかも。
ついでにVirtualBoxのアップデートもした。

■参考URL

[Sy] 【解決した】VagrantでCentOS7のVMを作ったらネットワーク設定でコケた(固定IP割り当てに失敗)
http://www.utano.jp/entry/2014/11/vagrant_centos7_network_error

VirtualBoxとVagrantをバージョンアップする
http://qiita.com/mashumashu/items/557dcb805e77315004b1

vagrant起動で”Failed to mount folders in Linux guest”のエラーが出た件
http://l-light-note.hatenablog.com/entry/2015/04/04/212648

Failed to mount folders in Linux guest. This is usually because the “vboxsf” file system is not available.を直す方法
http://qiita.com/DQNEO/items/2375dd8002a831268cb5

Vagrant で CentOS 6.5 を使っていたら Guest Additions の更新に失敗してハマった
http://qiita.com/a-suenami/items/3b04151ce6e7d5b72a3e

Vagrantでフォルダがmountできないエラーが出たときの対応
http://qiita.com/kazu69/items/812b236e84fee1db3900

Apacheのアクセスログ、エラーログを一般ユーザも閲覧できるようにする

Apacheのアクセスログ、エラーログを一般ユーザも閲覧できるようにする

やり方を忘れたのでメモ。

CentOSの場合デフォルトでは/var/log/httpdディレクトリまでの権限が
以下のようになっているはず。

■/var

drwxr-xr-x 22 root root  4096  3月  9  2012 var

■/var/log

drwxr-xr-x 10 root root  4096 12月  1 00:15 log

■/var/log/httpd

drwx------ 2 root  root     4096 11月 30 09:51 httpd

この状態で一般ユーザでアクセスするとこんな感じ

$ less /var/log/httpd/error_log                                                                                      
/var/log/httpd/error_log: 許可がありません

一般ユーザもログが見えるようにするには
/var/log/httpdに対して実行権限をつける。

# chmod o+x /var/log/httpd

参考サイト
「`/var/log/httpd/access_log’ を 読み込み用でオープンできません: 許可がありません」の対処法
http://dqn.sakusakutto.jp/2011/11/varloghttpdaccess_log.html

Apache2.4でob_flushが動かなかったメモ

新しいCPIの専用サーバにシステムを設置した際にob_flushが
動作しなかったのでそのメモ。

結局、Apache2.4から導入されているmod_deflate というモジュールが原因ということでした。

mod_deflateとは?

クライアントへ送られる前にコンテンツを圧縮するモジュール

mod_deflateが有効になっているとクライアントへ送る前に圧縮するので
ob_flushの都度の出力がまとめられて圧縮されてまとめられてしまっているようです。

とりあえずPHPファイルで圧縮しないようにするhtaccessは以下でいいみたいです。

.htaccessファイル

<Files ~ "\.php">
  SetEnv no-gzip
</Files>

■参考
Apache モジュール mod_deflate
http://httpd.apache.org/docs/current/ja/mod/mod_deflate.html

Apacheのmod_deflateでコンテンツを圧縮してサイトを高速化する方法
http://oxynotes.com/?p=6519