:::: MENU ::::
Posts tagged with: Fedora

APCからZend OPcacheへ変更

Scientific Linux(sl6)で運営しているこちらのサイトで、APCをやめて、Zend OPcacheへ変更してみた。

現状の環境は、

Scientific Linux: 6.4
PHP: 5.4.19 (php-fpm)
nginx: 1.4.2
APC

Zend OPcache導入

redhat系のsl6,CentOS,Fedoraではパッケージが用意されていないようなので、githubからソースプログラムを引っ張って、コンパイル・ダウンロードする。

その前に、php-deveが必要なので、php-develをインストールしておく。

# yum install php-devel --enablerepo=remi

githubからインストールまでの作業

$ sudo yum install php-devel --enablerepo=remi

$ git clone https://github.com/zend-dev/ZendOptimizerPlus.git
$ cd ZendOptimizerPlus
$ phpize
$ ./configure --with-php-config=/usr/bin/php-config
$ make
$ make test
$ sudo make install

make installで、/usr/lib64/php/modules/opcache.soがインストールされるので、これをphp.iniで読み込む

php.iniに下記を追記

/usr/lib64/php/modules/opcache.so

APCが読み込まれているので、これを無効にする。

# cd  /etc/php.d/
# mv apc.ini apc.ini.bak

nginx再起動し、確認

# /sbin/service nginx restart
# php -v
PHP 5.4.19 (cli) (built: Aug 22 2013 08:03:53)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
  with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies

with Zend OPcacheが表示されればOK。


treeを使わずにfindでディレクトリツリーリスト表示

Linuxでは、treeコマンドを利用すると、ディレクトリ内のツリー構造を表示させることが出来ますが、標準コマンドではないので、標準コマンドのFindを使って表示させてみます。

$ find . -type d | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"
.
|-dir1
|-dir2
|-dir3

 

ちなみに、treeだとこんな感じ

$ tree -d
.
├── dir1
├── dir2
└── dir3

treeの方が、深い階層の場合にインデントしてくれたり、ファイルを表示してくれたりして便利ですが、treeがない環境の時にfindによる表示方法も覚えておくと良いかもしれません。

ちなみに、treeは、yumやapt-getで簡単にインストールできますね。


コマンドライン(cui,fdisk)でHDD追加

今更感があるが、Linuxで稼働中のサーバにHDDを追加する場合が、たまにあるのでメモっておく。

追加のHDDは、既に物理的に接続されているものとする。

HDDを確認


# fdisk -l
….
ディスク /dev/sdb: 53.7 GB, 53687091200 バイト
ヘッド 64, セクタ 32, シリンダ 51200
Units = シリンダ数 of 2048 * 512 = 1048576 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0xa128e904

/dev/sdbのHDDが追加されたのを確認し、

領域作成


# fdisk /dev/sdb
コマンド (m でヘルプ): 1
コマンドの動作
a ブート可能フラグをつける
b bsd ディスクラベルを編集する
c dos 互換フラグをつける
d 領域を削除する
l 既知の領域タイプをリスト表示する
m このメニューを表示する
n 新たに領域を作成する
o 新たに空の DOS 領域テーブルを作成する
p 領域テーブルを表示する
q 変更を保存せずに終了する
s 空の Sun ディスクラベルを作成する
t 領域のシステム ID を変更する
u 表示/項目ユニットを変更する
v 領域テーブルを照合する
w テーブルをディスクに書き込み、終了する
x 特別な機能 (エキスパート専用)

コマンド (m でヘルプ): t

領域が定義されていません

コマンド (m でヘルプ): n

コマンドアクション
e 拡張
p 基本パーティション (1-4)
p
パーティション番号 (1-4): 1
最初 シリンダ (1-51200, 初期値 1):
初期値 1 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-51200, 初期値 51200):
初期値 51200 を使います

 

マンド (m でヘルプ): t
選択した領域 1
16進数コード (L コマンドでコードリスト表示): L

0 空 24 NEC DOS 81 Minix / 古い bf Solaris
1 FAT12 39 Plan 9 82 Linux スワッ c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 OS/2 隠し C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 41 PPC PReP Boot 85 Linux 拡張領 c7 Syrinx
…..
16進数コード (L コマンドでコードリスト表示): 83

マンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

フォーマット

# mkfs.ext4 /dev/sdb1

マウントしてみる (/optへマウント)


# mount /dev/sdb1 /opt
# df
/dev/sdb1 51606124 184136 48800552 1% /opt

恒久的にマウント

/etc/fstabへ追記

# vi /etc/fstab
…
/dev/sdb1 /opt ext4 defaults 1 2

fstabの書式に問題ないか、確認

# mount -a
# df

RedHat系のOSで、不要になったパッケージを削除

package-cleanupと言うコマンドを利用するが、デフォルトで入ってない場合がある。
入ってない場合は、下記でインストール

# yum install yum-utils

不要なパッケージを探す

# package-cleanup --leaves
Setting up yum
libyaml-0.1.4-1.el5.rf.i386

不要なパッケージを削除

# yum remove libyaml-0.1.4-1.el5.rf.i386

メモリ開放スクリプトをCronで実行

Linuxでも物理メモリが段々圧迫されて、未使用領域が少なくなってきます。
それほど、気にする必要はないのですが、知ってしまうと気になってしまうんですよね。

って事で、「CentOS 5で「空きメモリ」を増やす方法」のページを参考に、シェルスクリプトを借用させて頂きました。

date;
echo "total/used/free/shared/buffers/cached";
echo "before";
free -m|grep Mem:;
sync;
echo 3 > /proc/sys/vm/drop_caches;
echo 0 > /proc/sys/vm/drop_caches;
echo "after";
free -m|grep Mem:;

このスクリプトに、実行権限を与えて、/etc/cron.daily/に放り込むだけ。

但し、一度、手動でスクリプトを実行させ、問題ないことを確認した方が良いでしょう。

私の環境では、下記のようにメモリが開放されました。

            total used free shared buffers cached
before
Mem: 64396 52907 11489 0 695 49146
after
Mem: 64396 1791 62605 0 0 34

ちなみに、このスクリプトは、CentOS,Redhat,Ubuntu,Fedoraでも汎用性があるようです。

詳しくは、「減り続けるメモリ残量! 果たしてその原因は!?」をご覧頂ければと思います。