unix


さくらVPSで外部ホストからmysqlに接続する

さくらVPSで外部ホストからmysqlに接続するには、接続を許可するユーザーを作ればいい。

参考サイト
MySQLに外部ホストから接続できるように設定する

接続を許可するユーザーを作るSQL
-------------------------------------------------
grant all privileges on 接続を許可するDB名.* to new_user_name@"接続元のホスト" identified by 'password' with grant option;
-------------------------------------------------

grant → 付与。許諾する。mysqlで権限を付与する命令。

all privileges → 全ての権限を与える。

privileges → プリビレッジ。権限の意。

さくらVPSにphp-mecabを入れたときの覚書

さくらVPSにphp-mecabを入れたときの覚書手順
1.mecab を入れる
2.php-mecab を入れる

参考にしたサイト
phpでmecab

手順は参考サイトどおり。自分なりの捕捉を入れた。

ソースコードをインストールする場所に移動
-------------------------------------------------
cd /usr/local/src/
-------------------------------------------------

ダウンロードと解凍
-------------------------------------------------
wget http://mecab.googlecode.com/files/mecab-0.996.tar.gz
tar xvf mecab-0.996.tar.gz
-------------------------------------------------

解凍したディレクトリに移動
-------------------------------------------------
cd mecab-0.996
-------------------------------------------------

configure で Makefile をつくる
-------------------------------------------------
sudo ./configure --enable-utf8-only
-------------------------------------------------
※「configure」というシェルスクリプトを実行することで、ソースファイルをコンパイルする前に、インストール対象となるシステム特有の機能/情報をチェックし、チェック状況を記述したMakefileが作成される。

コンパイルとインストール
-------------------------------------------------
sudo make
sudo make install
-------------------------------------------------

この時点で mecab を実行すると 辞書がないエラーが出る
-------------------------------------------------
# mecab
param.cpp(69) [ifs] no such file or directory: /usr/local/lib/mecab/dic/ipadic/dicrc
-------------------------------------------------

バージョン確認だけならエラーは出ない
-------------------------------------------------
# mecab -v
mecab of 0.996
-------------------------------------------------

辞書「mecab-ipadic-neologd」のインストール

-------------------------------------------------
cd /usr/local/src/mecab-0.996/
mkdir library
cd /usr/local/src/mecab-0.996/library
git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
cd /usr/local/src/mecab-0.996/library/mecab-ipadic-neologd/
./bin/install-mecab-ipadic-neologd -n
-------------------------------------------------

動作確認が終了したら続いて、php-mecab のインストール

-------------------------------------------------
cd /usr/local/src/
wget https://github.com/rsky/php-mecab/archive/master.zip
unzip master.zip
cd php-mecab-master/mecab
phpize
sudo ./configure
sudo ./configure --with-php-config=/usr/bin/php-config --with-mecab=/usr/local/bin/mecab-config
sudo make
sudo make install
-------------------------------------------------

./configure の途中で re2c が無いみたいなエラーが出たのでインストールする

re2c をインストール
-------------------------------------------------
wget http://jaist.dl.sourceforge.net/project/re2c/re2c/0.13.7.5/re2c-0.13.7.5.tar.gz
tar zxvf re2c-0.13.6.tar.gz
cd re2c-0.13.6
./configure
make
make install
-------------------------------------------------

再び./configure からやり直し
-------------------------------------------------
sudo ./configure
sudo ./configure --with-php-config=/usr/bin/php-config --with-mecab=/usr/local/bin/mecab-config
sudo make
sudo make install
-------------------------------------------------

シンボリックリンクの作成
-------------------------------------------------
sudo ln -s /usr/lib64/php/modules/mecab.so /etc/php.d
-------------------------------------------------

php.iniの編集
-------------------------------------------------
vim /etc/php.ini
-------------------------------------------------

/etc/php.ini
-------------------------------------------------
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;

; If you wish to have an extension loaded automatically, use the following
; syntax:
;
; extension=modulename.extension
;
; For example, on Windows:
;
; extension=msql.dll
;
; ... or under UNIX:
;
; extension=msql.so
;
; ... or with a path:
;
; extension=/path/to/extension/msql.so
;
; If you only provide the name of the extension, PHP will look for it in its
; default extension directory.

;;;;
; Note: packaged extension modules are now loaded via the .ini files
; found in the directory /etc/php.d; these are loaded by default.
;;;;

;php-mecab を動かす記述
extension=mecab.so

;mecab-php の辞書のパス
mecab.default_dicdir="/usr/local/lib/mecab/dic/mecab-ipadic-neologd"
-------------------------------------------------

apacheの再起動
-------------------------------------------------
service httpd restart
-------------------------------------------------

動作確認
-------------------------------------------------
php -r 'phpinfo();' | grep 'mecab' -i 
-------------------------------------------------

以下のようになっていれば問題ない。
-------------------------------------------------
mecab
MeCab Support => enabled
MeCab Library => 0.996 => 0.996
mecab.default_dicdir => no value => no value
mecab.default_rcfile => no value => no value
mecab.default_userdic => no value => no value
-------------------------------------------------

test.php
辞書の読み込みをしてないとエラーになる
-------------------------------------------------
<?php

$str = 'この焼肉は焼きにくい';
$mecab = new Mecab();

$nodes = $mecab->parseToNode($str);

foreach ($nodes as $n)
{
echo $n->getSurface() . "
";
echo $n->getFeature() . "
";
}
?>
-------------------------------------------------

使用する辞書を PHP で指定する場合
-------------------------------------------------
$options = array('-d', '/usr/local/lib/mecab/dic/mecab-ipadic-neologd');

$mecab = new MeCab_Tagger($options);
-------------------------------------------------

【UNIX/Linuxコマンド】ファイル数をカウントする

ファイル数をカウントするlinuxコマンドは以下のとおり。
カウントしたいファイルがある親ディレクトリまで移動して実行する。
サブディレクトリに含まれるファイルも含めてカウントされる。

-------------------------------
find . -type f | wc -l
-------------------------------

コマンドの解説

「find」は、ファイルやディレクトリを検索するコマンド。

その後のドット(.)は、探索の起点が現在のディレクトリであることを示す。この場合現在のディレクトリとそのすべてのサブディレクトリが探索の対象となる。
もしここをスラッシュ(/)に置き換えれば、探索の起点がルートディレクトリになる。

「-type f」は、通常ファイルを検索することを示す。「f」を「d」に置き換えれば、ディレクトリが検索対象となる。

パイプ(|)を使って、検索結果を次のコマンドに受け渡す。

「wc -l」は、行数の集計。つまり「find」で検索した結果が、ファイルの数だけ一行ずつ表示されるのを集計して、行の数として数字で表示する。
ちなみに「wc」は、 Word Count の略。

Unixコマンドでディレクトリごとzipファイルに圧縮する

Unixコマンドでディレクトリごとzipファイルに圧縮する方法

コマンド
圧縮したいディレクトリがある親ディレクトリに移動して次のコマンドを実行。

コマンド
--------------------------------
zip -r 新しいディレクトリ名.zip 圧縮対象のディレクトリ名
--------------------------------

オプションの「-r」は、ファイルとディレクトリを再帰的に処理する。