【phpMyAdmin】さくらVPSにphpMyAdmin導入

そういえばphpMyAdmin入れてなかった。
インストールと初期設定したのでメモ。
(root権限での作業になります)

phpMyAdminの導入

php -v
mysql --version
先に下準備、PHP / MySQLのバージョンを確認する。
yum update
yum install phpmyadmin
念のためyumをアップデートしてからphpMyAdminをインストール。
cp /etc/httpd/conf.d/phpMyAdmin.conf /etc/httpd/conf.d/phpMyAdmin.conf.org
vim /etc/httpd/conf.d/phpMyAdmin.conf
vimで設定ファイルを編集。
変更内容は以下。(apacheのバージョンを事前にチェックしておいて下さい)
<Directory /usr/share/phpMyAdmin/>
<IfModule mod_authz_core.c>
    # Apache 2.4
    <RequireAny>
        Require ip 127.0.0.1
        Require ip ::1
    </RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
# Order Deny,Allow
# Deny from All
# Allow from 127.0.0.1
# Allow from ::1
Order allow,deny
Allow from all
</IfModule>
</Directory>
一部をコメントアウト、15,16行目を追加。
service httpd restart
新しい設定でapacheを再起動。

下のURLでphpMyAdminが表示されればOK。
http://VPSのIPアドレス/phpmyadmin/

ただ、現状だとBASIC認証でのログインとなってしまうので、
通常のログイン画面( = cookie認証)でログインできるよう変更する。

クッキー認証

cp /etc/phpMyAdmin/config.inc.php /etc/phpMyAdmin/config.inc.php.org
sudo vim /etc/phpMyAdmin/config.inc.php
config.inc.phpのバックアップしてから編集する。
$cfg['blowfish_secret'] = '任意のパスワード';
$cfg['Servers'][$i]['auth_type'] = 'cookie';(認証タイプ => cookieに変更)
編集が終わったら、もう一度ブラウザでphpMyAdmin開いてみる。

phpMyAdmin

いつもの画面でた。
あとは、新しいパスワードでログインできることを確認してください。

rootユーザー以外にユーザーを追加する

もうGUIで作成できるので、
詳しくはこちらを参考に:
http://www.dbonline.jp/phpmyadmin/user/index1.html

他参考にしたページなど:

以上です。


【さくらVPS】サーバ設定から PHP / MySQL 設置まで

このたび、FuelPHPを触る機会があった。
で、ついでなので環境構築はVPSサーバでやろう!などと思いつき。。。
せっかくなので作業行程をメモしときます。(長いです)

ざっと流れは以下:

  • ログイン
  • 下準備
  • 作業用ユーザの設定
  • 鍵認証の設定
  • SSHの設定変更
  • ファイヤーウォールの設定
  • webサーバ(Apache)の設定
  • (サーバ動作を確認するため)webページを設置し確認
  • VirtualHostの設定
  • PHPの設定
  • MySQLの設定

ログイン


まずはさくらVPSを申込。

しばらくするとメールが届くので、記載情報よりコントロールパネルにログイン。

さくらvpsコントロールパネル

VPSの「起動」ボタンで起動。
ステータスが「稼働中」になればOK。

さっそくターミナルで接続してみる。
ssh root@{*IPアドレス}
ここでエラーがでる場合は「再起動」しましょう。
参考:http://wp-study.net/post-1113

下準備

yum update
アップデート可能なパッケージを調査する。
vim /etc/sysconfig/i18n
vimで/etc/sysconfig/i18nファイルを編集する。
(vimの基本操作についてはこことか参考にしてください)
とはいえ、ここは文字コード変えるだけ。
--- (編集開始) ---
LANG="ja_JP.UTF-8"
--- (編集完了) ---
デフォルトではEUC-JPになっているので、UTF-8にする。

作業用ユーザの設定

useradd {*任意のユーザー名}
作業用ユーザーを追加する。
passwd {*任意のユーザー名}
作業用ユーザー用のパスワードの設定する。
usermod -G wheel {*任意のユーザー名}
作成したユーザーをwheelグループに移動する。
なおwheelグループとはroot特権を得ることができるユーザーのグループ。
(これを設定しないと、一般ユーザーも制限なくroot権限を使用できてしまう)
visudo
前述のwheelグループにsudo権限を与える。
* /wheelで文字列検索、コメントアウト部を削除すればよい(xx押下)

このタイミングで一度ログアウトして、
登録ユーザー名でログイン出来るかチェック!

鍵認証の設定

このままではセキュリティ的に弱いので、鍵認証の設定を行う。

  • VPS側:公開鍵の補完場所を作成
  • mac側:鍵のペア作成(秘密鍵、公開鍵)
  •     公開鍵、VPSに転送
  •     秘密鍵を使いログイン
{*ユーザー名}@{*IPアドレス}
作成ユーザーでログインした状態で、
mkdir .ssh
.sshファイルを作成。
chmod 700 .ssh
パーミッションを700に変更。

次はmac側:
ssh-keygen -t rsa -v
鍵のペアを生成する。
ls -la .ssh
作成した鍵の有無を確認。下記が存在していればOK。

  • id_rsa(mac側に置く鍵。秘密鍵)
  • id_rsa.pub(VPS側に置く鍵。公開鍵)
chmod 600 .ssh/id_rsa.pub
パーミッションを600に変更。
scp ~/.ssh/id_rsa.pub {*ユーザー名}@{*IPアドレス}:~/.ssh/authorized_keys
ファイルをscpで転送する(転送先はvpsの~/.ssh/authorized_keys)。
ssh -i ~/.ssh/id_rsa {*ユーザー名}@{*IPアドレス}
先ほどの秘密鍵を指定して、VPS接続。つながることを確認。

SSHの設定変更

ここまでだと、まだrootユーザーでのログインが出来てしまうので、下記も設定していく。

  • ポート番号の変更 (デフォルト22 => 1024 ~ 6553)
  • パスワードログインの禁止
  • rootログインの禁止
sudo -s
# いったんroot権限に戻る
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
念のためsshd_configをバックアップ(sshd_config.orgとして保存)

vim /etc/ssh/sshd_config

--- (編集開始) ---
- /portで検索
Port {*変更したいナンバー}
# 任意のポート番号に変更

# /passwordで検索
PasswordAuthentication no

# /permitで検索
PermitRootLogin no
--- (編集終了) ---
vimにてsshd_configを編集。

service sshd restart
sshdを再起動する。
参考:http://open-groove.net/linux/sshd-restart/

mac側:
ssh -p {*上で変更したナンバー} {*ユーザー名}@{*IPアドレス}
変更したポート番号で接続できることを確認。

ファイヤーウォールの設定

vim /etc/sysconfig/iptables
iptablesファイルを作成する。
* root権限で行うこと

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SSH, HTTP, FTP1, FTP2, MySQL
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport {*任意のポート番号} -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 20 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
# ここまでのチェックでひっかからなかったパケットは、ICMPパケット"host-prohibited"を返して接続拒否
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
iptablesをvimで開いたら、
上記をコピー、保存する。

中身については以下が参考になります:
http://www.nina.jp/server/redhat/iptables/iptables.html

service iptables restart
iptablesを再起動。
iptables -L
正しく動作してるか確認。

webサーバ(Apache)の設定

rpm -qa | grep httpd
既にApacheがインストールされていないか確認する。
* 「httpd」はApacheパッケージ名
yum install httpd
Apacheの新規インストール。
chkconfig httpd on
自動起動をonに変更する。
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
httpd.confのバックアップとっとく。
httpd.confについては:
http://r7kamura.hatenablog.com/entry/20110222/1298371277
vim /etc/httpd/conf/httpd.conf

--- (編集開始) ---
ServerTokens Prod
OS => Prodに変更

ServerSignature Off

Options -Indexes FollowSymLinks
# <Directory "/var/www/html">の下にあるIndexesに「-」を追加

--- (編集終了) ---
httpd.confを上記の通り変更。
service httpd configtest
設定が正しいか確認。
service httpd start
httpdの起動。

(サーバ動作を確認するため)webページを設置し確認

Apacheは起動したので、実際にブラウザ表示してみる。
http://{*IPアドレス}
この時点で「Apache 2 Test Page」が表示されていればOK。

次に上記の場所にテスト用のwebページを置いてみる。
chown -R {*ユーザー名}:{*ユーザー名} /var/www/html
DocumentRoot(/var/www/html)以下をユーザの所有にする
* DocumentRootはhttpd.conf内に記述されている

テスト用のindex.html(中身は何でもよい)は、FTPソフトで送る。
なので、FTPソフトに以下の設定を行い、接続する。
  • * sshによる暗号化FTPなのでSFTPを選択
  • * パスワードはローカルの秘密鍵を選択
  • * パスは /var/www/html
  • * ポート番号は自分で指定したものを入力
Transmitで設定したらこんなかんじ:

transmit

ここまできたらFTPで該当パスに接続、
index.html設置して再度ブラウザで確認する。

VirtualHostの設定

複数ドメインを運用するために必要なので、やっときましょう。
なおmac環境なのでhttp://www.redwinder.com/macapp/hoster/を使用する。
mkdir -p /var/www/dev.example.com/public_html
ドメイン用のディレクトリを作成。
chown -R {*ユーザー名}:{*ユーザー名} /var/www/dev.example.com
所有権を変更。
vim /etc/httpd/conf.d/dev.example.com.conf
.confファイルの生成、編集する。
* .confはwebページ呼出時に必ず読まれるファイル

<VirtualHost *:80>
ServerName dev.example.com
DocumentRoot "/var/www/dev.example.com/public_html"
DirectoryIndex index.html index.php
ErrorLog /var/log/httpd/dev.example.com_error_log
CustomLog /var/log/httpd/dev.example.com_access_log combined
AddDefaultCharset UTF-8
ServerAlias www.xn--vps-073b3a72a.com
<Directory "/var/www/dev.example.com/public_html">
AllowOverride All
</Directory>
</VirtualHost>
上記を.confにコピー、保存する。
参考:
http://www.さくらvps.com/9.html
vim /etc/httpd/conf/httpd.conf

--- (編集開始) ---
NameVirtualHost *:80
コメントを削除
--- (編集終了) ---
バーチャルホストを有効にするため、httpd.confを変更。
service httpd configtest
動作確認。
service httpd restart
httpd再起動。

ここでバーチャルホスト確認のため、いったんrootユーザーからログアウト。
vim /var/www/dev.example.com/public_html/index.html
バーチャルホストで表示させるためのindex.htmlを作成、編集する。(テスト用なので内容は適当でOK)

次に、ブラウザでhttp://dev.example.comを叩いたときに、
/dev.example.com/public_html/index.htmlを見にいくようにする。
そのために、前述したhoster( hostsファイルを管理するアプリ )に設定する。
こんなかんじ:

hoster

* 設定したらONにすることを忘れないこと!
http://dev.example.com/ をブラウザで表示してみて、
index.htmlの内容が表示されていればOK。

PHPの設定

ここからPHPの設定。
(必要なければ省略できます)
yum install php php-devel php-mysql php-mbstring php-gd
phpと諸々をインストール。
php -v
インストールしたphpのバージョン確認。
cp /etc/php.ini /etc/php.ini.org
php.iniのバックアップとる
vim /etc/php.ini
# php.iniを編集

--- (編集開始) ---
error_log = /var/log/php.log
# error_logの保存場所を変更

mbstring.language = Japanese
# コメントをはずす

mbstring.internal_encoding = UTF-8
# EUC-JP => UTF-8 に変更

mbstring.http_input = auto
# コメントをはずす

mbstring.detect_order = auto
# コメントをはずす

expose_php = Off
# On => Off に変更

date.timezone = Asia/Tokyo
# コメントはずして、「Asia/Tokyo」を付与

--- (編集終了) ---
php.iniの設定を変更する。
service httpd restart
httpd再起動。

MySQLの設定

ここも必要になければ省略可。
流れ的にはPHPと同じかんじ。
yum install mysql-server
MySQLのインストール。
cp /etc/my.cnf /etc/my.cnf.org
my.cnfをバックアップ。
vim /etc/my.cnf
# my.cnfを編集

# symbolic-linkの下辺りに以下をコピペする

character_set_server=utf8
default-storage-engine=InnoDB
innodb_file_per_table
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
上記を記述する事で、作成時に文字コードをデフォルトでUTF-8に設定してくれる。
service mysqld start
MySQLの起動。
mysql_secure_installation
MySQL の初期データの設定、主にセキュリティ回りを設定する。
* rootパスワードを設定するか訊かれるので y
Enter current password for root (enter for none): => ただenterを押せばよい
それ以外はデフォルト( y )を選択すればOK。
chkconfig mysqld on
自動起動をON (常に立ち上がっている状態になる)。
mysql -u root -p
MySQLが正しく設定されたか確認。

ここまでで一通り完成!!

お疲れさまでした。