さくらのVPSでLogwatchを設定、メール送信まで


 

さくらのVPSでログ監視ツールの「Logwatch」を設定した時の備忘録です。

Logwatchは、サーバのログを毎日解析して指定したメール宛に送信してくれる便利なツールです。

1.Logwatchのインストール

sudo yum install logwatch

2.ログ内容の確認

sudo logwatch --print

3.メール送信の確認

sudo logwatch --mailto hogehoge@hogehoge.com

4.メール送信の設定

sudo vim /etc/logwatch/conf/logwatch.conf
# Local configuration options go here (defaults are in /usr/share/logwatch/default.conf/logwatch.conf)
MailTo=hogehoge@hogehoge.com

これで、毎日朝にサーバログが解析されて送信されてきます。

 

参考にしたサイト

iPhoneアプリの実機テストの備忘録


 

iPhoneの実機転送の設定の個人的な備忘録

久しぶりにやったら、また色々なページを検索してやったることになったので、ど忘れした時の為の備忘録

 1.Provisioning Portalにログインする

Provisioning Portal」にアクセスしてログインする。

すると、以下のようなページが表示される。

2.証明書を作成する

  1. キーチェーンアクセスを起動する
  2. メニューの「キーチェーンアクセス」→「証明書アシスタント」→「認証局に証明書を要求」を選択して証明書アシスタントを開く
  3. ユーザーのメールアドレス、通称にメールアドレスと名前をそれぞれ入力する。
  4. 要求の処理、「ディスクに保存」を選択する
  5. 続けるを押下して作成されたファイルを保存する(CertificateSigningRequest.certSigningRequest)

3.Certificateを開いて証明書をアップロードする

  1. 「Request Certificate」を押下する

  1. ファイル選択ボタンを押下して、2.で作成した「CertificateSigningRequest.certSigningRequest」を選択し、Submitボタンを押下する

  1. 「Certificates」の画面に戻り登録された不ファイルが一覧で表示されるので、対象の証明書の右側にある「Download」ボタンを押下して、cerファイルをダウンロードする。「Download」でなく「Pending Issuance」表示されている場合は何度かリロードしてください。

  1. 下に表示されている「*If you do not have the WWDR intermediate certificate installed, click here to download now.」のリンクから「AppleWWDRCA.cer」ファイルをダウンロードする。

4.cerファイルをキーチェーンアクセスに登録する

  1. キーチェーンアクセスを起動して「ログイン」が選択されている事を確認する
  2. 3.でダウンロードした2つのcerファイルをドラッグアンドドロップして登録する。

5.Deviceを登録する

  1. Xcodeを開いてメニューの「Window」→「Organizer」を選択してオーガナイザーを起動する。
  2. 対象のiPhone端末を2本指でクリックし「Copy Device Identifier」を選び対象端末のIdentifierをクリップボードにコピーする
  3. Provisioniing Portalの「Devices」を開いて「Add Devices」を押下する

  1. 「Device Name」「Device ID」を入力する「Device ID」は、2.でコピーした内容を貼り付けsubmitボタンを押下する

6.App IDsを登録する

  1. Provisioning PortalのApp IDsを選択する

  1. 「New App ID」ボタンを押下する
  2. 「Description」「Bundle Seed ID」「Bundle Identifier」を入力し「submit」ボタンを押下する。

7.Provisioningの登録

  1. Provisioning PortalのProvisioningを押下する
  2. 「New Profile」を選択する

  1. 「Profile Name」「Certificates」「App ID」「Devices」を入力する。
    • Profile Name:分かりやすい名前を入力
    • Certificates:対象のCertificatesを選択する
    • App ID:6.で作成したApp IDを選択する
    • Devices:使用したいデバイスを選択する

  1. 一覧が表示されるので「Download」ボタンからmobileprovisionファイルをダウンロードする
  2. オーガナイザーのProvisiong Profileにダウンロードした「mobileprovision」を登録する

これで、実機に転送できるようになります。

さくらのVPSのCentOS6.2への環境構築


 

さくらのVPSでのOSでCentOS6.2が標準OSになったのでその時に行った設定をまとめる

iptablesの設定

sudo vim /etc/sysconfig/iptables

次の内容を記述する

*filter
:INPUT   ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT  ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH, HTTP, HTTPS, MySQL
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 433 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306  -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

iptablesを再起動する

sudo /etc/init.d/iptables start

ユーザーの作成

useradd [ユーザー名]
passwd [ユーザー名]

sudoの設定

visudo

次の行のコメントを外す

# %wheel ALL=(ALL)       ALL
  ↓
 %wheel ALL=(ALL)       ALL

次にgroupをユーザーに付与する

vigr

次の行にsudoを使用したい対象ユーザーをカンマ区切りで記述する

wheel:x:10:root
  ↓
wheel:x:10:root,[ユーザー名]

sshの設定

mkdir .ssh
chmod 700 .ssh
# scpで~/.ssh/auhtorized_keysをコピーする
chmod 600 .ssh/authorized_keys

sshd_configを編集

sudo vim /etc/ssh/sshd_config

以下のように修正して、パスワードでの認証を拒否する

PasswordAuthentication yes
  ↓ 以下のように「yes」から「no」に変更する
PasswordAuthentication no

sshdの再起動

sudo /etc/init.d/sshd restart

zshのインストール

sudo yum install zsh

ユーザーのログインシェルの変更

sudo chsh -s /bin/zsh [ユーザー名]

screenのインストール

sudo yum install screen

yumの設定

yum-prioritiesのインストール

sudo yum -y install yum-priorities

次に、CentOS-Base.repoにprioritiesの設定をする

sudo vim /etc/yum.repos.d/CentOS-Base.repo

開いたファイルの[base][updates][extras]に以下の設定を追加する

priority=1

RPMforgeリポジトリインストール

sudo rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
sudo rpm -ivh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
sudo vim /etc/yum.repos.d/rpmforge.repo

rpmforge.repoの編集

sudo vim /etc/yum.repos.d/rpmforge.repo

rpmforge.repoの[rpmforge]に以下の内容を追加

enabled=1
priority=1

epelリポジトリのインストール

sudo rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm
sudo rpm -ivh epel-release-6-5.noarch.rpm
sudo vim /etc/yum.repos.d/epel.repo

epel.repoの編集

sudo vim /etc/yum.repos.d/epel.repo

epel.repoの[epel]を以下の内容で編集

enabled=1
priority=1

remiリポジトリのインストール

sudo rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
sudo rpm -ivh http://rpms.famillecollet.com/enterprise/6/remi/x86_64/remi-release-6-1.el6.remi.noarch.rpm
sudo vim /etc/yum.repos.d/remi.repo

remi.repoの[remi][remi-test]を以下の内容で編集

enabled=1
priority=1

memcachedのインストール

sudo yum install memcached

MySQLのインストール

sudo yum install --enablerepo=remi mysql.x86_64 mysql-server.x86_64

MySQLの設定

sudo vim /etc/my.cnf

以下の設定を記述する

[mysqld]

 〜 途中略 〜

character-set-server=utf8
skip-character-set-client-handshake

 〜 途中略 〜

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

データベースの作成

sudo mysql_install_db

mysqlを起動

sudo /etc/init.d/mysqld start

rootパスワードの設定

/usr/bin/mysqladmin -u root password '新しいパスワード'

PHPのインストール

sudo yum install --enablerepo=remi,remi-test php.x86_64 php-devel.x86_64 php-bcmath.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 php-fpm.x86_64 php-imap.x86_64 php-mbstring.x86_64 php-mcrypt.x86_64 php-mysql.x86_64 php-pdo.x86_64 php-soap.x86_64 php-snmp.x86_64 php-xml.x86_64 php-xmlrpc.x86_64
sudo yum install --enablerepo=remi,remi-test php-pecl-apc.x86_64 php-pecl-memcached.x86_64 php-pecl-http.x86_64

nginxのインストール

wget http://nginx.org/download/nginx-1.1.19.tar.gz
tar zxvf nginx-1.0.15.tar.gz
wget http://labs.frickle.com/files/ngx_cache_purge-1.5.tar.gz
tar zxvf ngx_cache_purge-1.5.tar.gz
cd nginx-1.1.19/
sudo yum install libxslt-devel.x86_64 gd-devel.x86_64 geoip-devel.x86_64 pcre-devel.x86_64 openssl-devel.x86_64
sudo groupadd -g 700 www-data
sudo useradd -s /sbin/nologin -M -g www-data -u 700 -d /var/www www-data
./configure --user=www-data --group=www-data --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module --prefix=/opt/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --http-log-path=/var/log/nginx/access.log --add-module=../ngx_cache_purge-1.5
make
sudo make install

nginxの起動スクリプトの設定

sudo vim /etc/init.d/nginx

以下の内容を記述する

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest_q || configtest || return 6
    stop
    start
}

reload() {
    configtest_q || configtest || return 6
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    echo
}

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}

configtest_q() {
    configtest >/dev/null 2>&1
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

# Upgrade the binary with no downtime.
upgrade() {
    local pidfile="/var/run/${prog}.pid"
    local oldbin_pidfile="${pidfile}.oldbin"

    configtest_q || configtest || return 6
    echo -n $"Staring new master $prog: "
    killproc $nginx -USR2
    retval=$?
    echo
    sleep 1
    if [[ -f ${oldbin_pidfile} && -f ${pidfile} ]];  then
        echo -n $"Graceful shutdown of old $prog: "
        killproc -p ${oldbin_pidfile} -QUIT
        retval=$?
        echo
        return 0
    else
        echo $"Something bad happened, manual intervention required, maybe restart?"
        return 1
    fi
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    force-reload|upgrade)
        rh_status_q || exit 7
        upgrade
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    status|status_q)
        rh_$1
        ;;
    condrestart|try-restart)
        rh_status_q || exit 7
        restart
        ;;
    *)
        echo $"Usage: $0 {start|stop|reload|configtest|status|force-reload|upgrade|restart}"
        exit 2
esac

起動スクリプトの権限を変更する

sudo chmod 755 /etc/init.d/nginx

php-fpmの設定

php-fpmの起動ユーザーをnginxで指定したユーザーと合わせる

sudo vim /etc/php-fpm.d/www.conf
user = www-data
group = www-data

sessionのフォルダのグループを変更する

sudo chgrp www-data /var/lib/php/session

nginxの設定変更(以下の記述を追加)

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /opt/nginx/html/$fastcgi_script_name;
    include        fastcgi_params;
}

nginxの再起動

sudo /etc/init.d/nginx restart

php-fpmの起動

sudo /etc/init.d/php-fpm restart

info.phpを書いて動作確認

vim info.php
<? phpinfo();

自動起動設定

sudo chkconfig iptables on
sudo chkconfig nginx on
sudo chkconfig php-fpm on
sudo chkconfig memcached on
sudo chkconfig mysqld on
sudo chkconfig postfix on

これでCentOS6.2にnginx + mysql + phpの環境ができました。

さくらのVPSへのiptablesの設定


 

さくらのVPSにiptablesを設定した時の覚書です。

参考にしたサイトはこちら

こちらのファイルを編集

sudo vim /etc/sysconfig/iptables

で実際の設定は、

*filter
:INPUT   ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT  ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT  
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH, HTTP, HTTPS, MySQL
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 433 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT   
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306  -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

で、iptablesを再起動

sudo /etc/init.d/iptables restart

もし、こんな風にエラーが出たら、

iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]
iptables: モジュールを取り外し中:                          [  OK  ]
iptables: ファイアウォールルールを適用中: iptables-restore v1.4.7: no command specified
Error occurred at line: 6
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
                                                           [失敗]

対策

  1. 何も書いてない行にスペースがないか?

を確認して下さい。

必要なポート番号は、iptablesに適時追加して対応です。

これでとりあえずよし。

[ruby] rvmをmacにinstallする方法


 

macにrvmをインストールする方法

rvmをインストール

ここを参考にrvmをインストール

curl -L get.rvm.io | bash -s stable

 rvmを最新更新する

rvm get head
rvm get latest

 ruby 1.9.3をインストール

rvm install 1.9.3

ruby 1.9.2をインストールする

rvm install 1.9.2

エラーが表示されて、以下のコマンド打てと言われた

$ rvm requirements

  Notes for Mac OS X 10.7.3, Xcode 4.3.2.

For MacRuby: Install LLVM first.

For JRuby:  Install the JDK. See http://developer.apple.com/java/download/  # Current Java version "1.6.0_26"
For IronRuby: Install Mono >= 2.6
For Ruby 1.9.3: Install libksba # If using Homebrew, 'brew install libksba'

You can use & download osx-gcc-installer: https://github.com/kennethreitz/osx-gcc-installer
** NOTE: Currently, Node.js is having issues building with osx-gcc-installer. The only fix is to install Xcode over osx-gcc-installer.

We had reports of http://hpc.sourceforge.net/ making things work, but it looks like not easiest/safest to setup.

To use an RVM installed Ruby as default, instead of the system ruby:

    rvm install 1.8.7 # installs patch 357: closest supported version
    rvm system ; rvm gemset export system.gems ; rvm 1.8.7 ; rvm gemset import system.gems # migrate your gems
    rvm alias create default 1.8.7

And reopen your terminal windows.

Xcode 4.2:
 * is only supported by ruby 1.9.3+
 * it breaks gems with native extensions, especially DB drivers.

Xcode 4.3+ users
- please be warned
- only ruby-1.9.3-p125+ is partially supported
- in case of any compilation issues:
 * downgrade to Xcode 4.1
 * uninstall Xcode and install osx-gcc-installer
and reinstall your rubies.

うーん・・・

どうやら、「Xcode 4.1」をインストールしないといけないらしいので、

どうやら「Xcode 4.3」と「Xcode 4.1」同居出来るみたいなので

  • https://developer.apple.com/downloads/index.action

ここからXcode4.1をダウンロードしてインストールしました。

もし、Xcode4.2がインストールされている場合は、以下のコマンドアンイストールしてからインストールします。

$ sudo /Developer/Library/uninstall-devtools --mode=all

ん?「libksba」をインストールしろと書いてあるので、インストールと念の為1.9.3の再インストール、1.9.2のインストール

/usr/bin/ruby -e "$(/usr/bin/curl -fksSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"
brew install libksba
rvm reinstall 1.9.3
rvm install 1.9.2

 railsのインストール

ruby1.9.3にrails 3.2.3をインストール

rvm use 1.9.3
rvm gemset create rails323
rvm gemset use tails323
gem install rails -v 3.2.3

ruby1.9.3にrails 3.2.2をインストール

rvm use 1.9.3
rvm gemset create rails322
rvm gemset use tails322
gem install rails -v 3.2.2

ruby1.9.2にrails 3.2.3をインストール

rvm use 1.9.2
rvm gemset create rails323
rvm gemset use tails323
gem install rails -v 3.2.3

ruby1.9.2にrails 3.2.2をインストール

rvm use 1.9.2
rvm gemset create rails322
rvm gemset use tails322
gem install rails -v 3.2.2

これで、

「ruby 1.9.3〜ruby 1.9.2」

「rails 3.2.2〜3.2.3」

のバージョンでのインストールが完了!

return top