Hatena::ブログ(Diary)

ik_fibの日記

2011-12-08

.htaccessでリダイレクション&.htaccessの設定覚え書き

先日の記事で書いたVPSのリダイレクション設定が時間がなくて気持ち悪い書き方

(index.htmlのMETAタグにリダイレクション設定)だったので、修正しようとしましたが、思ったより苦戦したので、メモがわりに覚え書き

.htaccessでのリダイレクション設定

設定前のリダイレクション設定はindex.htmlのMETAタグにリダイレクション設定を記載という適当すぎる方法でした。

ドメインへのすべてのリクエストに対して、このブログへのリダイレクションをする方法がないかと調べたら、HTTPレスポンスに転送に関するものがあり、

今回は一時的な転送である302で返すように.htaccessに設定を記述

RedirectMatch 302 .* http://d.hatena.ne.jp/ik11235/


.htaccessの有効化

.htaccessを読み込むためには、/etc/httpd/conf/httpd.confの設定の変更が必要

初期では利用するためのモジュールも読み込まれていなかったので、以下の1文を追加

LoadModule rewrite_module modules/mod_rewrite.so

さらに、.htaccessの設定反映の有効化のために

htmlファイルのディレクトリ設定部分(デフォルトでは<Directory "/var/www/html">)の下の

AllowOverride None

AllowOverride All

に変更

httpd.confを変更した場合、Apache再起動が必要なので、

以下のコマンドで再起動

sudo /etc/rc.d/init.d/httpd restart

しかし、最初にこの設定を行った際にはserverが500を返すようになってしまい、うまく動いてくれませんでした。

その際に、Apacheエラーログを見ると、

".htaccess: Regular expression could not be compiled."

というエラーが…

調べてみると、Apache上での正規表現の書式に関するもので、

全てに一致は、"*"だけではなく,".*"という書き方をしなければいけなかったらしく、最初に設定していたものを以下の修正したら動きました

RedirectMatch 302 * http://d.hatena.ne.jp/ik11235/

RedirectMatch 302 ,* http://d.hatena.ne.jp/ik11235/

参考にさせてもらったサイトさん

httpd.conf の設定

.htaccessの変更が反映されない - コトハノチカラ

.htaccess ファイルを簡単作成「.htaccess Editor」

htaccess解説/リダイレクト(サイトの引越し)

serverman@VPSを借りてみたので、やった初期設定等の覚え書き

なぜか、個人ドメインだけ取ってそのまま放置だったので、serverman@VPSのentryプランを借りてみました

とりあえず、とってからやったことを覚え書きの意味でつらつらと並べておきます

ssh関係の初期設定

まず、何はともあれrootも使えて、外からも見れるサーバ1台が無造作な状態で放置されている状態なので、

ssh周りの設定は最優先で行いました

rootでのsshログイン禁止

rootssh経由でログイン出来ない様に以下のファイルの設定を書き換えました

  • /etc/ssh/sshd_config

このファイルの以下の部分を

PermitRootLogin yes

以下のように書き換え

PermitRootLogin no

管理用のroot以外のユーザ・グループ作成+設定

rootログインを禁止した場合、それ以外のアカウントがないと永久にログインできなくなるので、

管理用のグループとユーザを追加で作成します

管理用グループを"wheel"、管理ユーザ名を"username"とすると

シェルにて以下のようにして、設定

# useradd username (ユーザ追加)

# passwd username  (追加ユーザのパスワード設定)

# usermod -G wheel username (管理者グループに新規ユーザを追加)

さらにこれだけだと、root権限を使えないので、wheelグループはsu、およびsudoを使えるように設定

  • su設定
    • /etc/pam.d/su

以下の一文を追加(もしくはコメントアウト(#)を消す)

auth required pam_wheel.so use_uid

  • sudo設定
    • /etc/sudoers

wheelグループのsudo許可とsudoログ作成の設定文を追加

%wheel ALL=(ALL) ALL

Defaults logfile=/var/log/sudolog

鍵認証方式利用の設定

WindowsからのSSHクライアントputtyを使うことが多いので、ひとまず

puttyを使った鍵作成と設定の仕方

  • puttyでの鍵の作成用の鍵作成

puttyに含まれるputtygen.exeを利用

[作成]を選択して作成後、テキスト部分をコピーして

"ログインするユーザのホームディレクトリ/.ssh/authorized_keys"にコピー

なお、authorized_keysの所有者はログインするユーザ、パーミッションは600に設定

鍵認証以外でのログインの禁止

鍵なしではログイン出来ない様にパスワード認証の禁止の設定

  • /etc/ssh/sshd_config

このファイルの以下の部分を

#PasswordAuthentication yes

以下のように書き換え

PasswordAuthentication no

すべての設定が終われば、シェルに以下のコマンドを打って、sshdを再起動

# /etc/rc.d/init.d/sshd restart

このあたりの設定は失敗すると、ログインができなくなるのでつながっているセッションを1つ残したままで、別端末から設定が適応されているかを確認するようにした方が良いと思います。

(私自身、このあたりを失敗して、借りてから数十分足らずで1回初期化してます)

iptablesの設定

iptablesを設定して不必要なポートを塞ぐ設定

…ですが、最初に現在の設定を確認しようとすると…

$ -bash: iptables: command not found

iptablesがない?

調べたところ、なぜかインストールされているにもかかわらず、

パスが通ってなかったので、PATHに"/sbin/;/usr/sbin/"を追加

その後、/etc/sysconfig/iptablesに以下の記述を追加して、

ssh,http,mysqlのポート以外は塞ぐ設定に

(sshのポートの9999は変更したポートに合わせて変更)

# SSH, HTTP, FTP1, FTP2, MySQL

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9999 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

yumでのアップデート

そこまで設定できたら一応は最低限の設定はできたと思うので、

サービスのアップデートを以下のコマンドで実行

# yum update

emacsインストール

vi,vimは個人的にあまり使えないのでemacsインストール

ただ、CentOSyumリポジトリだとemacs21とかなり古いので、

CentOSにemacs23.2をインストールを参考に

手動でインストールしました。

# wget http://ftp.gnu.org/pub/gnu/emacs/emacs-23.3b.tar.gz

# tar zxvf emacs-23.3b.tar.gz

# cd ./emacs-23.3

# ./configure --without-x

# make

# make install

文字コード変更

システム全体の文字コードutf-8に変更

  • /etc/sysconfig/i18n

このファイルのLANG部分を以下に変更

LANG="jp_JP.UTF-8"



不要サービス停止

VPSは資源があまり多くないことも多いので使わない不要サービスは停止させます。

CentOSをサーバーとして活用するための基本的な設定 - さくらインターネット創業日記

↑のさくらインターネット社長プログで書かれている設定+個人的にftp等は使うつもりがなかった(ssh or sftp)ので、

そのあたりを考えて以下のサービスを以下のコマンドで停止

chkconfig [サービス名] off

acpid

auditd

autofs

avahi-daemon

bluetooth

cups

firstboot

gpm

haldaemon

hidd

irda

isdn

kudzu

lvm2-monitor

mcstrans

mdmonitor

messagebus

netfs

pcscd

portmap

rawdevices

restorecond

rpcgssd

rpcidmapd

smartd

xfs

ypbind

ただし、設定が微妙に違うので、ないものがあったり…

Apacheの設定

最低限、必要そうな設定のみ変更

  • /etc/httpd/conf/httpd.conf

#HTTPレスポンスの返却値の情報を最低限に

ServerTokens OS

ServerTokens ProductOnly

#index.html等がないときに、ディレクトリ内一覧を表示させない

Options Indexes FollowSymLinks

Options -Indexes FollowSymLinks

#エラーメッセージのフッターラインの隠蔽

ServerSignature On

↓ ↓ ↓

ServerSignature Off

ここまで設定して燃え尽きたので、

ブログにリダイレクションする設定だけして以下のアドレスでwebのみ公開

http://ik-fib.com

しかし、夜に設定してその後の設定を行う気力がなかったため、リダイレクションの方法がひどい事になってます。

近いうちに少なくともそれは直したい…

参考にさせてもらったサイトさん

さくらのVPS(CentOS)で文字コードを日本語にする方法(もしくはlessで文字化けさせない方法) | IDEA*IDEA

CentOSにemacs23.2をインストール

Webサービス用にさくらのVPSサーバーを借りた後で役に立つ記事色々:phpspot開発日誌

GM's Log. » Blog Archive » 【さくらのVPS】初期設定をしてみた

CentOSをサーバーとして活用するための基本的な設定 - さくらインターネット創業日記

v-5300.net