Category Archives: Server

Webレスポンス測定ツールhttp_loadをインストール、設定する方法

概要:
http_loadはwebサーバのベンチマークツールです。apache付属のabとは違い、複数のURLに対して同時にアクセスできる。
1.http_loadをダウンロード
URL:
http://acme.com/software/http_load/
cd /root
wget http://acme.com/software/http_load/http_load-12mar2006.tar.gz
tar xzf http_load-12mar2006.tar.gz

2.http_loadをインストール
cd http_load-12mar2006
make

3.http_loadの使い方
root@www:~/http_load-12mar2006
# ./http_load –help
usage: ./http_load [-checksum] [-throttle] [-proxy host:port] [-verbose] [-timeout secs] [-sip sip_file]
-parallel N | -rate N [-jitter]
-fetches N | -seconds N
url_file
One start specifier, either -parallel or -rate, is required.
One end specifier, either -fetches or -seconds, is required.

4.http_loadのパラメータ説明
-parallel : 同時接続数の指定
-rate: 毎秒ごとの新しい接続数の指定
-fetches:接続する合計回数
-seconds:接続する秒数

5.検証テスト

パラメータを選択するとき、-parallelとrateの中に一つを指定、-fetchesと-secondsの中に一つを指定
5.1 http_load -parallel 50 -s 10 urls.txt
説明:同時に50プロセスを使用して、ランダムurls.txtのURLリストにアクセス、合計10秒です

5.2 http_load -rate 50 -f 5000 urls.txt
説明:秒あたり50回リクエスト、合計5000回まで停止
 

CentOSでrsync3.1.1(remote synchronize)をインストール、設定方法

1.システム要件:
バージョン:3.1.1
ダウンロードURL:
http://www.samba.org/ftp/rsync/

2.rsyncをダウンロードしてインストール
# cd /usr/local/src/tarbag/ //ダウンロードディレクトリを切り替える

# wget http://www.samba.org/ftp/rsync/rsync-3.1.1.tar.gz //wgetでファイルをダウンロード

# tar –xzvf rsync-3.1.1.tar.gz –C ../software/ //指定されたディレクトリにtarパッケージを解凍

# cd /usr/local/src/software/ rsync-3.1.1/ //解凍ディレクトリに切り替える

# ./configure –prefix=/usr/local/rsync –disable-ipv6 //設定

# make && make install //コンパイルとインストール

3.サーバー側の設定

# vi rsyncd.conf

log file = /usr/local/rsync/var/rsyncd.log //ログファイル

pid file = /usr/local/rsync/var/rsyncd.pid //pidファイルパス

lock file = /usr/local/rsync/var/rsyncd.lock //ロックファイルを指定

secrets file = /usr/local/rsync/etc/rsyncd.pas //ユーザーパスワードを指定

motd file = /usr/local/rsync/etc/rsyncd.motd //ウェルカムメッセージファイルを指定

read only = yes // 読み取り専用(クライアントからサーバーに同期される場合NOを設定)

hosts allow = 192.168.0.0/16,192.168.1.0/24 //許可されたIPセグメント

list = yes //リストを許可

uid = nobody //ユーザーとして起動

gid = nobody //ユーザーグループとして起動

use chroot = no

max connections = 4 //接続の最大数

[bak] //モジュール

path = /bak //モジュールディレクトリ

comment = www bak //記述情報、任意記入することができる

auth users = bak //認証されたユーザー

# vi rsyncd.pas //:で分離

bak:startnews24_989

(保存して終了)

# chmod 600 rsyncd.pas //パーミッションは600を設定

# vi rsyncd.motd //ウェルカムメッセージを設定

welcome to rsync 161

# rsync –daemon –config=/usr/local/rsync/etc/rsyncd.conf
4.クライアント側の設定
# vi /etc/rsyncd.pas

startnews24_989

#chmod 600 /etc/rsyncd.pas //パーミッション600

# rsync -avH –progress –delete –password-file=/etc/rsyncd.pas /ftpdata/client/ root@192.168.40.121::bak
5.説明
–delete:bakモジュールの存在しないクライアントファイルを削除

–password-file:サーバー側と一致するパスワードファイル

/ftpdata/client/:ソースディレクトリを同期

root@192.168.40.121::bak:目標モジュールを同期

機能:

ローカルディレクトリ「/ftpdata/client/」の全てファイルを「192.168.40.121」サーバのbakモジュールディレクトリにコピーする

6.同期方法:

Rsync –avH /usr/local/src 192.168.0.2:/backup/test_startnews24/ //全体srcディレクトリをtest_startnews24に同期

Rsync –avH /usr/local/src/ 192.168.0.2:/backup/test_startnews24/ //srcディレクトリの全てファイルをtest_startnews24に同期

CentOS 5.6環境でLAMP(PHP、MySQL、Apache)を構築する手順

1.最新版ライブラリとパッケージを確認
yum check-update
yum update

2.Apacheのインストール
yum install httpd
chkconfig -add httpd
service httpd start

3.MySQLのインストール
3.1 インストール手順
yum install mysql-server
chkconfig –add mysqld
service mysqld restart
mysql_secure_installation
Remove anonymous users?[Y/n]  Y
Disallow root login remotely?[Y/n] Y
Disallow root login remotely?[Y/n] Y
Reload privilege tables now?[Y/n] Y

3.2 データベースのデフォルトキャラクタセットがUTF8を設定
vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
default-character-set = utf8
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so,uncomment this line:
# symbolic-links=0

[mysql]
default-character-set = utf8

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

起動:/etc/rc.d/init.d/mysqld start

4.PHPのインストール
PHP5.1をインストール
yum install php php-mysql

PHP5.3をインストール
yum install php53 php53-mysql
5.ファイアウォールを操作
#/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT
#/sbin/iptables -I INPUT -p tcp –dport 22 -j ACCEPT
#/etc/rc.d/init.d/iptables save

FileZilla Client 3.9.0.2 をダウンロード

ダウンロード:
提供元サイトからダウンロード
cnetサイトからダウンロード
softpediaサイトからダウンロード

更新内容:

  • MSW: Updated installer to fix an issue with re-registring the shell extension after a reboot on 32bit system if a another program keeps the extension locked
  • Closing FileZilla during a recursive operation no longer hangs
  • OS X: Manually handle CMD+V and CMD+A for password fields as Cocoa cannot seem to do it by itself
  • OS X: Manually handle CMD+X, CMD+C, CMD+V and CMD+A in the path combo boxes
  • OS X: Creating new tabs selects the newly created tab again
  • Detect some types TLS error conditions earlier instead of waiting for a timeout
  • Small performance imprvement for TLS handshakes
  • Do not show error message if “Create and enter” is used with synchronized browsing enabled

Javaでwebサーバーの名前(tomcat、jetty、jboss、glassish、jonas、weblogic、websphere)を取得するプログラム

package com.arkgame.combine.server;
import com.arkgame.combine.StringEx;
import com.arkgame.combine.sys.ClassUtil;
//クラスServerDetector
public class ServerDetector {

public static final String TOMCAT_ID = “tomcat”;
public static final String JETTY_ID = “jetty”;
public static final String JBOSS_ID = “jboss”;
public static final String GLASSFISH_ID = “glassfish”;
public static final String GERONIMO_ID = “geronimo”;
public static final String JONAS_ID = “jonas”;
public static final String OC4J_ID = “oc4j”;
public static final String RESIN_ID = “resin”;
public static final String WEBLOGIC_ID = “weblogic”;
public static final String WEBSPHERE_ID = “websphere”;
private static String _serverId;
private static int _geronimo = -1;
private static int _glassfish = -1;
private static int _jBoss = -1;
private static int _jetty = -1;
private static int _jonas = -1;
private static int _oc4j = -1;
private static int _resin = -1;
private static int _tomcat = -1;
private static int _webLogic = -1;
private static int _webSphere = -1;
static {
if (isTomcat()) {
_serverId = TOMCAT_ID;
} else if (isJetty()) {
_serverId = JETTY_ID;
} else if (isJBoss()) {
_serverId = JBOSS_ID;
} else if (isGlassfish()) {
_serverId = GLASSFISH_ID;
} else if (isResin()) {
_serverId = RESIN_ID;
} else if (isWebLogic()) {
_serverId = WEBLOGIC_ID;
} else if (isWebSphere()) {
_serverId = WEBSPHERE_ID;
} else if (isOC4J()) {
_serverId = OC4J_ID;
} else if (isGeronimo()) {
_serverId = GERONIMO_ID;
} else if (isJOnAS()) {
_serverId = JONAS_ID;
} else {
throw new RuntimeException(“Server is not supported”);
}
}

public static String getServerId() {
return _serverId;
}
public static boolean isGeronimo() {
if (-1 == _geronimo) {
_geronimo = ClassUtil.detectResource(“/org/apache/geronimo/system/main/Daemon.class”) ? 1 : 0;
}
return 1 == _geronimo;
}
public static boolean isGlassfish() {
if (-1 == _glassfish) {
_glassfish = !StringEx.isNullOrEmpty(System.getProperty(“com.sun.aas.instanceRoot”)) ? 1 : 0;
}
return 1 == _glassfish;
}
public static String getClassfishVersion() {
if (!isGlassfish()) {
return null;
}
String value = System.getProperty(“product.name”).trim();
//”GlassFish/v3″
if (!StringEx.isNullOrEmpty(value)) {
return value.replace(“GlassFish/”, “”);
}
return null;
}
public static boolean isJBoss() {
if (-1 == _jBoss) {
_jBoss = ClassUtil.detectResource(“/org/jboss/Main.class”) ? 1 : 0;
}
return 1 == _jBoss;
}
public static boolean isJetty() {
if (-1 == _jetty) {
_jetty = ClassUtil.detectResource(“/org/mortbay/jetty/Server.class”) ? 1 : 0;
}
return 1 == _jetty;
}
public static boolean isJOnAS() {
if (-1 == _jonas) {
_jonas = ClassUtil.detectResource(“/org/objectweb/jonas/server/Server.class”) ? 1 : 0;
}
return 1 == _jonas;
}
public static boolean isOC4J() {
if (-1 == _oc4j) {
_oc4j = ClassUtil.detectClass(“oracle.oc4j.util.ClassUtils”) ? 1 : 0;
}
return 1 == _oc4j;
}
public static boolean isResin() {
if (-1 == _resin) {
_resin = ClassUtil.detectResource(“/com/caucho/server/resin/Resin.class”) ? 1 : 0;
}
return 1 == _resin;
}
public static boolean isTomcat() {
if (-1 == _tomcat) {
_tomcat = ClassUtil.detectResource(“/org/apache/catalina/startup/Bootstrap.class”)
|| ClassUtil.detectResource(“/org/apache/catalina/startup/Embedded.class”)
? 1 : 0;
}
return 1 == _tomcat;
}
public static boolean isWebLogic() {
if (-1 == _webLogic) {
_webLogic = ClassUtil.detectResource(“/weblogic/Server.class”) ? 1 : 0;
}
return 1 == _webLogic;
}
public static boolean isWebSphere() {
if (-1 == _webSphere) {
_webSphere = ClassUtil.detectResource(“/com/ibm/websphere/product/VersionInfo.class”) ? 1 : 0;
}
return 1 == _webSphere;
}
}
//クラスClassUtil

package com.arkgame.combine.sys;
public class ClassUtil {
/**
* クラスが存在するかどうかを確認
* @param className クラス名前
* @return
*/
public static boolean detectClass(String className) {
try {
ClassLoader.getSystemClassLoader().loadClass(className);
return true;
} catch (ClassNotFoundException cnfe) {
return false;
}
}
public static boolean detectResource(String fullName) {
return ClassUtil.class.getResource(fullName) != null;
}
}

//クラスStringEx
.package com.arkgame.combine;

public class StringEx{

public static boolean isNullOrEmpty(String str) {

return (null == str) || (str.equals(“”));

}

}

LinuxにJDK7、Tomcat7ソースパッケージをインストール、設定

1.システム要件:
Java7
tomcat7

2.インストール手順:
ダウンロード:
http://www.oracle.com/technetwork/java/javase/downloads/index.html

2.1 jdkをインストール
tar zxvf jre-7u5-linux-i586.tar.gz -C ../software/
cd ../software
cp -rp jre1.7.0_05/ /usr/local/
vi /etc/profile

次の内容を追加
JAVA_HOME=/usr/local/jre1.7.0_05/
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
. /etc/profile

2.2 Javaが正常にインストールされるかどうかテスト
chown -R root\: /usr/local/jre1.7.0_05/
java -version
java version “1.7.0_05″
Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
Java HotSpot(TM) Client VM (build 23.1-b03, mixed mode)

3.Tomcatをインストール

3.1 tomcat7をインストール
ダウンロード:
http://tomcat.apache.com/

cd /usr/local/src/tarbag
tar zxvf apache-tomcat-7.0.28.tar.gz -C ../software/
cd ../software
cp -rp apache-tomcat-7.0.28/ /usr/local/
cd /usr/local/apache-tomcat-7.0.28/

3.2 環境変数を設定
vi /etc/profile
CATALINA_HOME=/usr/local/apache-tomcat-7.0.28/
PATH=$JAVA_HOME/bin:/usr/local/apache-tomcat-7.0.28/bin/:$PATH
. /etc/profile

3.3 サービスが起動
/usr/local/apache-tomcat-7.0.28/bin/catalina.sh start
または
/usr/local/apache-tomcat-7.0.28/bin/startup.sh

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:759 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN
tcp 0 0 :::8009 :::* LISTEN
tcp 0 0 :::8080 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN

curl http://192.168.1.105:8080

3.3 サービスが停止
/usr/local/apache-tomcat-7.0.28/bin/catalina.sh stop
または
/usr/local/apache-tomcat-7.0.28/bin/shutdown.sh

オープンソースログ管理ツールLogstashログシステム環境を構築する手順

1.システム要件:
次のモジュールが必要
Logstash
Elasticsearch
Redis
Nginx
Kibana

サーバー側:
fqdn: dev.kanbier.lan (should be resolvable!)
ip: 10.37.129.8

ダウンロードURL:
http://logstash.net/

2.必要なモジュールをインストール
2.1 elasticsearch redis nginx logstashのインストール
$ vi /etc/yum.repos.d/logstash.repo
[logstash-1.4]
name=logstash repository for 1.4.x packages
baseurl=http://packages.elasticsearch.org/logstash/1.4/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1

$ vi /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-1.0]
name=Elasticsearch repository for 1.0.x packages
baseurl=http://packages.elasticsearch.org/elasticsearch/1.0/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1

$ vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

$ rpm -Uvh http://mirror.1000mbps.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm

$ yum -y install elasticsearch redis nginx logstash

2.2 Kibanaのダウンロード、設定
$ wget https://download.elasticsearch.org/kibana/kibana/kibana-3.0.0.tar.gz
$ tar -xvzf kibana-3.0.0.tar.gz
$ mv kibana-3.0.0 /usr/share/kibana3
$ vi /usr/share/kibana3/config.js
elasticsearch: “http://dev.kanbier.lan:9200”,
default_route : ‘/dashboard/file/logstash.json’,

webページにアクセス:
$ wget https://raw.github.com/elasticsearch/kibana/master/sample/nginx.conf
$ mv nginx.conf /etc/nginx/conf.d/
$ vi /etc/nginx/conf.d/nginx.conf
server_name dev.kanbier.lan;
2.3 redisを設定
$ vi /etc/redis.conf
bind 10.37.129.8

2.4 Logstashを設定
操作手順:
/var/logディレクトリにファイルを読み書き
5544ポートを開放
logstash-complex.confを編集
$ vi /etc/logstash/conf.d/logstash-complex.conf
input {
file {
type => “syslog”

# Wildcards work, here <img src=”http://www.denniskanbier.nl/blog/wp-includes/images/smilies/icon_smile.gif” alt=”:)” class=”wp-smiley”>
path => [ “/var/log/*.log”, “/var/log/messages”, “/var/log/syslog” ]
sincedb_path => “/opt/logstash/sincedb-access”
}
redis {
host => “10.37.129.8”
type => “redis-input”
data_type => “list”
key => “logstash”
}
syslog {
type => “syslog”
port => “5544”
}
}

filter {
grok {
type => “syslog”
match => [ “message”, “%{SYSLOGBASE2}” ]
add_tag => [ “syslog”, “grokked” ]
}
}

output {
elasticsearch { host => “dev.kanbier.lan” }
}

サービスが起動
$ service redis start; chkconfig redis on
$ service elasticsearch start; chkconfig –add elasticsearch; chkconfig elasticsearch on
$ service logstash start; chkconfig logstash on
$ service nginx start; chkconfig nginx on
「/etc/rsyslog.conf」を編集
# ### begin forwarding rule ###
# The statement between the begin … end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
$WorkDirectory /var/lib/rsyslog
# where to place spool files
$ActionQueueFileName fwdRule1
# unique name prefix for spool files
$ActionQueueMaxDiskSpace 1g
# 1gb space limit (use as much as possible)
$ActionQueueSaveOnShutdown on
# save messages to disk on shutdown
$ActionQueueType LinkedList
# run asynchronously
$ActionResumeRetryCount -1
# infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
*.* @@10.37.129.8:5544

3.ファイアウォールのポートを開放
port 80 (for the web interface)
port 5544 (to receive remote syslog messages)
port 6379 (for the redis broker)
port 9200 (so the web interface can access elasticsearch)

参考URL:

http://www.denniskanbier.nl/blog/logging/installing-logstash-on-rhel-and-centos-6/

Apache mod_expiresで静的ファイルをキャッシュしてサーバー負荷を削減する方法

設定方法
1.apacheの構成ファイルhttpd.confを編集
#LoadModule expires_module modules/mod_expires.so  //#を削除

2.設定内容を追加

ExpiresActive on #キャッシュ8日

ExpiresBytype text/css “access plus 8 days

ExpiresByType application/x-javascript “access plus 8 days ”

ExpiresByType image/jpeg “access plus 8 days ”

Expiresbytype image/gif “access plus 8 days ”

3.apacheが再起動

説明:
クライアント側に静的ファイルをキャッシュして、サーバーの応答速度を向上させる。
帯域幅を減らして、サーバーの負荷を削減する

Apacheでネットワークのクローラー(Crawler)を拒否する方法

設定内容:
<Location />
SetEnvIfNoCase User-Agent “spider” bad_bot
BrowserMatchNoCase bingbot bad_bot
BrowserMatchNoCase Googlebot bad_bot
Order Deny,Allow
Deny from  XXXX
Deny from env=bad_bot
</Location>
SetEnvIfNoCase User-Agent “spider” bad_bot

 

 

「nginxの学習」CodeIgniter NGINX Rewriteルールを設定する方法

1.CodeIgniter nginx Rewriteコード:
server {
listen 80;
server_name arkgame.com www.arkgame.com;
root /data/site/www.arkgame.com;
index index.php;
error_log log/error.log;
# set expiration of assets to MAX for caching
location ~* .(ico|css|js|gif|jpe?g|png)(?[0-9]+)?$ {
expires max;
log_not_found off;
}
# main codeigniter rewrite rule
location / {
try_files $uri $uri/ /index.php;
}
# php parsing
location ~ .php$ {
root /data/site/arkgame.com/;
try_files $uri =404;
fastcgi_pass unix:/tmp/php5-fpm.sock;
# 相応FastCGIを変更
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
}
2.CodeIgiterの設定ファイルconfig.phpを変更
$config[‘base_url’] = “http://www.arkgame.com/”;
$config[‘index_page’] = “”;
$config[‘uri_protocol’] = “REQUEST_URI”;