作成者別アーカイブ: tana

外部ホストからMySQLへ接続する

これまで、開発用にはphpmyadminなどを利用していましたが、

本番環境へは、コマンドラインから直接管理を行っていました。

今回、外部ホストから直接MySQLに接続して管理できるツールが存在することを知ったので、方法をまとめます。

MySQL管理ソフトを導入

まず、MySQL管理ソフトをインストールします。

自分は、Macを利用しているので、「Sequel Pro」というツールを導入しました。

ツールのインストールは特に特筆すべき点はないので割愛します。

MySQLで外部ホストからの接続を許可する

上記ツールを導入して、MySQLへ接続しようとすると、

MySQLへの接続中にエラーが発生しました。

調べてみると、下記サイトに記載されているように、MySQLへデフォルトで外部ホストからの接続が許可されていないようです。

外部ホストからのMySQLへの接続許可設定を行います。

// MySQLへ接続
mysql -u root -p
// パスワード入力
Enter password: 
// 一覧表示
mysql> select user,host from mysql.user;
+--------+-------------------------+
| user | host |
+--------+-------------------------+
| root   | 127.0.0.1               |
| apache | localhost               |
| root   | localhost               |
| root   | hogehoge.jp             |
+--------+-------------------------+

// 上記はすべてローカル接続しか許可していないので、外部からの接続許可をする。
// ※データベースの一覧確認をし、外部接続を許可するDBをきめる。
mysql> show databases; 
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
| hoge_db            |
+--------------------+
// ユーザ名”apache″、接続する外部ホストは”127.0.0.1”、利用するDBは”hoge_db”で設定する場合次のようになる。
mysql> grant all privileges on hoge_db.* to apache@"127.0.0.1" identified by 'your password' with grant option;

すべてのDBへの接続を許可する場合は[hoge_db.*]の箇所を[*.*]とする。

以上で、接続できるようになるので、MySQLの接続管理ツールで接続を試します。

Macでrenameコマンド.ファイル名の一括置換

Macでファイルのrenameを一括で行なう.

ちなみに,mvコマンドでは一括変換は出来ない模様.

やり方は特に難しい点はなく,次のように行なう

rename “s/hoge/fuga/g” *.txt

上記では,txtファイルに対して,hogeのファイル名部分をfugaに変換している.

ただ,なぜか,Finderは再起動しないと変更の反映が行なわれなかった(原因不明).

MySQL-Connector/Mecab/feedparser/nstkのインストール

Python/MySQLは既にインストール済みであることを前提に,下記3つのインストールを行ないます.

  • MySQL-Connector
  • Mecab
  • Feedparser
  • nstk

まずは,Pythonのインストールされていることの確認です.

# python -V

次のように表示されれば,インストールされています.

Python 2.6.4

MySQLのインストールされているかの確認は次のコマンドで行ないます.

# mysql -V

次のように表示されます.

mysql  Ver 14.12 Distrib 5.0.75, for debian-linux-gnu (x86_64) using readline 5.2

次に,PythonでMySQLを使用するためのMySQL Connector/Pythonをインストールします.(他にもいくつかPython用のMySQLコネクタが存在します.ライセンスや使い勝ってなど,都合のよいものを選んで使用しましょう) 基本的には下記サイトを参考にします.

http://dev.mysql.com/doc/refman/5.5/en/connector-python-info.html

まず,ダウンロードは下記で行ないます.

http://python.org/download/

インストールについては下記を参照します.

http://dev.mysql.com/doc/connector-python/en/connector-python-installation-source-unix.html

メインのコマンドは下記になります.

#gunzip mysql-connector-python-1.0.8.tar.gz

# tar xf mysql-connector-python-1.0.8.tar

# cd mysql-connector-python-1.0.8

# sudo python setup.py install

次にMecabのインストールです.

まずはDLできるバージョンを確認します.(メニューでDownloadを選択します.)

https://code.google.com/p/mecab/

今回は,Version0.996を使用します.

ダウンロードを行ないます.

wget https://mecab.googlecode.com/files/mecab-0.996.tar.gz

辞書もあわせてダウンロードします.

wget https://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz

これらを利用してインストールを行ないます.

# tar zxfv mecab-0.996.tar.gz

# cd mecab-0.996

# ./configure

# make

# make check

# make install

make checkでOKの場合は,次のように出力されます.

==================

All 3 tests passed

==================

次に辞書のインストールです.

# tar zxvf mecab-ipadic-2.7.0-20070801.tar.gz

# cd mecab-ipadic-2.7.0-20070801

# ./configure –with-charset=utf8

# make

# make install

次に,mecab-pythonをインストールします.

# wget https://mecab.googlecode.com/files/mecab-python-0.996.tar.gz

# tar zxvf mecab-python-0.996.tar.gz

# cd mecab-python-0.996

# python setup.py build

# sudo python setup.py install

なお,筆者の環境では,「python setup.py build」にて,gccで下記のようなエラーが発生しました.

> Python.h: そのようなファイルやディレクトリはありません

> …

> error: command ‘gcc’ failed with exit status 1

python-devパッケージがインストールされている必要があるようです.

この場合は,次のコマンドでインストールします

#yum -y install python-devel

また,mecab実行時に下記のエラーもでました.

ImportError: libmecab.so.2: cannot open shared object file: No such file or directory

この場合は,ライブラリにパスを通すことで解決できます.

# vim /etc/ld.so.conf.d/lib.conf

次を追記

/usr/local/lib/

更新を読み込みます.

# sudo ldconfig

確認は次のスクリプトで行なえます.

# python test.py

次に,feedparserのインストールを行ないます.

# wget http://peak.telecommunity.com/dist/ez_setup.py

# python ez_setup.py

# wget http wget http://feedparser.googlecode.com/files/feedparser-5.1.3.zip

# unzip feedparser-5.1.3.zip

# cd feedparser-5.1.3

# python setup.py install

なお,最新バージョンは下記で確認できます.

https://code.google.com/p/feedparser/

次にNLTKをインストールします.

# sudo easy_install pip

# pip install -U numpy

# pip install -U pyyaml nltk

次のように確認します.エラーがでなければ大丈夫だと思います.

# python

python > import nltk

バーチャルホスト設定

バーチャルホストの設定を行ないます.

httpdの設定ファイルを編集します.

# vi /etc/httpd/conf/httpd.conf

# 下記のコメントをはずす
NameVirtualHost *:80

Virtual Host用の設定ファイルを作成します.

# vi /etc/httpd/conf.d/virtual_host.conf

<VirtualHost *:80>
    ServerName vhoge.com
    ServerAdmin webmaster@vhoge.com
    DocumentRoot /var/www/html/vhoge
    ErrorLog logs/vhoge-error_log
    CustomLog logs/vhoge-access_log combined env=!no_log
</VirtualHost>

apacheの設定反映は下記で行なう

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

サーバのデータ移行

サーバを自宅サーバからさくらVPSに変更します.

基本的なサーバの設定は,「サーバの設定」で説明しています.

ここでは,サーバの移行(データの移行)に焦点に当てて記述します.

基本的には,下記2つです.

  1. ファイルコンテンツの移行
  2. DBの移行

(1)については難しくなく,単純にディレクトリ単位でファイルを移行すればよいので,問題ないと思います.

ただし,忘れ易いのが,htaccessなどの設定ファイルです.これらの不可視ファイルは移行もれがありえるので注意してください.

次に,(2)について説明します.DBはMySQLで,既にインストールされていることを前提にしています.

まず,移行元での作業です.

存在するデータベースを確認します.

#mysql> show databases;
+--------------------------+
| Database                 |
+--------------------------+
| information_schema       |
| test                     |
| hoge_db                  |
+--------------------------+

移行するDBを保存します.

保存するDB名をhoge_db,パスワードをhoge_password

# mysqldump -u root -phoge_password hoge_db > hoge_db.sql

hoge_db.sqlが保存されます.

-pとパスワードの間には空白はありませんので注意してください.

次に移行すべきユーザの確認します.

# mysql -u root mysql
mysql> use mysql;
mysql> SELECT user,host FROM mysql.user;
+------------+-----------+
| user       | host      |
+------------+-----------+
hoge_user    | localhost |

以上で,移行元の作業は完了です.

次に,移行先での作業です.

DBを作成します.

# mysql -u root mysql
mysql> CREATE DATABASE hoge_db CHARACTER SET utf8;

移行元で保存したhoge_db.sqlを使用します.

mysql -phoge_password hoge_db < hoge_db.sql

以上で,移行完了です.

ダイナミックDNSの設定

ダイナミックDNSの設定を行ないます.

DNSの仕組みなどは割とたくさん情報があるので,

ここでは,忘れがちなIPの通知設定をCronを使って行なう方法を記載します.

cronに登録するスクリプトの作成

# vi /usr/local/bin/mydns-update.sh

下記のように編集する

#!/bin/sh
USER="hoge_user"
PASS="your_password"
telnet mail.mydns.jp 110 > /dev/null 2>&1 <<EOF
USER $USER
PASS $PASS
QUIT
EOF

cronの登録は次のコマンド行なう.

# crontab -e

5分毎に通知するように,次のように修正する.

*/5 * * * * /usr/local/bin/mydns-update.sh

cronの登録されているスクリプトの確認は次のコマンドで行なう.

# crontab -l

サーバ設定(各種インストールから設定まで)

まずはhttpdのインストール

# yum -y install httpd

常にサーバが自動で起動するように設定する.

# chkconfig httpd on

いくつか設定を行ないます.

# vi /etc/httpd/conf/httpd.conf

//下記で管理者のアドレスを設定します.
ServerAdmin you@example.com

//レスポンスヘッダにあまり情報を出力しないように修正
ServerTokens Prod

phpのインストールを行ないます.

# yum -y install php php-mbstring php-mysql php-gd

//下記でインストールを確認
# php -version
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

つづいて,phpの設定をいじります.

# vi /etc/php.ini

//言語設定など,次のように修正する.
//コメントアウトされているものは,コメントアウトをはずす
//タグの短縮を可能にする
short_open_tag = On

//ヘッダーにphpのバージョンなどを含めない
expose_php = Off

//最大実行時間の変更
max_execution_time = 600
//文字コード 
default_charset = "UTF-8"

//最大POSTサイズ
post_max_size = 25M
//アップロードサイズ
upload_max_filesize = 25M

//時間設定
date.timezone = Asia/Tokyo

//エンコード文字コードなど
mbstring.internal_encoding = UTF-8
mbstring.detect_order = auto
mbstring.substitute_character = none;

restartして反映させます.

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

phpinfoなどを表示して確認が行なえます.

次に,apacheサーバのセキュリティ対策を行ないます.

まず,公開ディレクトリがデフォルトだとroot権限のディレクトリになっており,あまりよくないため変更します,

公開用ディレクトリを作成します.

# mkdir -p /home/apache

CentOSではデフォルトでapacheユーザがhttpdで設定されています.それにあわせてディレクトリの所有者をapacheにします.

# chown -R apache:apache /home/apache

公開ディレクトリを編集するユーザはapacheグループに所属するようにします.

# usemod -G apache hoge_user

同じグループのユーザが公開ディレクトリを編集できるようにパーミッションを変更します.

#chmod 770 /home/apache -R

次に,MySQLをインストールします.

# yum -y install mysql-server

設定を変更します.文字コードをutf-8に変更します

# vi /etc/my.cnf
character-set-server = utf8

MYSQLを起動します

# /etc/rc.d/init.d/mysqld start

自動起動するように修正する.

# chkconfig mysqld on

確認を下記で行ないます.

# chkconfig --list mysqld
mysqld         0:off 1:off 2:on 3:on 4:on 5:on 6:off

MySQLにrootユーザのパスワードを設定する

# sudo mysqladmin -u root password 'hoge_password'

下記でログインできるか確認できます

# mysql -u root -p

WordPressのスパムコメント整理

WordPressのコメントを承認式にしていてほっておいたら,

対象の承認待ちが溜っていました.

大量のコメントを削除する方法は,下記のようです.

  1. 表示させる件数をふやして(最大999)手動で削除
  2. 一括操作するためのプラグインをいれて行う
  3. terminalからデータベースを直接操作する

今回は,(2)を選択して行ないました.

使用したプラグインは下記になります.

上記サイトは英語です.日本語での説明は,下記サイトなどが参考になります.

SELinux設定

SELinuxが初期状態でOFFになっているので,設定する.

なおSELinuxとは,要はセキュリティ対策として悪意のあるユーザに侵入された場合に被害を最小に抑えるための仕組み.

下記サイトなどが参考になる.

http://itpro.nikkeibp.co.jp/article/COLUMN/20070827/280414/

下記コマンドで編集を行なう.

vi /etc/selinux/config

次のように修正する

SELINUX=enforcing

rebootで変更反映する

Linux バージョンの確認方法

Linuxでは,大半のOSでは,etc以下のディレクトリにVersionやreleaseファイルが存在する.

例えば,

/etc/XXX_release

または

/etc/XXX_version

というファイルをみればよい.

CentOSの場合次のようになる.

cat /etc/redhat-release

また,あまり確認することはすくないと思うが,

カーネルのバージョンは次のコマンドで確認することができる.

uname -a