カテゴリー別アーカイブ: VPS

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

SELinux設定

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

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

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

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

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

vi /etc/selinux/config

次のように修正する

SELINUX=enforcing

rebootで変更反映する

iptableの設定

iptableはファイアーウォールの設定を行なう.

下記サイト等を参考にiptableの設定を行なう.

http://qiita.com/shimohiko/items/ec672655edb84578a82e

上記での設定に加えて,MySQLやFTPのポートも使用するのであけた.

# FTP

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 20 yy-j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 21 yy-j ACCEPT

# MySQL

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

 

編集後は,下記で反映

$ sudo /etc/rc.d/init.d/iptables restart

 

ログイン接続のセキュリティ対策

ポート番号の変更
セキュリティ対策でポート番号を変更する.
sudo vi /etc/ssh/sshd_config

下記を編集
コメントアウトをはずしてポート編集
#Port 22
port 10020

再起動して変更を反映させます.
$ /etc/init.d/sshd restart

次に,公開鍵でログイン可能にする

ローカルで公開鍵を作成する.
ssh-keygen

下記に公開鍵が生成される.
~/.ssh/id_rsa.pub

公開鍵をサーバに送る
scp -P ポート番号 ~/.ssh/id_rsa.pub ユーザー名@IPアドレス:~/.ssh/authorized_keys

バーミッションを変更します.
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

以上で,公開鍵でログイン可能になりました.

次に,公開鍵以外でのログインを禁止します.
$vi /etc/ssh/sshd_config

以下の項目を修正して,リスタート
PasswordAuthentication no

さくらVPSサーバの初期設定

現在の自宅サーバをさくらのVPSサーバに移行をおこないました.
電気料金などを計算するとやっぱりVPSの方が安いようです.

下記から適当にプランを選択して,申し込み手続きをおこないました.
http://vps.sakura.ad.jp/

申し込み完了から,実際に使えるようになるまでわずか数十分でした.
手軽です.

最初のログインはさくらVPSコントロールパネル内のコンソールから行なう必要があるようです.
いきなりターミナルからログインしようとしたら出来なくて少し戸惑いました.

また,さくらVPSコントロールパネル内のコンソール画面に移動すると,
最初,下記メッセージが表示されました.

  • subprocess terminated

これは,サーバを起動していないことが原因でした.
この場合,VPSホームからサーバの起動を選択すれば大丈夫です.

[rotユーザのパスワード変更と新規ユーザの作成]
rootユーザのパスワード変更と,通常ログインするユーザを新規に作成する.
下記サイトを参考に行なった.
http://blog.orangemittoo.net/post/sakuravps_init/

rootでログイン状態で下記コマンドでパスワード変更

  • passwd

新規ユーザの作成

  • useradd hoge
  • passwd hoge

作成したユーザにもsudo権限を付与しておきます.

  • su
  • パスワード入力
  • visudo


  • 「root ALL=(ALL) ALL」の下に,次を追加する.

  • testuser ALL=(ALL) ALL
  • 以上で,作成したユーザでターミナルからログインできるようになります.
    続いて,ログインの制限などのセキュリティ対策を行なっていきます.