カテゴリー: Linux

VagrantでNAT接続してホストPCのブラウザからゲストにアクセスする。

設定のメモ

NAT接続でホストマシンの8080へのアクセスはゲストマシンの80にポート転送する設定。

Vagrantfileに以下を記載。

config.vm.network :forwarded_port, guest: 80, host: 8080

vagrant up でマシンの起動。
ゲストマシンでwebサーバを起動して、

http://localhost:8080/

にアクセスしてページが出ればOK。

こうすることで、ネットにつながっていない環境でも1PC内でアプリケーションの
開発とかとりあえずできる。

 

OpenVZのリソース状態を確認

OpenVZのリソース状態を確認する。

コンテナ側で以下のコマンドを実行

# cat /proc/user_beancounters
Version: 2.5
uid resource held maxheld barrier limit failcnt
171: kmemsize 8808593 10514432 14372700 14790164 0
lockedpages 0 0 2048 2048 0
privvmpages 86999 152549 262144 262144 0
shmpages 4511 5807 21504 21504 0
dummy 0 0 0 0 0
numproc 65 86 240 240 0
physpages 58785 457240 0 2147483647 0
vmguarpages 0 0 131072 131072 0
oomguarpages 43503 52001 26112 2147483647 0
numtcpsock 28 39 360 360 0
numflock 16 188 188 206 3819
numpty 4 6 16 16 0
numsiginfo 0 15 256 256 0
tcpsndbuf 213856 1438168 1720320 2703360 0
tcprcvbuf 214040 1718240 1720320 2703360 2
othersockbuf 15736 198024 1126080 2097152 0
dgramrcvbuf 0 4296 262144 262144 0
numothersock 114 120 120 120 17517
dcachesize 2887879 3624960 3409920 3624960 0
numfile 1148 1340 9312 9312 0
dummy 0 0 0 0 0
dummy 0 0 0 0 0
dummy 0 0 0 0 0
numiptent 20 20 128 128 0

「failcnt」が0なら健全らしい。

そもそもなんで今回この値を確認したくなったかというと、
コンテナ中にsambaをインストールしている環境でコンテナ側からwindows上にファイルを
コピーすると途中で止まると言われたから。

上記の結果からすると「numflock」と「numothersock」が良くない感じになっている。
それぞれの意味はこちら。

【numflock】
全てのVPS プロセスが作成するファイルロックの数

【numothersock】
TCP 以外のソケットの数。ローカル(UNIX ドメイン)
ソケットはシステム内の通信に使用されます。
UDP ソケットは、ドメインネーム サービス(DNS)の
クエリなどに使用されます。
UDPおよびその他ソケットで使用されます。

とりあえず「numothersock」から上限をあげてみた。

vzctl set 171 --numothersock 512 --save

で、もう一回samba経由でファイルを大量にコピーしてもらうも駄目。
でも「numothersock」のfailcntは増えなくなったのでこれはこれでいいみたい。

次に「numflock」も上限をあげてみる

vzctl set 171 --numflock 350 --save

で、もう一回samba経由でファイルを大量にコピーしてもらうも駄目。
「maxheld」の値が350までいってしまったのでまだ足りないということか、、、。
だめもとで一回無制限にしてみる

vzctl set 171 --numflock unlimited --save

この状態でsamba経由で大量にファイルをコピーしてもらったら出来た!
終った状態で「numflock」の「maxheld」を見ると2071だった。。
全然足りてなかったな。。

とりあえずこれでOKということにしておく。
今回初めてunlimitedなんていう設定値があることを知った。
OpenVZ環境で何か問題があったら「/proc/user_beancounters」をみよう。

Vagrantメモ

あけましておめでとうございます。

今年も宜しくお願いいたします。

今年の1発目は正月の間に触っていたVagrantについてのまとめ。

インストール方法や使い方は以下の参考サイトを参照
とりあえずドットインストール見ておけばいいと思う。

ドットインストール:Vagrant入門 (全13回)
※共有フォルダとかProvisioningの説明もあり

Windows7にVirtualBoxとVagrantをインストールしたメモ – k-holyのPHPとか諸々メモ

Vagrantの備忘録 | jekylog

Vagrant – naoyaのはてなダイアリー

Vagrantで固定IPのVMを作ってみたら超簡単だった

Bridged Networking

A list of base boxes for Vagrant

CentOS 上で Vagrant を導入するまでのメモ(CUI)

Vagrantのboxに少しだけ手を加えたものをboxとして取っておきたい

以下コマンドなどメモ書き

■バージョン確認

vagrant -v

■Boxの追加

vagrant box add 名前 boxのURL

■今あるBoxの確認

vagrant box list

■初期化

vagrant init

■仮想サーバの起動

vagrant up

■仮想サーバの状態確認

vagrant status

■仮想サーバの停止

vagrant halt

■データを破棄

vagrant destroy

■仮想サーバを再起動

vagrant reload

■仮想サーバの一時停止

vagrant suspend

■仮想サーバへの接続

vagrant ssh

■ネットワーク設定(ブリッジ接続)※hostがwindowsの時
Vagrantfileをエディタで開き以下の場所のコメントアウトを外す

#config.vm.network :public_network
↓
config.vm.network :public_network

保存後に仮想サーバを再起動する

■MacBookAirでブリッジの設定をした時
以下のコマンドを実行しアダプタの名前を取得

$ VBoxManage list bridgedifs | grep ^Name
Name:            en0: Wi-Fi (AirPort)

Vagrantfileをエディタで開き以下の設定をファイル末尾に追記

Vagrant::Config.run do |config|
  config.vm.network :bridged, :bridge => "en0: Wi-Fi (AirPort)"
end

保存後に仮想サーバを再起動する

■vagrantにcommit、rollback機能を追加できるSaharaをインストールする

vagrant gem install sahara

□sandbox モードに入る

vagrant sandbox on

□sandbox モード on に入った時点まで巻き戻す!

vagrant sandbox rollback

□変更を確定

vagrant sandbox commit

■任意のタイミングでOSのスナップショットを取得する

vagrant package

特定ディレクトリ以下のhtmlのファイル数を調べたい。

特定ディレクトリ以下のhtmlのファイル数を調べたい。
よく忘れる・・・。

一旦以下のコマンドで検索し結果を確認する

find ./対象ディレクトリ -path "./除外ディレクトリ名" -prune -o -name "*.html" -type f

で、「| wc -l」を追加してファイル数を取得。

find ./対象ディレクトリ -path "./除外ディレクトリ名" -prune -o -name "*.html" -type f | wc -l

※このとき除外のディレクトリ名が入ってるので-1しとくw

■参考
ディレクトリ内のファイル総数を調べる

findで特定のディレクトリを検索対象外(除外)にする

レンタルサーバでscpもlftpも無い場合にwgetで一括データバックアップする

レンタルサーバでscpもlftpも無い場合にwgetで一括データバックアップする

某レンタルサーバは容量無制限だからバックアップ用途に
使おうとおもったらscpもlftpコマンドも無く、ftpでしか
データをやり取りできないことが判明。
ftpで再帰的にデータを取得するようにスクリプトを組む
こともできるけどそれは面倒なので、他に手段が無いか調査。

するとwgetにミラーリングオプションがあるってことでwgetで
データバックアップを行うことにした。
※wgetコマンドはあった。

以下コマンド

wget -mc -a logfile -P /local_path ftp://username:password@hostname/backup_target
-m ミラーリング
-c ダウンロードが途中で終わったものを継続するレジューム機能
-a ログファイルを指定したログファイルに書き出す(追記)
-P ローカル保存の起点を指定する

■参考URL
FTPサーバからファイルを一括転送

wget の使い方
↑-Pのオプションが小文字になってるけど大文字が正解

CentOS6.4にopenldapをインストールする

LDAPに対して作成中のシステムから問い合わせをする
必要がでそうなのでLDAPをローカル環境にとりあえず設置する。


この本を参考に設置する。

■この環境にopenldapをインストールする。

# cat /etc/redhat-release
CentOS release 6.4 (Final)

PHPは5.4.16
epel,rpmforge,remiを利用しています。
■openldapのインストール

# yum install openldap-servers openldap-clients
# updatedb
# locate slapd.conf
/usr/share/man/man5/slapd.conf.5.gz
/usr/share/openldap-servers/slapd.conf.obsolete

■設定ファイルをコピーして設置

# cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf

・設定用のパスワードを生成しておく
# slappasswd -s [設定用パスワード]
{SSHA}uwv0bKRgYH0aD9kdOuHl1kG2YIrLyamp

・管理者用のパスワードを生成しておく
# slappasswd -s [管理者パスワード]
{SSHA}UmANXpHt8QzO96eb45Ik8Eg0e9QyFcjJ

■設定ファイルを変更

# diff /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
98a99,101
> rootdn        cn=admin,cn=config
> rootpw        {SSHA}uwv0bKRgYH0aD9kdOuHl1kG2YIrLyamp
>
115c118
< suffix                "dc=my-domain,dc=com"
---
> suffix                "dc=mogumagu,dc=com"
117c120,121
< rootdn                "cn=Manager,dc=my-domain,dc=com"
---
> rootdn                "cn=Manager,dc=mogumagu,dc=com"
> rootpw        {SSHA}UmANXpHt8QzO96eb45Ik8Eg0e9QyFcjJ

■念のため最初からあったファイルを削除しておく

# cd /etc/openldap/slapd.d/
# ll
total 8
drwx------ 3 ldap ldap 4096 Jun 11 01:30 cn=config
-rw------- 1 ldap ldap 1131 Jun 11 01:30 cn=config.ldif
# rm -rf ./*

# cd /var/lib/ldap/
# ll
total 0
# rm -rf ./*

■予めldapのデータベースを作成する

# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# echo "" | slapadd -f /etc/openldap/slapd.conf
The first database does not allow slapadd; using the first available one (2)

■設定ファイルを変更したので、設定ファイルの変換処理を行う

# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
config file testing succeeded

■権限を付与

# chown -R ldap:ldap /var/lib/ldap
# chown -R ldap:ldap /etc/openldap/slapd.d

■LDAPの起動

# service slapd start
Starting slapd:                                            [  OK  ]
# chkconfig slapd on

■ログを吐くようにsyslogの設定

# vim /etc/rsyslog.conf
追記
# openldap slapd log
local4.*                                                /var/log/slapd

# service rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]
# service slapd restart
Stopping slapd:                                            [  OK  ]
Starting slapd:                                            [  OK  ]

# less /var/log/slapd
Jun 11 01:47:36 takeuchi2 slapd[1214]: daemon: shutdown requested and initiated.
Jun 11 01:47:36 takeuchi2 slapd[1214]: slapd shutdown: waiting for 0 operations/tasks to finish
Jun 11 01:47:36 takeuchi2 slapd[1214]: slapd stopped.
Jun 11 01:47:36 takeuchi2 slapd[1282]: @(#) $OpenLDAP: slapd 2.4.23 (Apr 29 2013 07:41:58) $#012#011mockbuild@c6b7.bsys.dev.centos.org:/builddir/build/BUILD/openldap-2.4.23/openldap-2.4.23/build-servers/servers/slapd
Jun 11 01:47:36 takeuchi2 slapd[1283]: slapd starting

■初期データの投入(本の内容)

# pwd
/root
#mkdir ldap-data
# cd ldap-data/
# vi init.ldif
# less init.ldif
dn: dc=mogumagu,dc=com
objectClass: organization
objectClass: dcObject
o: Mogumagu
dc: mogumagu

dn: cn=Manager,dc=mogumagu,dc=com
objectClass: organizationalRole
cn: Manager

# ldapadd -x -D "cn=Manager,dc=mogumagu,dc=com" -W -f init.ldif
Enter LDAP Password:
adding new entry "dc=mogumagu,dc=com"

adding new entry "cn=Manager,dc=mogumagu,dc=com"

# vim people-service.ldif
dn: ou=People,dc=mogumagu,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Service,dc=mogumagu,dc=com
objectClass: organizationalUnit
ou: Service

# ldapadd -x -D "cn=Manager,dc=mogumagu,dc=com" -W -f people-service.ldif
Enter LDAP Password:
adding new entry "ou=People,dc=mogumagu,dc=com"

adding new entry "ou=Service,dc=mogumagu,dc=com"

■一旦検索してみる

# ldapsearch -x -D "cn=Manager,dc=mogumagu,dc=com" -W -b 'ou=People,dc=mogumagu,dc=com' '(objectClass=*)'
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <ou=People,dc=mogumagu,dc=com> with scope subtree
# filter: (objectClass=*)
# requesting: ALL
#

# People, mogumagu.com
dn: ou=People,dc=mogumagu,dc=com
objectClass: organizationalUnit
ou: People

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

■phpLDAPadminをインストールする

# pwd
/usr/local
# wget http://sourceforge.net/projects/phpldapadmin/files/latest/download?source=files

# tar xzvfp phpldapadmin-1.2.3.tgz

# mv phpldapadmin-1.2.3 phpldapadmin

# pwd
/etc/httpd/conf

■apache設定を追記

# vim httpd.conf
Alias /ldapadmin/ /usr/local/phpldapadmin/htdocs/
<Directory "/usr/local/phpldapadmin/htdocs">
        DirectoryIndex index.php index.html
</Directory>

■phpLDAPadminの設定ファイルを変更する

# pwd
/usr/local/phpldapadmin/config

# cp config.php.example config.php

# diff config.php.example config.php
293c293
< // $servers->setValue('server','host','127.0.0.1');
---
> $servers->setValue('server','host','127.0.0.1');
296c296
< // $servers->setValue('server','port',389);
---
> $servers->setValue('server','port',389);

# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

http://localhost/ldapadmin/
にアクセスするとphpLDAPadmin画面が表示される

■その他参考書、サイト等

CentOS6.3 で OpenLDAP の設定 (Life with Linux)

Apacheのアクセスログが書き込まれるタイミングについて

Apacheのアクセスログが書き込まれるタイミングについて

アクセスログ(access_logなど)はWebサーバがクライアントからリクエストを受けて、
レスポンスを返すときに出力される。

なのでレスポンスを返す前にエラーでレスポンスが返せない状態に
なるとアクセスログに記載されないことになるとか。

 

■参考

Interstage HTTP Server 運用ガイド

Segmentation faultが発生するとHTTPレスポンスが返らない

diff コマンドで改行コードを無視する

diff コマンドで改行コードを無視する

ちょっとしか変更して無いはずなのにdiffでファイル全体が違うってなってよく凹むのでメモ。

$ diff --strip-trailing-cr sample.php ../test/sample.php

ディレクトリ単位でも大丈夫。

以下のページに詳しくオプション書いてある。

diff – コマンド (プログラム) の説明 – Linux コマンド集 一覧表

RHEL6でnamazuをインストールしてPHPから使う

RHEL6でnamazuをインストールしてPHPから使う

RHEL4のサーバからデータ移行するときにはまったメモ。

■環境

# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.3 (Santiago)

 

# php -v
PHP 5.3.3 (cli) (built: Jul  3 2012 16:53:21)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with the ionCube PHP Loader v4.0.14, Copyright (c) 2002-2011, by ionCube Ltd.

■kakashiインストール

$ wget http://kakasi.namazu.org/stable/kakasi-2.3.4.tar.gz
$ tar xzvfp kakasi-2.3.4.tar.gz
$ cd kakasi-2.3.4
$ ./configure
$ make
$ su
# make install

■namazuインストール

$ wget http://www.namazu.org/stable/namazu-2.0.21.tar.gz
$ tar xzvfp namazu-2.0.21.tar.gz
$ cd namazu-2.0.21
$ su
# cd File-MMagic/
# yum -y install perl-ExtUtils-MakeMaker
# perl Makefile.PL && make install
# cd ../
# ./configure
# make
# make install

■namazu.so作成
php-namazuが無いのでそこを対応する

http://sourceforge.jp/projects/php-i18n/
上記サイトよりnamazu-2.3.1.tgzをwget

# wget http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fphp-i18n%2F14174%2Fnamazu-2.3.1.tgz

http://tzono.com/wiki/index.php?linux%2Fnamazu
上記サイトのように作業しようとするもphpizeコマンドが無い事が発覚。
php-develに同梱されているようなのでインストールする

php-develが入ったところから。。。

# cd namazu-2.3.1
# phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
# ./configure --with-namazu
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for a sed that does not truncate output... /bin/sed
・・・
# make
# make install
Installing shared extensions:     /usr/lib64/php/modules/

■php.iniを変更する
末尾に以下を追加しapacheをリスタートする

extension="namazu.so"
namazu.debugmode = Off
namazu.lang = ja_JP.SJIS

apacheリスタート後にはphpinfo.phpに「namazu」セクションが追加されている

あとはインデックスの再構築したり。。

■参照URL
サイト内検索システム構築(Namazu)

linux/namazu おどうぐ箱

PHP5 の Namazu モジュールを作成するための Patch

PHPのNamazuモジュールの組み込み

CentOS5系にduplicityをインストールする

CentOS5系にduplicityをインストールする

CentOS5ではduplicityをCentOS6.3にインストールするメモの方法では
インストールできなかったので別のインストール方法で入れる。

どうもrpmがあるっぽいのでそれで試す。

duplicity-0.6.18-1.el5.i386.rpm Download

Download duplicityのフロッピーアイコンをクリックして遷移した画面にある
binary packageのリンク先をwgetする

#wget http://dl.fedoraproject.org/pub/epel/5/i386/duplicity-0.6.18-1.el5.i386.rpm
# rpm -Uvh duplicity-0.6.18-1.el5.i386.rpm
エラー: 依存性の欠如:
        ncftp >= 3.1.9 は duplicity-0.6.18-1.el5.i386 に必要とされています
        python-GnuPGInterface >= 0.3.2 は duplicity-0.6.18-1.el5.i386 に必要とされています
        python-boto >= 0.9d は duplicity-0.6.18-1.el5.i386 に必要とされています

など出るのでそれぞれインストールしていく
自分の場合はたぶん
duplicityをCentOS6.3にインストールするメモ
のほうのやり方を途中までやったためにこれだけで済んだのだと思う。。

# yum --enablerepo=epel install ncftp
# yum --enablerepo=epel install python-GnuPGInterface
# yum --enablerepo=epel install python-boto

もう一度インストール

# rpm -Uvh duplicity-0.6.18-1.el5.i386.rpm
準備中...                ########################################### [100%]
   1:duplicity              ########################################### [100%]

[root@takeuchi tmp]# duplicity --version
duplicity 0.6.18

入ったーレストアも出来たのでOKっぽい。