ラベル Linux の投稿を表示しています。 すべての投稿を表示
ラベル Linux の投稿を表示しています。 すべての投稿を表示

2014年4月25日金曜日

CentOS6.5にGoogleDriveをマウントしてみた

まずはじめにですが、この操作はGUI環境がないとできません
CentOSにGUI環境を構築する手順はこちらを参照ください
また以下の作業はX環境が整っていること以外、真っさらな環境で作業した場合の手順となります

■環境
CentOS release 6.5 (Final)
X Windows System
firefox 24.0
ocaml 4.01.0
opam 1.1.1

■ocamlインストール
yum -y groupinstall "Development Tools"
yum -y install git m4 fuse fuse-devel libcurl-devel libsqlite3x-devel zlib-devel libcurl sqlite-devel firefox

wget http://caml.inria.fr/pub/distrib/ocaml-4.01/ocaml-4.01.0.tar.gz
tar zvxf ocaml-4.01.0.tar.gz
cd ocaml-4.01.0
vim configure
    prefix=/usr/local -> prefix=/usr
./configure
make world.opt
make install
[root@localhost ocaml-4.01.0]# ocaml -version
The OCaml toplevel, version 4.01.0

■opamインストール
git clone https://github.com/OCamlPro/opam.git
cd opam
./configure
make
make install
opam init
opam update
[root@localhost ~]# opam --version
1.1.1

■google-drive-ocamlfuseのインストール
opam install google-drive-ocamlfuse
    Yを選択してインストールする
    内部的には.configure -> make -> make install の流れ
vim ~/.bashrc
PATH=$PATH:$HOME/.opam/system/bin
export PATH
source ~/.bashrc
google-drive-ocamlfuse

ここでGUI上にfirefoxが立ち上がります
なのでCUI環境しかない場合は事前にvncserver等でGUI環境を立ちあげておいてください
GoogleDriveをマウントするアカウント情報を入力します
アクセストークンを取得する時間に制限があるのでコマンド実行したら早めに認証を開始します


認証が完了するとgoogle-drive-ocamlfuseアプリからアクセスを許可する画面になると思いますので
「承認する」をクリックします


再度アプリのアクアスを許可するかどうか聞かれるので「Allow」をクリックします


最後のAllowをクリックした段階でCUI側のアクセストークンが渡ります
CUI側に「アクセストークンが取得できないよ」みたいなエラーが出ている場合は再度「google-drive-ocamlfuse」を実行してfirefox上で認証してください

■GoogleDriveのマウント
mkdir /googledrive
google-drive-ocamlfuse /googledrive/
mount | grep google
google-drive-ocamlfuse on /googledrive type fuse.google-drive-ocamlfuse (rw,nosuid,nodev)

となっていればOKです
あとは/googledriveにアクセスしてGoogleDrive上のファイルが存在することを確認してください

■Tips
・アンマウント
umount /googledrive

・アクセストークンが取得できていない場合
マウント後にdf等を実行して
df: `/googledrive': デバイスもしくはリソースがビジー状態です
と出る場合はgoogle-drive-ocamlfuseがうまくアクセストークンを取得できていません
google-drive-ocamlfuse /googledrive/のコマンドを実行した段階で再度GUI側にfirefoxが立ち上がるアクセス要求を確認する画面が立ち上がっていると思いますので「承認」をクリックします

・動作がかなり重い
マウントしたフォルダに対するアクセスが異様に重い場合があります
おそらくコマンドを発行するごとに必要な情報をGoogleDrive側に取得しに行っているためかと思います
df で容量を確認するときやlsでディレクトリ内の情報を確認するときに重くなる場合はおそらくネットワークが影響していると思います

・GUI環境がないと動作しなのが辛い
アクセストークンの期限が切れた場合は再マウントする必要があるのですが、その場合は再度アプリからのアクセスを承認する必要があるので
その場合はvnc等のGUI環境が動作している必要があります
どのくらいの頻度で承認を求められるかわかりませんが、GUI上に移動して毎回承認するのは結構辛いなと感じました

・GoogleAcountでアプリの権限を確認する
https://security.google.com/settings/security/permissions?pli=1
上記のページにログインすると今回承認したgoogle-drive-ocamlfuseがアクセス許可されていることがわかると思います
google-drive-ocamlfuseを使用しなくなった場合は念のためこのページからアクセス許可を削除したほうがいいと思います

■参考サイト

2014年4月23日水曜日

CentOS6.3にVNCをインストールしてGUI環境を構築する方法

■環境
CentOS release 6.3 (Final) 64bit
   -> yum updateして6.5になります
tigervnc-server-1.1.0-8.el6_5

■インストール作業
yum -y groupinstall "X Window System" "GNOME Desktop Environment" "Desktop"
yum -y install libXfont xorg-x11-xinit xorg-x11-fonts-Type1
yum -y install tigervnc tigervnc-server
export DISPLAY="localhost.localdomain:1"

yum -y update
   なぜこの段階でyum updateしているのかというとどうやらCentOS6.3のデフォルトのドライバだとうまくXが起動しませんでした
   以下のようなエラーが「X -configure」や「startx」時に出ていました
   open /dev/dri/card0: No such file or directory
startx &
   この段階でX Windows Systemが起動できるか確認します
   上記のコマンドで起動して「pgrep X」でプロセス番号が表示されれば起動できています
   とりあえず起動を確認したらkillしておきます
   vncserverを立ち上げる段階でもvncserverが自動でXを立ちあげてくれますがそもそもXの起動がうまくいかないとvncもうまく起動しないのでXの確認をしておきます

■vcnserver実行
vncserver
   初回実行時はパスワードを設定します

vncviewerを使って「IPアドレス:5901」にアクセスします


パスワードを聞かれるので設定したパスワードを入力します
通信が暗号化されていないよーという警告が表示されますが無視します
以下のように接続できてエクスプローラ等が表示、操作できれば問題ないです

■Tips
・vnc-server停止方法
   vncserver -kill :1

■参考サイト

2014年3月25日火曜日

CentOSにPostgres9.3.1をインストールする方法

■環境
CentOS 5.10 64bit
PostgreSQL 9.3.1

■事前確認
rpm -qa | grep postgres
    他のPostgreSQLサーバがインストールされていないことを確認する
    「postgresql-server.x86_64」というパッケージがなければサーバはインストールされていません
    ちなみに自分の環境では以下がインストールされていました
  • postgresql-libs-8.1.23-6.el5_8
  • postgresql-libs-8.1.23-6.el5_8
  • postgresql-8.1.23-6.el5_8

■インストール手順
cd /var/tmp
wget http://yum.postgresql.org/9.3/redhat/rhel-5-x86_64/pgdg-centos93-9.3-1.noarch.rpm
rpm -ivh pgdg-centos93-9.3-1.noarch.rpm
yum clean all
yum repolist | grep pgdg93
    PostgreSQLのリポジトリが追加されていることを確認します

yum -y install postgresql93.x86_64 postgresql93-server.x86_64
    yum installします
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: ftp.kddilabs.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
Excluding Packages in global exclude list
Finished
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package postgresql93.x86_64 0:9.3.4-1PGDG.rhel5 set to be updated
--> Processing Dependency: postgresql93-libs = 9.3.4-1PGDG.rhel5 for package: postgresql93
--> Processing Dependency: libpq.so.5()(64bit) for package: postgresql93
---> Package postgresql93-server.x86_64 0:9.3.4-1PGDG.rhel5 set to be updated
--> Running transaction check
---> Package postgresql93-libs.x86_64 0:9.3.4-1PGDG.rhel5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================
 Package                           Arch                 Version                          Repository            Size
====================================================================================================================
Installing:
 postgresql93                      x86_64               9.3.4-1PGDG.rhel5                pgdg93               1.7 M
 postgresql93-server               x86_64               9.3.4-1PGDG.rhel5                pgdg93               5.6 M
Installing for dependencies:
 postgresql93-libs                 x86_64               9.3.4-1PGDG.rhel5                pgdg93               220 k

Transaction Summary
====================================================================================================================
Install       3 Package(s)
Upgrade       0 Package(s)

Total download size: 7.5 M
Downloading Packages:
(1/3): postgresql93-libs-9.3.4-1PGDG.rhel5.x86_64.rpm                                        | 220 kB     00:00
(2/3): postgresql93-9.3.4-1PGDG.rhel5.x86_64.rpm                                             | 1.7 MB     00:00
(3/3): postgresql93-server-9.3.4-1PGDG.rhel5.x86_64.rpm                                      | 5.6 MB     00:00
--------------------------------------------------------------------------------------------------------------------
Total                                                                               2.6 MB/s | 7.5 MB     00:02
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : postgresql93-libs                                                                            1/3
  Installing     : postgresql93                                                                                 2/3
  Installing     : postgresql93-server                                                                          3/3

Installed:
  postgresql93.x86_64 0:9.3.4-1PGDG.rhel5               postgresql93-server.x86_64 0:9.3.4-1PGDG.rhel5

Dependency Installed:
  postgresql93-libs.x86_64 0:9.3.4-1PGDG.rhel5

Complete!

■動作確認
service postgresql-9.3 initdb
データベースを初期化中:                                    [  OK  ]

service postgresql-9.3 start
postgresql-9.3 サービスを開始中:                           [  OK  ]

su - postgres
-bash-3.2$ psql -l
List of databases
   Name    |  Owner   | Encoding
-----------+----------+----------
 postgres  | postgres | UTF8
 template0 | postgres | UTF8
 template1 | postgres | UTF8
(3 rows)

-bash-3.2$ createdb test
CREATE DATABASE

-bash-3.2$ psql -U postgres test
Welcome to psql 8.1.23 (server 9.3.4), the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

WARNING:  You are connected to a server with major version 9.3,
but your psql client is major version 8.1.  Some backslash commands,
such as \d, might not work properly.
クライアントが8.1のままだったのでDB接続時に警告が表示されました

■参考サイト

■Tips
設定ファイルの場所
/var/lib/pgsql/9.3/data/postgresql.conf
/var/lib/pgsql/9.3/data/pg_hba.conf

「-h localhost」を指定した場合はパスワードなしでpsqlを実行できるようにする
vim /var/lib/pgsql/9.3/data/pg_hba.conf
host    all             all             127.0.0.1/32            trust

「-h localhost」を指定した場合にパスワード認証でpsqlを実行できるようにする
psql
postgres=# ALTER USER postgres with password 'yoshinaka';

vim /var/lib/pgsql/9.3/data/pg_hba.conf
host    all             all             127.0.0.1/32            md5

LISTENポートを変更する方法
通常は /var/lib/pgsql/9.3/data/postgresql.conf の「#port = 5432」の部分を書き換えてrestartすればOKなのですが
今回インストールしたyumインストールの場合は起動スクリプト内でポートの指定を行っているようなので起動スクリプトを修正してやる必要がありました
vim /etc/init.d/postgresql-9.3
PGPORT=5432

PGPORT=5431

service postgresql-9.3 restart

2014年3月12日水曜日

【Ubuntu】checkinstallを使って独自のdebファイルを作成してみた(ruby1.9.3編)

今回、1.9.3のdebファイル作成方法を紹介しますが
同じ方法で2.0.0もビルドできましたので、2系のdebファイルが必要な方もこれから紹介する方法で大丈夫です

■環境
Ubuntu 12.04
checkinstall 1.6.2
debuild 2.11

■checkinstall のインストール
・aptitudeの場合
aptitude update
aptitude install devscripts
aptitude install checkinstall
※aptitudeなら「aptitude」で起動して対話式でインストールすることも可能です

・apt-getの場合
apt-get update
apt-get install devscripts
apt-get install checkinstall

■ruby1.9.3ソースのファイルのダウンロード
wget http://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p545.tar.gz
tar zvxf ruby-1.9.3-p545.tar.gz

■debパッケージの作成
cd ruby-1.9.3-p484
./configure
checkinstall

※checkinstall実行時にパッケージ情報(パッケージ名やバージョン、説明等)を編集できますので必要に合わせて修正してください
*****************************************
**** Debian package creation selected ***
*****************************************

This package will be built according to these values:

0 -  Maintainer: [ root@ubuntu ]
1 -  Summary: [ test ]
2 -  Name:    [ ruby-1.9.3 ]
3 -  Version: [ p484 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ amd64 ]
8 -  Source location: [ ruby-1.9.3-p484 ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Provides: [ ruby-1.9.3 ]
12 - Conflicts: [  ]
13 - Replaces: [  ]

Enter a number to change any of them or press ENTER to continue:
変更が必要な番号を入力してその後で変更したい情報を入力すればOKです
編集を完了する場合はそのままEnterを押せば大丈夫です

■Tips
checkinstallで作成する他にrpmbuildと同じように「debuild」というコマンドがあります
debuildでdebファイルを作成する場合はソースの取得方法から若干ことなります
  1. apt-get source ruby
  2. apt-get build-dep ruby
  3. cd ruby-defaults-4.8
  4. debuild -uc -us -b
でビルドを開始することができます
checkinstallと違い対話的にパッケージの情報を変更することはできずや設定を変更する場合は
ruby-defaults-4.8/debian/rules
というファイルを変更する必要があります
rpmbuildで言うところのspecファイルに相当するものかと思います

デフォルトのrulesファイルはかなり複雑でdebuildで作成するとdebファイルも複数できてしまうので簡単に作成したくかつmakeでビルドできるのであればcheckinstallを使ったほうがいいと思います

'utime': No such file or directory
となってエラーになる場合には「--fstrans=no」をつけて再度実行してください> `utime': No such file or directory
rubyのインストールのよ> 'うに対話式に進めていく場合には上記のオプションが必要だそうです

2014年2月22日土曜日

checkinstallをインストールしてrpmパッケージを作成してみた

■環境
CentOS release 5.10 (Final)
rpmbuild 4.4.2.3

■checkinstallインストール手順
yum -y install rpm-build
cd /usr/local
git clone http://checkinstall.izto.org/checkinstall.git
cd checkinstall
make
make install
which checkinstall
  ※/usr/local/sbin/checkinstall にインストールされた

cd /usr/local/lib64/
ln -s /usr/local/checkinstall/installwatch/installwatch.so
  ※installwatch.soのシンボリックリンクを貼っています、/usrl/local/lib 配下へのシンボリックリンクはあったのですが、lib64 配下にはなかっで作成しました
  ※checkinstallが内部的に使用しているようです、上記は環境によってはちゃんとリンクされるので不要かもしれません

■checkinstallを試しに使ってみる
cd /var/tmp/
wget http://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p484.tar.gz
tar zvxf ruby-1.9.3-p484.tar.gz
cd ruby-1.9.3-p484
./configure
checkinstall

  ※今回インストールした環境では「./configure」する環境が事前に整っていました、configure時にエラーが出る場合は各自yum等でパッケージをインストールしてから再度configureしてください
  ※checkinstallコマンドを実行すると、つらつらログが流れはじめるかと思います、途中で作成するパッケージの種類を聞かれるのでRPM(R)を入力します
  ※パッケージの情報を変更する場合は、そのあとに1から11の番号でパッケージの各項目を編集できるところがありますのでそこで設定します、ここで設定した情報は「rpm -qi」等のコマンドでパッケージの情報を確認するときに表示される情報となります
  ※checkinstallが完了するまでは結構時間がかかります、マシンの性能に左右される点もあるかと思いますがrubyは30分程度かかりました

/usr/src/redhat/RPMS/x86_64/ruby-1.9.3-p484-1.x86_64.rpm
に作成されたrpmがありました

■作成したrpmを試しにinstallしてみる
rpm -ivh /usr/src/redhat/RPMS/x86_64/ruby-1.9.3-p484-1.x86_64.rpm
準備中...                ########################################### [100%]
1:ruby-1.9.3             ########################################### [100%]
[root@localhost ruby-1.9.3-p484]# ruby -v
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]
[root@localhost ruby-1.9.3-p484]# which ruby
/usr/local/bin/ruby
[root@localhost ruby-1.9.3-p484]# rpm -qi ruby-1.9.3-p484-1.x86_64
Name        : ruby-1.9.3                   Relocations: (not relocatable)
Version     : p484                              Vendor: (none)
Release     : 1                             Build Date: 2014年02月18日 10時43分43秒
Install Date: 2014年02月18日 10時49分43秒      Build Host: localhost
Group       : Applications/System           Source RPM: ruby-1.9.3-p484-1.src.rpm
Size        : 255750452                        License: GPL
Signature   : (none)
Packager    : checkinstall-1.6.3
Summary     : This is a test ruby package.
Description :
This is a test ruby package.

無事インストールもできた

2014年2月5日水曜日

SSHの公開鍵ノンパス認証で「You are required to change your password immediately」

hostname1 -> hostname2
に公開鍵認証を使ってsshのノンパスログインをしようとしたのですが
以下のようなエラーが出力されてうまくできませんでした

You are required to change your password immediately (root enforced)
Last login: Wed Feb 5 11:37:38 2014 from xxx.xxx.xxx.xxx
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user nifbat.
Changing password for nifbat
(current) UNIX password:

hostname1ではssh-keygenコマンでを使ってid_dsa.pubとid_dsaファイルをパスワードなしで作成し
hostname2には上記で作成したid_dsa.pubファイルをauthorized_keysに書き込みました
.sshやauthorized_keysの権限は正しく設定されています

なぜだろうと悩んだ挙句、原因はログインしようとしているユーザにパスワードが設定されていないことが原因でした
passwdコマンドでパスワードを設定すれば問題ないのですが、以下の方法でも対応できましたので紹介しておきます

vim /etc/shadow
nifbat:.....:0:0:99999:7:::
↓
nifbat:.....:1:0:99999:7:::

shadowファイルを編集して強制的にパスワードが設定されているようにする方法です
どうしてもpasswdでパスワードを設定したくない場合にはこれでも解決できます

2013年11月5日火曜日

【Linux】コマンドの結果がファイルにリダイレクトされない場合の対処方法

pear > pear_help.txt 2>&1

「2>&1」を末尾に追加してあげます
上記はpearでコマンドに引数が表示されない場合ヘルプが表示されるのですが、「2>&1」がないとうまくファイルに結果をリダイレクトできません
これはpearのヘルプが標準エラーとして出力されているせいで、「2>&1」を付与しない場合は標準出力のみをリダイレクトするので
ファイルには何も出力されない状況となります

「2>&1」は標準エラーを標準出力に複製する命令になるので標準出力となった結果がファイルに出力されるようになります

2013年10月21日月曜日

sshで多段プロキシする方法

■環境
Windows7 64bit
git bash version 1.8.3-preview20130601

■背景
  • WinSCPでsshプロキシが使えない環境だったので泣く泣くscpコマンドで対応する
  • git bashはデフォルトでsshコマンドが使えるのでgit bashで代用した
  • ※Linux上のsshでも同様の設定で対応可能

■設定
1. git bashを立ち上げる
2. cd
3. vim .ssh/config
4. 以下を記載する
Host host001
  User root
  Hostname 192.168.1.100
  IdentityFile ~/.ssh/host001_key.pem
  ProxyCommand ssh hostproxy001 nc %h %p
Host hostproxy001
  User root
  Hostname 192.168.1.10
  IdentityFile ~/.ssh/hostproxy001_key.pem
  ProxyCommand ssh hostgate nc %h %p
Host hostgate
  User kakakikikeke
  Port 1022
  Hostname 192.168.1.200
上記の設定で「ssh host001」と実行すると
  • 「hostgate」にユーザ「kakakikikeke」でポート「1022」を使ってパスワード認証をし次にhostgateから
  • 「hostproxy001」にユーザ「root」で公開鍵をを使ったパスフレーズ認証をしhostproxy001から
  • 「host001」にユーザ「root」で公開鍵を使ったパスフレーズ認証を行う
なので合計3回のパスワードを聞かれることになる

~/.ssh/host001_key.pemと~/.ssh/hostproxy001_key.pemの公開鍵はgit bashを実行するWindows上にある必要があり
デフォルトだと「C:\Users\[user_name]\.ssh」がconfigファイルを保存するパスになっている様子
git bash上でcdコマンドを実行すると上記のカレントに移動することができる

同じ経路でsshしたいホストを増やしたい場合はhost001と同様の記載でIPの部分を変更すれば他のホストにもsshログインできるようになる

また、この状態で「scp host001:/var/tmp/test.txt .」を実行することでリモートからコマンド一発でファイルを転送することができる
(パスワードを3回入力する必要あり)

2013年10月14日月曜日

ftpサーバの構築方法

■環境
CentOS 6.4 64bit
vsftpd 2.2.2

■設定
1. vsftpdのインストール
yum -y update
yum -y install vsftpd

2. ftp用ユーザの作成
useradd ftpguest001
passwd ftpguest001
(パスワードを設定する)
echo ftpguest001 >> /etc/vsftpd/chroot_list

3. ACL確認
構築したftpサーバに対してクライントから21番ポートで接続できることを確認する
できない場合はiptablesやルータのFWが防がっていないか確認する

4. 起動
service vsftpd start
netstat -an | grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN

5. 動作確認
今回はwinscpで接続してみました
ftpモードにして作成したユーザ情報を入力しログインしてみてください


ログインできなければiptablesやFWが21番ポートを開放しているかどうか確認してください

2013年9月23日月曜日

postfixでLISTENしているIPをlocalhostから0.0.0.0に変更する方法

netstat -an | grep 25

で以下のような設定にしたい場合
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN
↓
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN

vim /etc/postfix/main.cf
inet_interfaces = localhost
↓
inet_interfaces = all

service postfix restart

2013年9月16日月曜日

logrotateのルール追加する方法

■環境
CentOS 6.3 64bit
logrotate 3.7.8

■設定
grep "include" /etc/logrotate.conf
/etc/logrotate.d をincludeしていることを確認する
cd /etc/logrotate.d

touch test
vim test
/var/log/test.log {
  compress
  missingok
  notifempty
  daily
  create 0600 root root
}

上記でtest.logというログファイルが日時でローテートされます
簡単にパラメータを説明すると
  • compressはローテートgzip圧縮
  • missingokはtest.logという名前のログファイルが存在しなくてもエラーにしない設定
  • nitifemptyはファイルが0バイトならローテートしない設定
  • dailyは日時でローテートする設定
  • createはファイルを生成する際に所有者と権限を指定

■実行
logrotate -f /etc/logrotate.conf

test.logが新たに作成され古いログが実行した日付が付与されたgzip形式で出力されることを確認する
ちなみにgzipで圧縮されたファイルは「zcat」コマンドで中身を確認することができる

また常に起動しているプロセスの場合にはpostrotate~endscriptを使用してHUPシグナルを送る等をしないと
ローテートしてもローテート前のファイルに対してプロセスはログを履き続けてしまうのでちょっとした工夫が必要です
その辺の設定はsyslog用のlogrotateファイルの設定を見るとちょっとイメージが湧くかもしれません

■参考サイト

2013年9月9日月曜日

sshで複数のポートを立ち上げる方法

vim /etc/ssh/sshd_config

Port 22
Port 22022

とすることで22番と22022番でLISTENするようになります

デフォルトでは「Port 22」もコメントとなっていますのでコメントを外して「Port 22022」を追加しましょう
「Port 22022」だけ記載すると単純にsshのポートが22022になるので22番が使えなくなってしまうので注意しましょう

2013年9月5日木曜日

【Centos6.3】ulimitのopen filesの値を変更する方法

■環境
CentOS release 6.3 (Final)
2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

■設定方法
echo "ulimit -n 64000" >> /etc/sysconfig/init

上記を実施後
サーバ自体の再起動
もしくは
変更したopen filesのカーネルパラメータ自体を有効にしたいプロセスを再起動する

■確認方法
cat /proc/[プロセス番号]/limits
でMax open filesの欄を確認して設定したopen filesの値になっていることを確認する

ulimit -a
でopen filesの欄を確認して設定したopen filesの値になっていることを確認する



カーネルパラメータを変更する方法は他にも

  • vim /etc/security/limits.conf
  • vim /etc/sysctl.conf
  • ulimitコマンドの実行

を等を変更、使用することで変更できるが
どれもサーバの再起動後や再ログインをすると上書きされてしまうためあまり有効な方法ではないと思われる


■Tips
独自のシェルスクリプトで記載された起動スクリプトの場合、/etc/sysconfig/initが有効にならない場合がある
有効にならない場合は独自のシェルスクリプトの一番はじめに「ulimit -n 64000」を記載することで
シェルスクリプト内で起動する子プロセスに対してカーネルパラメータを有効にすることができる

またプロセスのみの再起動手法の場合OS自体のulimitの値を確認するとデフォルトの1024のままとなっているが
プロセス自体のulimitの設定さえ変更されていれば問題ない

2013年8月2日金曜日

ssh_exchange_identification: Connection closed by remote host

[user1@localhost ~]$ ssh 192.168.10.101
bash: nc: コマンドが見つかりません
ssh_exchange_identification: Connection closed by remote host
[user1@localhost ~]$ cat .ssh/config
Host 192.168.10.101
        ProxyCommand ssh user1@192.168.10.151 nc %h %p

散々悩んだあげく原因はssh先のプロキシサーバ(上記の場合だと192.168.10.151)にncがインストールされていないことでした
ProxyCommand を使っていsshプロキシする場合、ncコマンドを発行しているのはプロキシ先のサーバだったのか。。。orz

2013年7月30日火曜日

lsyncで所有者権限を維持する方法

■概要
/usr/local/sync_dirのフォルダ同士をlsyncを使って同期します
/usr/local/sysc_dirの所有者がrootになっており、lsyncdプロセスを起動したユーザもrootとします

上記のケースで/usr/local/sysc_dir配下にtestuserが作成したファイルを同期したいと思います
testuserが作成したファイルの権限は当たり前ですが、tsetuser:testuserの権限となります
デフォルトの設定で上記ファイルを同期をすると同期元のファイルはtestuser:testuserのままですが、
同期先のファイルがroot:rootに変更になってしまいます

今回は同期先の所有者権限をtestuser:testuserに維持する方法をご紹介します

なおlsyncのバージョンは「Version: 2.1.4」とします

■設定
vim /etc/lsyncd.conf
settings {
  statusFile = "/tmp/lsyncd.stat",
  logfile = "/var/log/lsyncd.log",
  statusInterval = 1,
}

sync {
  default.rsync,
  source="/lsync",
  target="192.168.10.101:/lsync",
  rsync = {
    owner = true,
    group = true
  }
}

ポイントは「owner = true」「group = true」の箇所です
これをtrueにすることで所有者情報を維持したまま同期することができます
上記書き換え後にlsyncdプロセスを再起動すれば完了です

実はlsyncはバージョン2以降で指定できるパラメータの方法が変わりました
以前、http://kakakikikeke.blogspot.jp/2013/05/lsyncd.htmlを書いたのですが
ここで記載している設定ファイルはバージョン1系でのみ有効なして方法となります
特に「rsyncOps = "-av"」の部分は2系では有効にならないため権限情報もrootに変換されてしまいます

2系のdefault.rsyncで指定できるパラメータの情報は以下が公式で参考になります
https://github.com/axkibe/lsyncd/wiki/Lsyncd%202.1.x%20%E2%80%96%20Layer%204%20Config%20%E2%80%96%20Default%20Behavior

gitWikiのせいなのかGoogle先生のSEOが悪いのかはわかりませんがググっても公式サイトがあまり出てこないんですよね

2013年7月5日金曜日

ターミナル上で巨大文字が作れる「figlet」が便利だった

■インストール&サンプル実行
cd /usr/local/src
lftp ftp://ftp.figlet.org/pub/figlet/program/unix/
tar xvzf figlet-2.2.4.tar.gz
cd figlet-2.2.4
make
make install
hash -r
wget ftp://ftp.figlet.org/pub/figlet/fonts/contributed.tar.gz
gunzip -dc ./contributed.tar.gz | tar vfx -
find ./contributed -type f \( -name '*.flf' -or -name '*.flc' \) -exec sudo /bin/cp {} /usr/local/share/figlet/ \;
showfigfonts hoge > hoge_list
less hoge_list
好きなものを選択して/etc/motdにコピペすればログイン時に好きな巨大文字を出力することができます

■参考サイト

2013年6月18日火曜日

curlでHTTPレスポンスを表示する方法

curl -il "http://kakakikikeke.blogspot.jp"

取得できるHTML等が長い場合には head や less で調整してください

大文字の「-IL」で実施するとHTTPレスポンス情報だけが表示されて見やすいのですが

You can only select one HTTP request

と出ることがあるようです
その場合は小文字の「-il」で試して見てください

2013年4月26日金曜日

configure→make→make installでマイナーバージョンがどんどんあがってしまう場合の対処方法

ものによるかもしれないのですが、ソースコードからインストールを行っている場合に再度コンパイルしてインストールを実施するとマイナーバージョンがどんどん上がっていってしまうみたいです
例えば

・一回目のインストール
emacs-23.4.1
・再インストール
emacs-23.4.2
・三回目のインストール
emacs-23.4.3

といった感じです
再インストールを繰り返しているといつの間にかマイナーバージョンがとんでもない数字になっている可能性もあるので、これを1に修正する方法です
以下で可能です

make clean

make uninstallではできないのでご注意ください
あんまり使うことはないと思いますがw

2013年4月13日土曜日

curlでプロキシを設定する方法

curl --proxy-ntlm --proxy sample.proxy.com:8080 www.nifty.com


curlコマンドは設定ファイルでproxy設定ができないので、以下のような感じでaliasを通しておくといいかもしれません
alias curl='curl --proxy-ntlm --proxy sample.proxy.com:8080'


P.S curl用の設定ファイルはあるようです・・・
~/.curlrc

proxy = "http://sample.proxy.com:8080"
を設定するとプロキシ設定になるようです

2013年3月6日水曜日

非常にわかりやすいiptablesの設定方法


http://www.nina.jp/server/redhat/iptables/iptables.html

すごいわかりやすいです
このページを理解してれば80%は理解してるんじゃないかと勝手に思ってます

  • 主な機能はパケットフィルタ、NAT
  • 書式は[チェインに対して][パケットを][どうするか]の形式で記述
  • 独自のチェインが設定できる
  • 独自のチェインとはINPUTやFORWARDなどのチェインを束ねることができる名前空間的なもの
  • FORWARDはインタフェース間での通信に関するチェイン
  • INPUTはあるインタフェースへの入力に対するチェイン
  • -m state --stateで接続の状態に対して細かく制御することも可能
  • -m は拡張モジュールを指定するためのオプション
  • -j の次にチェインを指定する