カテゴリー: サーバ構築

Home / カテゴリー: サーバ構築

ランレベルを理解した

2014-05-08 | Linux, サーバ構築 | コメントはまだありません

ぴこぴこプログラムを打つまではなんとかなるけど、箱だの線だのは全く理解ができない、自分の分野にだけロックインしてるダメグラマーをやっております。
なので基礎的なことも知らないまま生きてるわけです。
ランレベルとは結局なんなのか。
某日、チャットルームの会話を抜粋。登場人物は、HP-UXが得意なサーバやさん、Oracleが主戦場のDBやさん、そしてあたし。

DB屋: 自動起動の為に# chkconfig –level 35 portmap on
を打てば良いっぽいんだが、35の意味を調べないとなのだ
鯖屋: ランレベルのことだな。ランレベル3と5で起動してねってことさ
DB屋: ランレベルなのか。しかし35の間にスペースはいらんの?
鯖屋: いらん。ランレベル35ってないからね。6でおわり
DB屋: あれか。0:off 1:off とかズラズラ出て来るところの3と5をonにしろってやつか!
鯖屋: んだ。いまの状態をみたいなら、
chkconfig –list | grep portmap
とかやればでてくる
DB屋: 見てみる。0~6まで全部OFFだったわ。
鯖屋: んじゃぁ、3と5をonかな
鯖屋: 2で上げてもいいけど、意味ないな。
鯖屋:

0がしゃっとだうん
1がしんぐる
2がネットワークなしのマルチ
3がマルチ
4が未使用。HP-UXは使うけどな。
5がGUI
6がリブート

DB屋: これコピーするw
鯖屋: http://www.atmarkit.co.jp/flinux/rensai/linuxtips/156whatrunlv.html
鯖屋: 綺麗に書かれてまっせ・・・
あたし: それ見ていつも不思議に思うわ うっかり6とか指定すると、永久に再起動し続けるゴミができるんだろ?
鯖屋: うん
あたし: 何に使うんだ。。。
鯖屋: システム起動したとたんに init 0で停止とかな。
あたし: あ、とちゅうで止める方法あるにはあるのか
鯖屋: 止められないなw
鯖屋: ソフトウェアが使うんだよ。 不正な状態で固まりかけたら、最後の断末魔で6発動www おまえら死ねやあああああwwww みたいな
あたし: もしかしてなにかね、たとえば
あたし: shutodown -h なうwww とかやってる中身は
あたし: ランレベルを変更している、みたいな話なの
鯖屋: そうですな。
あたし: ははー ラップされてたのかあれは
鯖屋: うらでは、init ってコマンドが動いてる。
あたし: すごく納得した。。。
鯖屋: init ランレベル番号指定で、ランレベル変わるのだ。
あたし: さっそくやってみる
あたし: wwwwwwwwwwwwwwwwww
あたし: なにもおきねえじゃんwww
あたし: とおもたら
あたし: 確かに再起動したwwwwwwwwww
鯖屋: 現在のランレベルみたいなら who -rかな
あたし: いままでshutdown -h なうwとかやってたのアホじゃんか
あたし: init 0でサーバ落とせたんだな
鯖屋: まぁ^^;
あたし: でもそうしないってことは行儀悪いんだな
鯖屋: メッセでないんだよねー なうw のほうがいいよ。
あたし: えーと、とあるサーバに二人(AさんBさん)つないでます
あたし: Aさんがinit0やっておとしたら、Bさんからは急に死んだように見えるが、
あたし: なうwってやると、おとすよーしぬよーってメッセージが両者に届くという話?

# shutdown -h now
Broadcast message from root@localhost
        (/dev/pts/0) at 11:37 ...
The system is going down for halt NOW!

鯖屋: まぁw そういう感じw なうwは、waitつけられるのだ
鯖屋: 60secでしんじゃいますーとか
あたし: おおーなるほど、あれ全員に届いてるメッセージなんだ
鯖屋: システムおちますよは、全員に届くけど死ぬ寸前の断末魔なのだ。
鯖屋: なので、init系だといきなり死ぬ寸前にメッセでておいおいってなる
鯖屋: なうw だと、あとxx秒でおちるよー とかメッセおくれるのね。ログインユーザ全員に。 そういった意味では親切コマンドではある

ストンとハラに落ちた。

自宅サーバでルータがAtermの場合+Nginx

2012-04-26 | Nginx, サーバ構築 | コメントはまだありません

DDNSなんかでドメイン振っててもFQDNでアクセスできませんよね。自宅からだと。
これ知ってたら買わなかったわ。ほんとうに不便。

外から見たい場合はDDNSでドメイン引き回してあるので見られるんですが、たとえば自宅Wifiから見ようっていうと、ドメイン名打ってもだめなのね。iPhoneとかそういうのが即アウト。
自宅鯖の中には開発中や絶賛放置中の有象無象やp2やphpmyadminなんかが転がってるんですが、これらはLAN内から見に行く場合、192.168.0.15:8000ならアプリA、192.168.0.15:8001ならアプリB、みたいにしてやりくりしてました。Apacheでのやりかたはいろんなトコに書いてあると思う。

で、自宅鯖のApacheを消して、ふとした拍子にNginxに変えてみました。
さいきんおねーさんは何やるにしてもNginxです。すごいお気に入り。
設定楽だし軽いしね。
php?
>php-cgi -b 127.0.0.1:9000
解決するじゃないかきみーもんだいないよー
Pylonsさんとかのおかげで、この方式で立てておくというのがしっくりくるようになってた。成長だわー

いままでは、apacheのports.confにこんな書き方してました。
(IPアドレスやポート番号とかはサンプルなのでてきとうです)

NameVirtualHost *:80
Listen 192.168.0.15:80
Listen 192.168.0.15:8000
Listen 192.168.0.15:8001

こんなふう。
で、sites-avaiablesだかの中の各種vhostsに

<VirtualHost *:8000>(略)</VirtualHost>

こんなん。ほかにもなんかやってたかも知れないけどもう覚えてない。
で、これをNginxでも何とかしたい。

    server {
        listen 8000;
        listen 80;
以下略

余裕だった。正しいのかはいまいちわかんないけど間違ってはいないだろう。
自宅からはIPアドレス:ポート番号(この場合8000番)で見に行く。これは従来どおり。
外からは名前解決できるのでドメイン+80番で見に来ると。
listen 80のほうを消したりコメントすれば、外からは見にこれない。
自宅からしかいじらないphpMyAdminなんかはlisten 80は書かない設定にしています。

あ、うちは外からポート8000で飛び込んできても蹴ってるからというだけですけどね。80番のみ通す格好にしています。これはルータのお仕事。

みたいな話。

さくらVPSでubuntuセットアップ

2011-11-21 | Nginx, サーバ構築, さくらのVPS | コメントはまだありません

全部とは言わないけどかなりいろいろ自分で入れるはめに。
デフォルトのCentOSだとここまでは必要なかった。とくにaptitudeで入れてるあたり。

自分が欲しいのは以下

  • Nginx
  • Emacs
  • MongoDB
  • Python
  • php
  • Erlang
  • RabbitMQ

いれなきゃいけなさそうなアレコレ
apacheは外します

aptitude remove httpd -y
aptitude install gcc -y
aptitude install curl-devel -y
aptitude install glibc -y
aptitude install zlib-devel -y
aptitude install libjpeg-devel -y
aptitude install sqlite-devel -y
aptitude install ncurses-devel -y
aptitude install readline-devel -y
aptitude install php -y
aptitude install bzip2-devel -y
aptitude install libxml2-devel -y
aptitude install mercurial -y
aptitude install vim -y
aptitude install libpcre++-dev -y
aptitude install rabbitmq-server -y
# ちょっとこのへん自信ない。どれかはいるんだけど。
# EmacsやNginxのインストールでコケた際にいろいろ追加したもの。
aptitude install libpcap-dev  -y
aptitude install libsoci-core-gcc-dev -y
aptitude install pcre-devel -y
aptitude install lib32gcc1
aptitude install zlibc -y
aptitude install zlib1g-dev -y
aptitude install libssl-dev  -y
# require emacs 
aptitude install libncursesw5-dev -y
aptitude install libncurses5-dev
aptitude install libtool -y

Nginxのconfigure

./configure \
  --conf-path=/etc/nginx/nginx.conf \
  --error-log-path=/var/log/nginx/error.log \
  --pid-path=/var/run/nginx/nginx.pid  \
  --lock-path=/var/lock/nginx.lock \
  --user=nginx \
  --group=nginx \
  --with-http_stub_status_module \
  --with-http_ssl_module \
  --with-http_gzip_static_module \
  --with-http_realip_module \
  --with-http_dav_module \
  --http-log-path=/var/log/nginx/access.log \
  --http-client-body-temp-path=/var/tmp/nginx/client/ \
  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
  --with-debug

/etc/init.d/nginxの中身
11/22編集:
http://wata-jp.ldblog.jp/archives/1674163.html
こちらを参考にNginxのinitスクリプトを書き換え。

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15 
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# pidfile:     /var/run/nginx/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    return $retval
}

restart() {
    configtest || return $?
    stop
    sleep 1
    start
}

reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}
 
force_reload() {
    restart
}
 
configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}
 
rh_status() {
    status $prog
}
 
rh_status_q() {
    rh_status >/dev/null 2>&1
}
 
case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest|-t|t)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac

/etc/init.d/nginxとか初めて書いたわ!

RabbitMQはaptitudeから入れたところ、Erlangも勝手に引っ張ってくれてたみたい。
そもそも、CentOSのときにRabbitMQのインストールでこけまして、それでubuntuをいれたという経緯がございます。

今気づいたけどsendmailも入ってない。まいったなさすがに敷居高い。
さんざんやっといてアレだけどCentOSに戻そうかな(-_-;
こういうのをサラサラやってるサーバ屋さんとかほんとすごいと思います。

実際はpythonとかもソースから入れてるんだけど割愛。

raid1まとめ

2010-11-05 | サーバ構築 | コメントはまだありません

お便利さんとこは神
mdadmコマンドによるRAIDデバイスの構築
http://www.obenri.com/_raid_create/create_mdadm.html
RAID メモメモ Linux
http://keiotu.blog9.fc2.com/blog-category-8.html

パーティーションの一覧を見る
cat /proc/partitions

raidの状態を見る
mdadm –detail /dev/md0
mdadm -D –scan
cat /proc/mdstat

mdadmの設定はココ
/etc/mdadm/mdadm.conf

mod_wsgiをコンパイルする

2010-11-05 | Apache, Python, サーバ構築 | コメントはまだありません

コレを書いているのは2010/11/05です。その当時のメモです。一応。
aptitudeとかでいれても、2.6.5向けのコンパイルだから云々ってapacheのログに出るわけです。

[warn] mod_wsgi: Compiled for Python/2.6.5.
[warn] mod_wsgi: Runtime using Python/2.6.6.

きもいので解消するの巻。
mod_wsgi-3.3.tar.gzを拾ってきます。
いつもどおりtar zxfvで開いて
./configure –with-python=/usr/bin/python2.6
apxs云々いわれたらapache-devだかそのへんのを入れよう。多分はいってる。
ついでにpython-devもいれよう。
ほんでmake
make installとかそんなんだ。

[notice] Apache/2.2.16 (Ubuntu) 
PHP/5.3.3-1ubuntu9.1 with Suhosin-Patch 
mod_wsgi/3.2 Python/2.6.6 configured 
-- resuming normal operations

ログ見たらコレで出なくなってた。なーんでかpython2.7ではこの手順がうまく行かなかったのが無念。なんでだろ。

modのリコンパイルとかしたあとはreloadじゃだめで、restartでちゃんと動いた気がする。気がするだけですが。