Hack in tosh!

素人が苦しみながら何かを作っていくのを観察するBLOG

サーバー設定 2日目 続き

Apache2.4.3導入

Apache最新版を公式サイトからダウンロードしましょう

Apache公式サイト

Apacheインストール

$ wget http://ftp.tsukuba.wide.ad.jp/software/apache//httpd/httpd-2.4.3.tar.gz
$ tar xzf httpd-2.4.3.tar.gz
$ cd httpd-2.4.3
$ ./configure --prefix=/usr/local/apache --enable-mods-shared=all --enable-so --enable-ssl --enable-rewrite --enable-usertrack --enable-asis --enable-cache --enable-mem-cache --with-mpm=worker --with-ssl=/usr/local/openssl --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --disable-ipv6
(正直なところconfigureは殆ど要らない気がします。後ででも設定出来ます。aprとopenssl関係だけは必須でしょうか。mod_asisはprobe対策する人だけ。)

$ make
$ sudo paco -D make install

インストール完了。

いつものlibパス通し

$ sudo touch /etc/ld.so.conf.d/apache.conf
$ sudo vi /etc/ld.so.conf.d/apache.conf
    /usr/local/apache/lib
$ sudo ldconfig

Apache自体のパスも通します

$ sudo ln -s /usr/local/apache /usr/local/httpd
$ sudo touch /etc/profile.d/apache.sh
$ sudo vi /etc/profile.d/apache.sh
      # apache path Setting
      export APACHE_HOME=/usr/local/httpd
      export PATH=$APACHE_HOME/bin:$PATH

しかしこれではまだhttpdとしては機能しない

HTTPDとして機能させるために

$ sudo cp /build/rpm/httpd.init /etc/init.d/httpd
$ sudo vi /etc/init.d/httpd
    #httpd=${HTTPD-/usr/sbin/httpd}                            (コメントイン)
    httpd=${HTTPD-/usr/local/apache/bin/httpd}           (インストールしたパスを追加)
    #pidfile=${PIDFILE-/var/run/${prog}.pid}                   (コメントイン)
    pidfile=${PIDFILE-/usr/local/httpd/logs/${prog}.pid} (インストールしたパスを追加)
    lockfile=${LOCKFILE-/var/lock/subsys/${prog}}
    RETVAL=0

    # check for 1.3 configuration
    check13 () {
    #       CONFFILE=/etc/httpd/conf/httpd.conf              (コメントイン)
             CONFFILE=/usr/local/apache/conf/httpd.conf  (インストールしたパスを追加)

以前のバージョンまでと変わってるので見落としがちだが

pidfile=${PIDFILE-/usr/local/httpd/logs/${prog}.pid}

を追加しないとパスがわからないからstopしてくれない

これで

$ sudo service httpd start
httpd を起動中:                                            [  OK  ]

$ sudo service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

問題なく作動するはずだ

後は自動起動させるために

# chkconfig httpd on

でOKなはず

サーバー設定 2日目

rvmを公式から入れたらバージョンが1.15とか言う死ぬほど古いバージョンでしたので、Rubyをソースから入れてrvmを入れようと思いましたが、よくよく考えるとScientificLinuxで採用されているApacheのバージョンも些かアレでしたので、最新のApache2.4.3をソースから入れる事にしました。Nginxさんのことは暫く忘れます。

*Apache2.4.3を入れるの巻*

まずはApache2.4.3を入れるには最新のaprとapr-utilを入れないといけない。

Apache公式aprダウンロードのページ

からDLして入れる事となる。

でもその前にPacoを入れておくと便利かも。 Pacoはyumでepelからインストールできます。 それかソースから入れるとよろし。

apr & apr-util インストール

apr

$ wget http://ftp.riken.jp/net/apache//apr/apr-1.4.6.tar.gz
$ tar xvf apr-1.4.6.tar.gz
$ cd apr-1.4.6
$ ./configure ; make
$ sudo paco -D make install

apr-util

$ wget http://ftp.riken.jp/net/apache//apr/apr-util-1.4.1.tar.gz
$ tar xvf apr-util-1.4.1.tar.gz
$ cd apr-util-1.4.1
$ ./configure ; make
$ sudo paco -D make install

libのPATHを通す

$ cd /etc/ld.so.conf.d/
$ sudo touch lib.conf
$ sudo vi lib.conf
     usr/local/apr/lib
$ sudo ldconfig

なお

$ paco -a
apr-1.4.6  apr-util-1.4.1  httpd-2.4.3  openssl-1.0.1c

のようにpacoで管理されてるものを確認することも出来る。

さて肝心のApacheなんだけど、多くの人がOpenSSLで怒られて、私も毎回のように怒られ、 多分みなさんも怒られると思うので、ここは大人しくソースから最新のものを入れておきましょう。

OpenSSLインストール

OpenSSL公式サイトからダウンロード

$ wget http://artfiles.org/openssl.org/source/openssl-1.0.1c.tar.gz
$ tar xvf openssl-1.0.1c.tar.gz
$ cd openssl-1.0.1c
$ ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared
$ make
$ paco -D make install

これでOpenSSLのインストールは完了。 しかしながらやはり色々やんなきゃいけない。

OpenSSLのlib、PATH通し

$ sudo touch /etc/ld.so.conf.d/openssl.conf
$ sudo vi /etc/ld.so.conf.d/openssl.conf
    /usr/local/openssl/lib
$ sudo ldconfig
$ sudo mv /usr/bin/openssl /usr/bin/openssl2 (既存のSSLをリネーム)
$ sudo ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
$ openssl version (バージョン確認)
    OpenSSL 1.0.1c 10 May 2012

さて下準備が出来た所で本番のApache2.4.3のインストールと行きたい所ですが、 午前3時で睡魔が襲ってきたのでこれにて・・・

サーバー設定 1日目

さくらのVPSにて
CentOS6でアレしてたら色々と問題が出てきたのでScientificLinux6.3に入れ替え。

まずはバージョン確認

# cat /etc/redhat-release
Scientific Linux release 6.1 (Carbon)
# rpm -qa sl-release --qf '%{v}\n'
6.1

おおさくらよなんということだ

さくらのVPSはScientificLinux6.1なのでまずは最新の6.3にバージョンアップ
[公式WIKI]
https://www.scientificlinux.org/documentation/howto/upgrade.6x

バージョンアップ

# yum --releasever=6.3 update sl-release
# yum update

もう一度バージョン確認

# cat /etc/redhat-release
Scientific Linux release 6.3 (Carbon)
# rpm -qa sl-release --qf '%{v}\n'
6.3

おおすばらしきバージョンよ!

ユーザー追加

# useradd hoge
# passwd hoge
# usermod -G wheel hoge

# visudo (/etc/sudoersを編集する簡単コマンド)

## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL

コメントアウトしWheelグループにRootと同等の権限を

でも良いし

# User privilege specification
root    ALL=(ALL) ALL
hoge        ALL=(ALL) ALL

ユーザー追加という形式も取れる。

後はPAMの設定も(PAMについては各種学習サイトに詳しい)

# vi /etc/pam.d/su
auth required pam_wheel.so use_uid(コメントアウト)

# vi /etc/login.defs
SU_WHEEL_ONLY yes

最近は最初からこうなっていて設定不要な事も多い。

# sudo vi /etc/ssh/sshd_config

PORT ***** (激しくアタックが来るので#22以外に)
PermitRootlogin no (rootはログインさせないよ)
MaxAuthRties * (認証回数制限)
AllowUsers hoge (hogeさんだけしか認証しない AllowGroupsもある)
DenyUsers hogehoge (hogehogeさんは認証しない)
LoginGraceTime * (*秒以内に認証しないとセッション切る)

TeraTerm等でSSHの認証キーをGenerateする。公開キーと秘密キーの二つが出来るはず。
TeraTerm等のSSHクライアントからパスワード認証でサーバーへ接続を行う。
そしてSCPでhome下にid_rsa.pubキーを送り込む。
(MacのターミナルでもTeraTermでもPuTTYでも一番楽な方法のはず)

その後

# cd
# mkdir .ssh (.は隠しファイル)
# chmod 700 .ssh
# mv id_rsa_pub .ssh/authorized_keys
# chmod 600 .ssh/authorized_keys

# sudo vi /etc/ssh/sshd_config

PermitEmptyPasswords no
PasswordAuthentication no
UsePAM no

としてパスワードのみの認証を拒否る

# sudo servise sshd restart

でsshdをリスタートしSSH鍵認証でログインで一先ず安心?
(何故かマークダウン記法使えませんでした)

#おまけ
メモリキャッシュ解放
sudo sysctl -w vm.drop_caches=3