yum コマンド

今回のCentOSへのLAMP環境構築中、多くのライブラリが入ってなくて、yumさんに色々入れてもらった。
便利だったので、主なコマンドを記録しとく。

check-update
   アップデート可能なパッケージの一覧を表示

clean
   ダウンロードしたパッケージと古いヘッダを削除する。clean allと同じ

clean oldheaders
   古いヘッダを削除

clean packages
   ダウンロードしたパッケージを削除

info
   利用可能なパッケージの情報を表示

info パッケージ名
   指定したパッケージの情報を表示

install パッケージ名
   指定したパッケージをインストール

list
   利用可能なパッケージの一覧を表示

list installed
   インストール済みのパッケージ一覧を表示

list updates
   アップデート可能なパッケージの一覧を表示

provides パッケージ名
   パッケージに含まれるファイルの一覧を表示

remove パッケージ名
   指定したパッケージをアンインストールする。
   指定したパッケージと依存関係があるパッケージは、削除するかどうか確認を求める

search キーワード
   キーワードでパッケージを検索する。
   検索の対象は、RPMファイルのName、Packager、Dummary、Descriptionの
   各フィールド

update
   アップデート可能な全パッケージをアップデート

update パッケージ名
   指定したパッケージをアップデート

  

2008年08月29日 Posted by のぶ at 14:25Comments(0)TrackBack(0) ┣Linux

CentOS5 + MySQL5 でconfigureエラー

CentOS5にMySQL5を入れようとしたら、configureで
checking for termcap functions library... configure: error: No curses/termcap library found
とエラーが出てとまった。

cursesっていうライブラリがたりない?
ってことでyumでインストール

# yum install ncurses
# yum install ncurses-devel

で、configure再度したらとおった。ktkr

いじょ  

2008年08月29日 Posted by のぶ at 12:38Comments(0)TrackBack(0)MySQL

CentOS5 に vsftpd インストール

某SAKU○で鯖かりたら入ってなかったので。。

yumで簡単インストール♪
以下のコマンドを打つだけ!


# yum install vsftpd

確認や自動起動するようの設定は以下で。
http://nobuo.osakazine.net/e90433.html

いじょ  

2008年08月29日 Posted by のぶ at 11:07Comments(0)TrackBack(0) ┣Linux

EXPLAIN でMySQLのパフォーマンスチューニング

IRCで聞いた事無い単語がでてきたんで調べたらパフォーマンスチューニングに使うものらしい。
↓ひとまずよさげなサイトみつけたんで忘れんようにメモ。勉強して後でまとめよう。

http://634.ayumu-baby.com/pukiwiki/index.php?MySQL%2F%A5%D1%A5%D5%A5%A9%A1%BC%A5%DE%A5%F3%A5%B9%A5%C1%A5%E5%A1%BC%A5%CB%A5%F3%A5%B0%2FEXPLAIN
  

2008年07月02日 Posted by のぶ at 17:58Comments(0)TrackBack(0)MySQL

vim の 文字コード 自動判別

vimで色んな文字コードのファイルを編集しようとすると、デフォルトだと文字コードが違うと化けてしまうので、以下の設定をして、化けないようにする。

$ vi ~/.vimrc
set encoding=utf-8
set fileencodings=iso-2022-jp,sjis,euc-jp


いじょ。
  

2008年07月01日 Posted by のぶ at 12:42Comments(0)TrackBack(0) ┗vim

四則演算変数名

四則演算の答えいれるようの変数名。こんな感じでいいのかな。
加算:$sum
減算:$sub
乗算:$mul
除算:$div
剰余:$mod

変だったら教えてください(><  

2008年05月26日 Posted by のぶ at 16:28Comments(0)TrackBack(0)PHP

empty と is_null の違い

すんごく初歩的なことだけどよく忘れてしまって困るので、書いとこうかと。。。

…と思ってたらまとめられてるサイトがあったので、これでw
http://d.hatena.ne.jp/sngmr/20080209/1202520832


if($var)issetemptyis_null
$var=1TRUETRUEFALSEFALSE
$var="";FALSETRUETRUEFALSE
$var="0";FALSETRUETRUEFALSE
$var=0;FALSETRUETRUEFALSE
$var=NULL;FALSEFALSETRUETRUE
$varNULLFALSETRUETRUE
$var=array()FALSETRUETRUEFALSE
  

2008年05月20日 Posted by のぶ at 15:44Comments(0)TrackBack(0)PHP

vim で 折りたたみ

プログラミングしてると長い関数とか、書き終わって修正がなさそうな関数とか、邪魔になるときがある。
そんなときはvimの機能で折りたたみ。

public function hogeAction()
{
echo 'hogehoge';
}

とかを

public function hogeAction()
+-- 3 行:{-------------------------------------------------------------

って感じで見た目的にさっぱりとできる。
今回は3行だけだけど、行数増えてくと便利。

■コマンド
zf[n] n行分の折り畳みを作成する(ヴィジュアルモードで行数選択してzfでも可)
zfaB 関数とか{}でくくられている中で打つとその{}でくくられている部分を折りたたみ
za 折り畳みの開け閉め
zR 全ての折り畳みを開く
zM 全ての折り畳みを閉じる
zD 折り畳みを削除する
zE 全ての折り畳みを削除


んで、これファイルを破棄(保存して終了とか)してしまうと、折りたたみ情報も一緒に破棄されるので、コメントアウトとして残しておく
.vimrc に以下追加
set foldmethod=marker

いじょ  

2008年05月19日 Posted by のぶ at 16:02Comments(0)TrackBack(0) ┗vim

vim の PHP辞書&補完機能

ついさっき羊さんに教えてもらったのでメモメモ。
vimでPHPプログラミングを書いてるときに、長い関数名とかを打つときなんかに便利。

$ mkdir -p ~/.vim/dict/
$ php -r '$f=get_defined_functions();echo join("\n",$f["internal"]);' \
| sort > ~/.vim/dict/php_functions.dict

と打って、PHP関数の辞書を作成。
あとは.vimrcに登録と設定。下の2行を追加。

autocmd FileType php :set dictionary+=~/.vim/dict/php_functions.dict
set complete+=k

こうすると、たとえばhtmlspecialcharsとか長いのを打つときにhtmlまで打ってCtrl+n or Ctrl+p を打つと候補が出現。複数ある場合はCtrl+n(Ctrl+p)を打てばNext,Prevで選択。
便利そうです。

羊さんありがとう。  

2008年04月17日 Posted by のぶ at 18:06Comments(0)TrackBack(0) ┗vim

MySQL クライアントで文字化け

MySQLクライアントで日本語が文字化けをする場合、MySQL鯖とクライアントで文字コードが異なってる可能性がある。
その対処方法は以下の一行をmy.cnfの[mysqld]の項目に追加。

[mysqld]
skip-character-set-client-handshake

これは鯖の文字コードをそのままクライアントでも使う、って感じの設定。
再起動してこれでOK。  

2008年04月17日 Posted by のぶ at 15:56Comments(0)TrackBack(0)MySQL

よく使(いそうな)う vim コマンド

よく使いそうなvimコマンドのまとめ。
覚えたのや使えそうなの見つけたら追記していく。
調べたら使ってないカーソル移動系がたくさんあってビツクリした。
文字列操作系は意外と使ってる(知ってる)の多いんで常識的なのは省略。

■カーソル移動系
0 カーソル行の行頭に飛ぶ。
^ カーソル行の行頭に飛ぶ。ただし、行頭が空白であれば空白部分の右へ。
$ カーソル行の行末に飛ぶ。
- カーソル行より1行上の行頭に飛ぶ。
return カーソル行より1行下の行頭に飛ぶ。
b 左隣の単語の先頭へ飛ぶ(back-word)。
B スペースで区切られた左隣の単語の先頭へ飛ぶ。
w 右隣の単語の先頭へ飛ぶ(word)。
W スペースで区切られた右隣の単語の先頭へ飛ぶ。
H 画面最上行の左端へ飛ぶ。
M 画面中央行の左端へ飛ぶ。
L 画面最下行の左端へ飛ぶ。
G ファイルの末尾へ飛ぶ。
nG n行目へ飛ぶ。
gg ファイルの先頭へ飛ぶ。
f[str] カーソル位置から行末へ向かって[str](1文字)を検索し、その文字の上に移動する。
F[str] カーソル位置から行頭へ向かって[str](1文字)を検索し、その文字の上に移動する。
; 最後に使ったf、F、t、Tコマンドを繰り返す。
, 最後に使ったf、F、t、Tコマンドを向きを変えて(fならFとして)繰り返す。
% カーソルのある括弧の対括弧に移動する。

■文字列操作系
R カーソル位置から複数の文字を置き換え。
s カーソルのある1文字を消してインサートモードに移る。
S カーソルのある行全体を消してインサートモードに移る。ccも同様。

■画面の操作
^f 1ページ分下に画面を移動。
^b 1ページ分上に画面を移動。
z[return] 現在行が画面の上端になるようスクロール。
z- 現在行が画面の下端になるようスクロール。カーソルは現在行の行頭へ移動。
:vp 縦割り
:sp 横割り

■その他
u 直前の動作を取り消し(undo)。
^r やり直し(redo)。
:pwd カレントディレクトリを表示する。
:e ++enc=UTF-8 // 開いてるファイルのエンコード変更


参考サイトはココ。すごい勉強なりますた。
http://www.7key.jp/software/vi.html
  

2008年04月04日 Posted by のぶ at 11:44Comments(0)TrackBack(0) ┗vim

MySQLのレプリケーション

MySQLのレプリケーション(マスター、スレーブ)の設定メモ

まず2台のサーバを準備する。
ひとまずこんなかんじ。
マスター:192.168.11.2
スレーブ:192.168.11.3

で、通常通りの方法でMySQLを両方にインストールしておく。

■まず、マスターの設定
vi /etc/my.cnf
↓追加
---
server-id=1
log-bin=/usr/local/mysql/data/replitest
sync_binlog = 1
---

server-idはレプリケーションするサーバ間でかぶらないようにする。
my.cnfにすでに書かれてる場合は気をつけるのだ。

log-binはレプリケーションに使うバイナリログ。
場所はMySQLが書き込みできるところならどこでもいい。名前も何でもいい。

sync_binlogはドランザクションに必要(らしい。詳しくは知らない)

以上の設定を追記したらMySQLを起動する。
そしてスレーブから接続できるようにユーザーを作る
ユーザーの作成は通常のGRANT文でつくる。権限にREPLICATION SLAVEってのを付けてあげればOK

mysql > GRANT REPLICATION SLAVE ON *.* TO replication@192.168.11.3 IDENTIFIED BY 'replipass';


■スレーブの設定
次にスレーブの設定。マスターと同じくmy.cnfを編集
vi /etc/my.cnf
---
server-id = 2
read_only
---

server-idはマスターと別のIDにしておく
read_onlyを付けてスレーブだから読み込みのみにしておく。

設定が終われば通常通り起動し、以下のコマンドを実行しマスターへの接続設定をする。

mysql > CHANGE MASTER TO MASTER_HOST='192.168.11.2',
MASTER_PORT=3306, MASTER_USER='replication',
MASTER_PASSWORD='replipass',
MASTER_LOG_FILE='replitest.000001';

内容は読んだまんま。
CHANGE MASTER TO MASTER_HOSTでマスターのIP指定
MASTER_PORTでポート指定。いじってないなら3306
MASTER_USERでユーザー指定。マスターで作ったユーザー名を設定
MASTER_PASSWORDでパスワード指定。同じくマスターで作ったユーザーのパスワードを設定
MASTER_LOG_FILEはマスターで作られたバイナリファイルを指定。(ここはさらに細かい指定が出来るけどひとまずこれで)

で、上のコマンドが問題なく通れば以下のコマンドでレプリケーションスタート
> START SLAVE;

マスターで更新系のクエリを実行してそれがスレーブにも反映されてれば成功。
出来てない場合はエラーログとか色々見るニダ。

いじょ  

2008年03月19日 Posted by のぶ at 15:22Comments(0)TrackBack(0)MySQL

ランダムソート

IRCで会話中にMySQLのソートをランダムに、とかってのがあったので調べてみた。
(いや、俺も知らんかったのよ。てかランダムにソートなんて中々使わないし)

意外と簡単、ってか超簡単ORDER BY にRAND()を指定するだけ
mysql > select id from hoge;
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
|  7 |
|  8 |
|  9 |
| 10 |
+----+
10 rows in set (0.00 sec)

mysql> select id from hoge order by rand();
+----+
| id |
+----+
|  2 |
|  8 |
|  9 |
|  7 |
| 10 |
|  1 |
|  3 |
|  5 |
|  6 |
|  4 |
+----+
10 rows in set (0.00 sec)


いじょ。

  

2008年03月11日 Posted by のぶ at 12:19Comments(0)TrackBack(0)MySQL

setup とiptables

OSの再インスト。
ここ数日で何回やってんだか…。

ひとまずOSのインストが終わってSELinux無効化して、Apacheインスト。
そして起動…。あ、あれ?アクセスできない。
アクセスログにもなにも残ってない。

ためしにlynx localhostしてみるとつながった。
…って事はファイアーウォール?インストールのときの設定で80番ポートは許可したはずだけど…。

調べてみると設定簡単そう。
# setup
このコマンド打つの。そしたらなんかCUIとGUIの中間のような中途半端な設定画面出現。

「あ、これ昔見たことある。」

って事でサクッっと設定。たしかにHTTPが許可されてなかった。


HTTPの設定も終わり、閉じようとしたその瞬間!!そこで目にしたものは!!!

「SELinux 無効▼」

!!!!!!!!!!!!!!!!!!!!!!!!!
ま、まさかここで無効にできたのか!!!
それを先にしっていればカーネルパニックなんかおこさずに・・・orz


もう全て遅すぎたよ。。。  

2008年03月04日 Posted by のぶ at 02:58Comments(0)TrackBack(0)

カーネルパニック

SELinuxがイミフすぎるので停止する事に。
とあるサイトで調べたとおり /etc/selinux/config 内の記述を変更して再起動。。。カーネルパニックorz

イミフ卓。。。CDからレスキューをこころみるも俺の知識がムリポorz
諦めて再インストする事に。。。俺のここ1週間の仕事が全部ぱー…。  

2008年03月04日 Posted by のぶ at 02:50Comments(0)TrackBack(0)

.vimrc

Linuxで使っているエディタvim。その設定。
細かい事はわからないけどこんな感じ。


set expandtab
set tabstop=2
set softtabstop=2
set shiftwidth=2
set autoindent
set number


set expandtab
がタブを空白に置き換えますよって奴。

tabstop
がすでにあるタブの文字数を指定。

softtabstop
tabを打ったときに挿入される空白数。

shiftwidth
「>>」とかを打ったときに挿入される空白数。

autoindent
改行したときに自動でインデント入れてくれる。

number
行番号を横に出してくれる。

その他よく使う便利コマンド
:vp // 縦割り
:sp // 横割り
:e ++enc=UTF-8 // 開いてるファイルのエンコード変更

って感じ。もっと細かく設定したほうが便利なんだろうけどまだ調べてない><  

2008年03月03日 Posted by のぶ at 11:48Comments(0)TrackBack(0) ┗vim

ZendFrameworkのインストール

今度の案件でZendFrameworkを使うことなったんでインストール。

ひとまず現在の最新版をダウンロードして展開
$ cd /usr/local/src
$ wget http://framework.zend.com/releases/ZendFramework-1.0.4/ZendFramework-1.0.4.tar.gz
$ tar xvfz ZendFramework-1.0.4.tar.gz
$ cd ZendFramework-1.0.4


展開した中身はこんなかんじ
INSTALL.txt
LICENSE.txt
NEWS.txt
README.txt
VERSION.txt
demos
library
tests


重要なのはlibrary内のZendディレクトリ。
こいつをインクルードディレクトリにコピー。
# cp -R ./library/Zend /usr/local/lib/php/


コピーしたライブラリへのパスをphp.iniのinclude_pathに追加。

ZendFrameworkではmod_rewriteを使うのでApacheのhttpd.confにmod_rewriteを追加。
ここはApacheインストール後のモジュール追加ですでに完了済みなので省略。

ZendFrameworkでは.htaccessを使うので、使えるようにhttpd.confを編集。

Apacheを再起動して完了!

追記:
どうやらバリデータでiconvを使ってるようなので、php.iniに忘れず書く↓
iconv.internal_encoding = UTF-8

  

2008年02月29日 Posted by のぶ at 21:32Comments(0)TrackBack(0) ┣ZendFramework

PHPのインストール

PHPのインストール。バージョンはphp-5.2.5

まずはダウンロードそして展開
$ cd /usr/local/src
$ wget http://jp.php.net/get/php-5.2.5.tar.gz/from/jp2.php.net/mirror
$ tar xvfz php-5.2.5.tar.gz
$ cd php-5.2.5



configureしてインストール。
configureオプションはまぁこんな感じで(正直このconfigureオプションなるもの苦手…)
$ ./configure \
--with-mysql=/usr/local/mysql \
--with-apxs2=/usr/local/apache2/bin/apxs \
--enable-track-vars \
--enable-mbstring \
--enable-mbregex \
--enable-cli \
--with-zlib \
--with-pdo-mysql=/usr/local/mysql

$ make
# make install
・・・(略)・・・
apxs:Error: Activation failed for custom /usr/local/apache2/conf/httpd.conf file..
apxs:Error: At least one `LoadModule' directive already has to exist..
make: *** [install-sapi] エラー 1

・・・っと、ここでエラー。
今までこんなとこでエラーなんて出た事ないんだが…。
英語読めないのはきつい><

調べてみるとhttpd.confにphpのモジュールをロードする設定が書かれてないから。と。
んなヴァカなと思いつつも先に
LoadModule php5_module modules/libphp5.so 

を書いてもっかいmake install。。。とおったorz

一応通ったのでhttpd.confにPHP用の設定を追記
# vi /usr/local/apache2/conf/httpd.conf
AddType application/x-httpd-php .php
DirectoryIndex index.html index.php


と、そこにはphp5_moduleが2つに。。
LoadModule php5_module modules/libphp5.so 
LoadModule php5_module modules/libphp5.so 

「やっぱおかしい」と思いつつも1つ削除しとく。

続いて、php.iniをコピー
# cp /usr/local/src/php-5.2.5/php.ini-dist /usr/local/lib/php.ini


php.iniの設定はここでは省略。また今度~。

いよいよApacheを再起動して完了!
# /usr/local/apache2/bin/apachectl restart
httpd: Syntax error on line 84 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp5.so into server: /usr/local/apache2/modules/libphp5.so: cannot restore segment prot after relc: Permission denied

またエラーorz
調べてみると、またまた出て来たSELinux...orzコイツァ・・・

だけど、解決方法もあったのでOK。↓のコマンド打つだけ。
# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t libphp5.so


そしてApache再起動。。。
よし。動いた!
あとはお決まりのinfo.phpをDocmentRootに作って確認して完了!

SELinuxにはやられまくりだな最近。。。  

2008年02月29日 Posted by のぶ at 20:54Comments(0)TrackBack(0)PHP

MySQLインストール

MySQLのインストール。バージョンは5.0.51a

ダウンロードは色々登録とかめんどくさいんで説明はぶく!

まずはMySQL用のユーザーを作成
# groupadd mysql
# useradd -g mysql -d /dev/null -s /dev/null -c 'MySQL Server' mysql


ファイル展開
$ tar xvfz mysql-5.0.51a.tar.gz
$ cd mysql-5.0.51a


コンパイルしてインストール
※コンパイルオプションに --without-server とか付けるとクライアントだけインストールできる。
$ ./configure \
--prefix=/usr/local/mysql \
--with-charset=utf8 \
--with-extra-charsets=all \
--with-mysql-user=mysql

$ make
# make install


データベースのデータ用ディレクトリを作る。
--datadirを指定してあげればどこでもいい。
mysql_install_dbでディレクトリ内をMySQLで使えるように初期化
そしてパーミッションを変更。
# cd /usr/local/mysql
# mkdir ./data
# ./bin/mysql_install_db --datadir=./data
# chown -R mysql:mysql ./data


設定ファイルをコピー。
my-medium.cnf以外にも色々あるのでサイトの規模によって調整。
今回は特にこだわらないのでmy-medium.cnf。
# cp /usr/local/src/mysql-5.0.51a/support-files/my-medium.cnf /etc/my.cnf


設定ファイルを修正
変更するのはこのあたり。大抵起動時のオプションとしても設定できたりするのは内緒。
こだわりたい人はもっとどうぞ。
# vi /etc/my.cnf
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
default-table-type = InnoDB
default-character-set = utf8


起動
& は重要。ないと泣ける。(そうでもないけどw)
# /usr/local/mysql/bin/mysqld_safe --user=mysql &

// ちなみに停止するときは↓
# /usr/local/mysql/bin/mysqladmin -u root -p shutdown


ログインできればOK。パスワードは設定されてないので設定する。
$ /usr/local/mysql/bin/mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.51a-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)

mysql> set password=password('任意のパスワード');


my.cnfの設定が有効かどうか確認するには↓のコマンドで見れる。
# mysqladmin variable


以上!  

2008年02月29日 Posted by のぶ at 20:14Comments(0)TrackBack(0)MySQL

Apacheのモジュール追加 mod_rewrite

Apacheにモジュールの追加。
今回はあとあと必要になるmod_rewriteをDSOを使って追加します。
Apacheは2.2系

まずはDSOが有効か確認。下記のコマンドでmod_so.cが表示されればOK。
$ /usr/local/apache2/bin/httpd -l
Compiled in modules:
core.c
・・・(略)・・・
mod_so.c


まぁ、前回のApacheインストールでDSOはインストールしてるんで問題なし。


いよいよモジュールの追加。
以下のコマンドでOK。簡単。
# cd /usr/local/src/httpd-2.2.8/modules/mappers/
# /usr/local/apache2/bin/apxs -ic mod_rewrite.c


あとはhttpd.confに以下を追加して再起動して完了!!
LoadModule rewrite_module modules/mod_rewrite.so


以上!!  

2008年02月29日 Posted by のぶ at 19:56Comments(0)TrackBack(0)Apache