以下にしか書かれていない手順もありますが、
現在はこちら https://github.com/kitoku-magic/infra のauto_installに移行しましたので、
以下は旧手順になります。
このページは、Linuxでの様々な環境を構築する際の手順書です。
公開環境に構築するのか否かや、
どういった設定で公開したいのかによって、設定内容は大幅に変わりますが、
一つの参考例として、活用していただければ幸いです。
また、コメントは「##」書式で書いていますので、ご注意頂きたい事と、
バージョンの古いソフトウェアも多いので、ご注意下さい。
ご利用も自己責任とさせていただいておりますので、ご注意下さい。
CentOS6.3をインストール時の内容。
デフォルト以外の設定をした箇所は以下の通り。
1.ディスクパーティション設定は、「カスタムレイアウトを作成する」を選択。
2.既存のパーティションを、一つずつ「削除」ボタンで削除していき、「空き」の表示のみにする。
3.以下のパーティションを作成する。
(1)標準パーティションを作成、ファイルシステムタイプをswap、サイズを2048(メモリは2GのPC)、「基本パーティションにする」にチェックを入れる。
(2)標準パーティションを作成、マウントポイントを/、ファイルシステムタイプをext4、最大許容量まで使用を選択、「基本パーティションにする」にチェックを入れる。
## UTCを無効にする
# vi /etc/sysconfig/clock
## 変更前:
ZONE="Asia/Tokyo"
## 変更後:
ZONE="Asia/Tokyo"
UTC=false
ARC=false
SRM=false
## 日本時間をローカル時間にする
# cp /usr/share/zoneinfo/Japan /etc/localtime
## ハードウェアクロックの時間を設定する
# hwclock --set --date="設定したい時刻(例:14/07/01 01:00:00)"
## システムクロックを、ハードウェアクロックの時間に合わせる
# hwclock -s --localtime
# shutdown -r now
## ネットワークインタフェース設定ファイルを修正する
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
変更前:
DEVICE="eth0"
BOOTPROTO="dhcp"
HWADDR="ほげほげ"
NM_CONTROLLED="yes"
ONBOOT="no"
TYPE="Ethernet"
UUID="ほげほげ"
変更後:
## ネットワークインタフェース名
DEVICE="eth0"
## 固定IPに設定
BOOTPROTO="static"
## MACアドレス
HWADDR="ほげほげ"
## NetworkManagerからの設定を許可しない
NM_CONTROLLED="no"
## OS起動時に、ネットワークも同時に起動させる
ONBOOT="yes"
## インタフェースの種類
TYPE="Ethernet"
## OSがNICを認識する時のユニークな認識名
UUID="ほげほげ"
## IPアドレス
IPADDR=192.168.1.22
## サブネットのプレフィックス長
PREFIX=24
## ゲートウェイのIPアドレス
GATEWAY=192.168.1.1
## DNSサーバーのIPアドレス(今回は、ゲートウェイと同じIP)
DNS1=192.168.1.1
## このNICが、デフォルトで使用されるNICである事を指定
DEFROUTE=yes
## IPv4が使えなくても、IPv6は使わない
IPV4_FAILURE_FATAL=yes
## IPv6は使わない
IPV6INIT=no
## NetworkManagerがNICを認識する時の名前
NAME="System eth0"
## ネットワーク再起動
# /etc/init.d/network restart
# yum update(yum -y updateとすると、以下の入力が省略される)
Is this ok [y/N]: {yを入力しenter押下}
# useradd {一般ユーザーA}
# passwd {一般ユーザーA}
パスワードを2回入力する
# useradd -s /bin/false apache
# useradd -s /bin/false mysql
# useradd postgres
# passwd postgres
パスワードを2回入力する
※公開鍵と秘密鍵は、Puttyで事前に作成しておく
http://www.kuins.kyoto-u.ac.jp/news/47/putty-gen.html
# su - {一般ユーザーA}
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ vi ~/.ssh/authorized_keys ←viで開いて公開鍵ファイルの中身をペースト
http://www.server-world.info/query?os=CentOS_5&p=ssh&f=2 に注意
$ chmod 600 ~/.ssh/authorized_keys
Puttyに秘密鍵ファイルを設定し、ログインし直す
$ su -
# vi /etc/ssh/sshd_config
変更前:
Port 22
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
#PermitRootLogin yes
#RhostsRSAAuthentication no
PasswordAuthentication yes
#PermitEmptyPasswords no
ChallengeResponseAuthentication no
SyslogFacility AUTHPRIV
#LogLevel INFO
X11Forwarding yes
変更後:
Port 以下のポート番号の参考サイトから使われていないポート番号を指定する
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PermitRootLogin no
RhostsRSAAuthentication no
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
SyslogFacility AUTHPRIV
LogLevel INFO
X11Forwarding no
## 末尾に追加
AllowUsers {一般ユーザーA}
# /etc/init.d/sshd reload
## 動作確認は、設定ミスによるSSHログインが出来なくなるのを防ぐ為に、
## 上記を設定したターミナルを閉じずに、
## 別に1~3つターミナルを起動して確認すること
## ポート番号の参考:
http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt
## 参考:
http://d.hatena.ne.jp/yasulib/20150302/1425282464
http://d.hatena.ne.jp/ozuma/20150829/1440837066
http://atnetwork.info/tcpip/tcpip93.html
# vim /etc/sysconfig/iptables
以下を追加
-----------------------------------------------------------------------------------------------------------------------------------------------------
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:SERVICE - [0:0]
:SSH - [0:0]
:HTTP - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp --icmp-type any -j ACCEPT
-A INPUT -p udp --sport 53 -j ACCEPT
-A INPUT -p udp --dport 53 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m state --state NEW ! --syn -j DROP
-A INPUT -p tcp -m state --state NEW -j SERVICE
#-A HTTP -m hashlimit --hashlimit 1/m --hashlimit-burst 10 --hashlimit-name httpcon --hashlimit-mode srcip --hashlimit-htable-expire 60000 -j RETURN
#-A HTTP -j LOG --log-level info --log-prefix "[ HTTP attack ]: "
#-A HTTP -j DROP
#-A SERVICE -p tcp --dport 80 -j HTTP
-A SERVICE -p tcp --dport {SSHのポート番号} -j ACCEPT
#-A SERVICE -p tcp --dport 80 -j ACCEPT
COMMIT
-----------------------------------------------------------------------------------------------------------------------------------------------------
## 以下のコマンドを実行する前に、上記を設定したターミナルを閉じずに、
## 別に1~3つターミナルを起動してから動作確認すること
# /etc/init.d/iptables restart
## 参考:
http://qiita.com/items/5c4e21fa284497782f71
# visudo
## 末尾に追加
{一般ユーザーA} ALL=(ALL) ALL
$ sudo yum install gcc
## makeは既に入っていたので入れていない
$ sudo yum install make
## ncursesは既に入っていたので入れていない
$ sudo yum install ncurses-devel
$ sudo yum install gtk2-devel atk-devel libX11-devel libXt-devel
$ sudo yum install patch
$ mkdir ~/src
$ cd src/
$ curl -O ftp://ftp.vim.org/pub/vim/unix/vim-8.0.069.tar.bz2
$ tar jxvf vim-8.0.069.tar.bz2
$ cd vim80/
$ mkdir patches
$ cd patches/
$ curl -O 'ftp://ftp.vim.org/pub/vim/patches/8.0/8.0.[0070-0134]'
$ cd ..
$ cat patches/8.0.???? | patch -p0
$ echo 'make distclean' > vim_ccc
$ echo './configure --prefix=/opt/vim80 --with-features=huge --enable-multibyte --enable-cscope --disable-selinux --enable-gui=gtk2 --enable-xim --enable-fontset --enable-gpm' >> vim_ccc
$ chmod +x ./vim_ccc
$ sh ./vim_ccc
$ make -j5
$ sudo make install
$ sudo ln -s /opt/vim80 /opt/vim
$ sudo vi /etc/profile
## 以下を追加
export PATH=$PATH:/opt/vim/bin
## 各ユーザー毎にvimrcを分けたい場合には以下も行う
alias vim='vim -u ~/.vimrc'
$ . /etc/profile
$ vim ~/.bashrc
## 以下を追加
alias sudo='sudo env PATH=$PATH'
$ . ~/.bashrc
## 参考:
http://qiita.com/__Attsun__/items/4d05ec5b37b1edbc288d
http://sterfield.co.jp/blog/development/vim%E3%81%A7%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%E3%83%9C%E3%83%BC%E3%83%89%E3%82%92%E6%89%B1%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B.html
## 何故か、システム共通のvimrcだと設定が有効にならなかったので、ユーザー毎のvimrcで設定する
$ vim ~/.vimrc
## 以下を追加
----------------------------------------------------------------------------------------------------------
set nocompatible
" 文字コードの自動認識
if &encoding !=# 'utf-8'
set encoding=japan
set fileencoding=japan
endif
if has('iconv')
let s:enc_euc = 'euc-jp'
let s:enc_jis = 'iso-2022-jp'
" iconvがeucJP-msに対応しているかをチェック
if iconv("\x87\x64\x87\x6a", 'cp932', 'eucjp-ms') ==# "\xad\xc5\xad\xcb"
let s:enc_euc = 'eucjp-ms'
let s:enc_jis = 'iso-2022-jp-3'
" iconvがJISX0213に対応しているかをチェック
elseif iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb"
let s:enc_euc = 'euc-jisx0213'
let s:enc_jis = 'iso-2022-jp-3'
endif
" fileencodingsを構築
if &encoding ==# 'utf-8'
let s:fileencodings_default = &fileencodings
let &fileencodings = s:enc_jis .','. s:enc_euc .',cp932'
let &fileencodings = &fileencodings .','. s:fileencodings_default
unlet s:fileencodings_default
else
let &fileencodings = &fileencodings .','. s:enc_jis
set fileencodings+=utf-8,ucs-2le,ucs-2
if &encoding =~# '^\(euc-jp\|euc-jisx0213\|eucjp-ms\)$'
set fileencodings+=cp932
set fileencodings-=euc-jp
set fileencodings-=euc-jisx0213
set fileencodings-=eucjp-ms
let &encoding = s:enc_euc
let &fileencoding = s:enc_euc
else
let &fileencodings = &fileencodings .','. s:enc_euc
endif
endif
" 定数を処分
unlet s:enc_euc
unlet s:enc_jis
endif
" 日本語を含まない場合は fileencoding に encoding を使うようにする
if has('autocmd')
function! AU_ReCheck_FENC()
let &fileencoding=&encoding
endfunction
autocmd BufReadPost * call AU_ReCheck_FENC()
endif
" 改行コードの自動認識
set fileformats=unix,dos,mac
" □とか○の文字があってもカーソル位置がずれないようにする
if exists('&ambiwidth')
set ambiwidth=double
endif
" 強調表示をON
syntax on
filetype plugin on
" 新しい行を開始したときに、新しい行のインデントを現在行と同じ量にする
set autoindent
" 見やすい色を表示するようにVimに背景色を教える
set background=light
" バックスペースキーの動作を決定する
set backspace=indent,eol,start
" バックアップを取る
"set backup
" バックアップファイルの拡張子
"set backupext=.vimbak
" 高度な自動インデントを行う
set cindent
" クリップボードの動作設定(コンパイルオプションで+clipboardになっている必要がある)
set clipboard=unnamed,autoselect
" ファイルを保存していない場合に、ファイルの保存を確認するダイアログを出す
set confirm
" 検索結果をハイライトする
set hlsearch
" 検索で、大文字小文字を区別しない
set ignorecase
" インクリメンタルサーチを行う
set incsearch
" 対になる括弧を表示する
set showmatch
" モードを表示する
set showmode
" 編集中のファイル名を表示する
set title
" ルーラーを表示する
set ruler
" タブの代わりに空白文字を挿入する
set expandtab
" タブ文字、行末など不可視文字を表示する
set list
" listで表示される文字のフォーマットを指定する。行末文字は「半スペ」、タブ文字は「^ 」、行末のスペースは「-」
set listchars=eol:\ ,tab:^\ ,trail:-
" 自動インデントの各段階に使われる空白の数
set shiftwidth=2
" ファイル内の半角スペース2個が対応する空白の数
set tabstop=2
" viminfoファイルの設定
set viminfo=
" 補完候補を表示する
set wildmenu
" 検索をファイルの末尾まで検索したら、ファイルの先頭へループしない
set nowrapscan
" 見た目の tabstop を変える
set softtabstop=2
" 挿入モードで貼り付けを行う時にペーストモードに切り替える
if &term =~ "xterm"
let &t_ti .= "\e[?2004h"
let &t_te .= "\e[?2004l"
let &pastetoggle = "\e[201~"
function XTermPasteBegin(ret)
set paste
return a:ret
endfunction
noremap [200~ XTermPasteBegin("0i")
inoremap [200~ XTermPasteBegin("")
cnoremap [200~
cnoremap [201~
endif
" 挿入モードから抜ける時にペーストモードを解除する
autocmd InsertLeave * set nopaste
----------------------------------------------------------------------------------------------------------
$ sudo cp ~/.vimrc /root/.vimrc
参考:
http://qiita.com/T_Tsan/items/44845646058732fd4b98#2-11
http://qiita.com/ryoff/items/ad34584e41425362453e
http://qiita.com/quwa/items/019250dbca167985fe32
$ sudo vim /etc/logrotate.conf
## 以下を変更
weekly
↓
daily
rotate 4
↓
rotate 365
$ sudo vim /etc/crontab
## 以下を追加
0 4 * * * root run-parts /etc/cron.daily
$ sudo vim /etc/profile
## 以下を追加
export LANG=ja_JP.UTF-8
$ . /etc/profile
$ vim ~/.bash_profile
## 以下を追加
export HISTSIZE=10000
export HISTTIMEFORMAT='%Y/%m/%d %H:%M:%S '
$ . ~/.bash_profile
## 参考:
http://d.hatena.ne.jp/takami_hiroki/20101018/p1
## pcreがApacheのインストールに必要なので、先にインストールする
## pcreはパッケージが入っていたので、インストールしない
$ sudo yum install pcre-devel
$ mkdir /home/{一般ユーザーA}/src
$ cd /home/{一般ユーザーA}/src
$ curl -O http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/httpd/httpd-2.4.3.tar.gz
$ curl -O http://ftp.kddilabs.jp/infosystems/apache/apr/apr-1.4.6.tar.gz
$ curl -O http://ftp.kddilabs.jp/infosystems/apache/apr/apr-util-1.5.1.tar.gz
$ tar xvzf httpd-2.4.3.tar.gz
$ cd httpd-2.4.3/srclib
$ tar xvzf /home/{一般ユーザーA}/src/apr-1.4.6.tar.gz
$ tar xvzf /home/{一般ユーザーA}/src/apr-util-1.5.1.tar.gz
$ mv apr-1.4.6 apr
$ mv apr-util-1.5.1 apr-util
$ cd ..
$ vim ./apache_ccc
以下を追加
./configure --prefix=/opt/apache2.4.3 --enable-so --with-included-apr
$ chmod +x ./apache_ccc
$ sh ./apache_ccc
$ make
$ sudo make install
$ sudo ln -s /opt/apache2.4.3 /opt/apache
$ sudo chown -R apache:apache /opt/apache2.4.3
$ sudo mkdir {ドキュメントルートとなるディレクトリ}
$ sudo cp -p /opt/apache/conf/httpd.conf /opt/apache/conf/httpd.conf.bak
$ sudo vim /opt/apache/conf/httpd.conf
以下(あくまでも一例)に変更
User daemon
↓
User apache
Group daemon
↓
Group apache
ServerAdmin you@example.com
↓
ServerAdmin {サーバー管理者のメールアドレス}
#ServerName www.example.com:80
↓
ServerName localhost:80
DocumentRoot "/opt/apache2.4.3/htdocs"
↓
DocumentRoot "{ドキュメントルートとなるディレクトリ}"
<Directory "/opt/apache2.4.3/htdocs">
↓
<Directory "{ドキュメントルートとなるディレクトリ}">
Options Indexes FollowSymLinks
↓
Options -Indexes +FollowSymLinks
LogLevel warn
↓
LogLevel debug
CustomLog "logs/access_log" common
↓
SetEnvIf Request_URI "^/favicon\.ico$" no_log
CustomLog "logs/access_log" combined env=!no_log
<IfModule proxy_html_module>
Include conf/extra/proxy-html.conf
</IfModule>
↓
#<IfModule proxy_html_module>
#Include conf/extra/proxy-html.conf
#</IfModule>
## 末尾に追加
Redirect 404 /favicon.ico
ErrorDocument 404 "Not found favicon"
ServerTokens ProductOnly
$ sudo vim /etc/logrotate.d/apache
## 以下を追加
/opt/apache/logs/access_log {
postrotate
/usr/bin/kill -HUP `/bin/cat /opt/apache/logs/httpd.pid`
endscript
}
/opt/apache/logs/error_log {
postrotate
/usr/bin/kill -HUP `/bin/cat /opt/apache/logs/httpd.pid`
endscript
}
$ sudo vim /opt/www/index.html
## テスト用のファイルなので、任意の内容で作成
$ sudo vim /etc/sysconfig/iptables
## 上記、【7.iptablesの設定】で設定した、HTTP部分のコメントを外す
$ sudo /etc/init.d/iptables restart
$ sudo cp /home/{一般ユーザーA}/src/httpd-2.4.3/build/rpm/httpd.init /etc/init.d/httpd
$ sudo vim /etc/init.d/httpd
## 以下に変更
httpd=${HTTPD-/usr/sbin/httpd}
↓
httpd=${HTTPD-/opt/apache/bin/httpd}
pidfile=${PIDFILE-/var/run/${prog}.pid}
↓
pidfile=${PIDFILE-/opt/apache/logs/${prog}.pid}
CONFFILE=/etc/httpd/conf/httpd.conf
↓
CONFFILE=/opt/apache/conf/httpd.conf
$ sudo chkconfig --add httpd
$ sudo chkconfig httpd on
$ sudo service httpd start
## gcc-c++、cmake、ncursesがMySQLのインストールに必要なので、先にインストールする
$ sudo yum install gcc-c++
$ cd ~/src
$ curl -O http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
$ tar zvxf cmake-2.8.10.2.tar.gz
$ cd cmake-2.8.10.2
$ ./configure
$ make
$ sudo make install
$ cd ..
$ curl -O http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.9.tar.gz
$ tar zvxf ncurses-5.9.tar.gz
$ cd ncurses-5.9
$ ./configure
$ make
$ sudo make install
$ cd ..
$ curl -O http://mirror.cogentco.com/pub/mysql/MySQL-5.5/mysql-5.5.29.tar.gz
$ tar xvzf mysql-5.5.29.tar.gz
$ cd mysql-5.5.29
$ vim ./mysql_ccc
## 以下を追加
cmake . -DCMAKE_INSTALL_PREFIX=/opt/db/mysql-5.5.29 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DMYSQL_USER=mysql
$ chmod +x ./mysql_ccc
$ sh ./mysql_ccc
$ make
$ sudo make install
$ sudo ln -s /opt/db/mysql-5.5.29 /opt/db/mysql
$ sudo mkdir /opt/db/mysql/log
$ sudo chown -R mysql:mysql /opt/db/mysql-5.5.29
$ sudo vim /etc/profile
## 以下を追加
export PATH=$PATH:/opt/db/mysql/bin
$ . /etc/profile
$ sudo /opt/db/mysql/scripts/mysql_install_db --basedir=/opt/db/mysql --datadir=/opt/db/mysql/data --user=mysql
$ sudo cp /opt/db/mysql/support-files/my-medium.cnf /opt/db/mysql/my.cnf
$ sudo chown -R mysql:mysql /opt/db/mysql-5.5.29
$ sudo cp /opt/db/mysql/support-files/mysql.server /etc/init.d/mysql
$ sudo vim /etc/init.d/mysql
## 以下を変更
basedir=
↓
basedir=/opt/db/mysql
datadir=
↓
datadir=/opt/db/mysql/data
conf=/etc/my.cnf
↓
conf="$basedir/my.cnf"
/opt/db/mysql-バージョン番号(複数箇所存在するかも)
↓
/opt/db/mysql
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &
↓
$bindir/mysqld_safe --datadir="$datadir" --log --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &
$ sudo chmod -R 777 /opt/db/mysql/log/
$ sudo vim /opt/db/mysql/my.cnf
## [mysqld]ディレクティブ内に以下を追加
↓
log=/opt/db/mysql/log/mysql_query.log
$ sudo rm -f /etc/my.cnf
$ sudo chkconfig --add mysql
$ sudo chkconfig mysql on
$ sudo service mysql start
$ su -
# /opt/db/mysql/bin/mysqladmin -u root password '**************'
# mysql -u root -p
mysql> create database "データベース名" CHARACTER SET "文字コード"(utf8);
mysql> grant all privileges on "データベース名".* to "ユーザー名"@'%' identified by 'パスワード';
mysql> flush privileges;
mysql> exit
## readline、zlibがPostgreSQLのインストールに必要なので、先にインストールする
$ cd ~/src
$ curl -O ftp://ftp.gnu.org/gnu/readline/readline-6.2.tar.gz
$ tar xvzf readline-6.2.tar.gz
$ cd readline-6.2
$ ./configure
$ make
$ sudo make install
$ cd ..
$ curl -O http://zlib.net/zlib-1.2.7.tar.gz
$ tar xvzf zlib-1.2.7.tar.gz
$ cd zlib-1.2.7
$ ./configure
$ make
$ sudo make install
$ cd ..
$ curl -O ftp://ftp.postgresql.org/pub/source/v9.2.2/postgresql-9.2.2.tar.gz
$ tar xvzf postgresql-9.2.2.tar.gz
$ cd postgresql-9.2.2
$ vim ./postgres_ccc
## 以下を追加
./configure --prefix=/opt/db/postgresql-9.2.2
$ chmod a+x ./postgres_ccc
$ sh ./postgres_ccc
$ make
$ sudo make install
$ sudo ln -s /opt/db/postgresql-9.2.2 /opt/db/postgresql
$ sudo mkdir /opt/db/postgresql/data
$ sudo mkdir /opt/db/postgresql/log
$ sudo chown -R postgres:postgres /opt/db/postgresql-9.2.2
$ sudo vim /etc/profile
## 変更前:
↓
export PATH=$PATH:/opt/db/mysql/bin:
## 変更後:
↓
export PATH=$PATH:/opt/db/mysql/bin:/opt/db/postgresql/bin
$ . /etc/profile
$ sudo /opt/db/postgresql/bin/initdb -D /opt/db/postgresql/data -E UTF8 --no-locale -U postgres
$ sudo vim /opt/db/postgresql/data/pg_hba.conf
## 以下を変更
host all all 127.0.0.1/32 trust
↓
host all all 192.168.1.0/24 trust
$ sudo vim /opt/db/postgresql/data/postgresql.conf
## 以下を変更(あくまでも一例)
#listen_addresses = 'localhost' # what IP address(es) to listen on;
↓
listen_addresses = '*' # what IP address(es) to listen on;
#port = 5432 # (change requires restart)
↓
port = 5432 # (change requires restart)
#log_destination = 'stderr' # Valid values are combinations of
↓
log_destination = 'stderr' # Valid values are combinations of
#logging_collector = off # Enable capturing of stderr and csvlog
↓
logging_collector = on # Enable capturing of stderr and csvlog
#log_directory = 'pg_log' # directory where log files are written,
↓
log_directory = '/opt/db/postgresql/log' # directory where log files are written,
#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
↓
log_filename = 'postgresql-%Y-%m-%d.log' # log file name pattern,
#log_truncate_on_rotation = off # If on, an existing log file with the
↓
log_truncate_on_rotation = on # If on, an existing log file with the
#log_rotation_age = 1d # Automatic rotation of logfiles will
↓
log_rotation_age = 1d # Automatic rotation of logfiles will
#log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements
↓
log_min_duration_statement = 1 # -1 is disabled, 0 logs all statements
$ sudo cp /home/{一般ユーザーA}/src/postgresql-9.2.2/contrib/start-scripts/linux /etc/init.d/postgresql
$ sudo vim /etc/init.d/postgresql
## 以下を変更
prefix=/usr/local/pgsql
↓
prefix=/opt/db/postgresql
PGDATA="/usr/local/pgsql/data"
↓
PGDATA="/opt/db/postgresql/data"
$ sudo chmod a+x /etc/init.d/postgresql
$ sudo chkconfig --add postgresql
$ sudo chkconfig postgresql on
$ sudo service postgresql start
$ sudo useradd -s /bin/false nginx
$ cd ~/src
$ wget http://nginx.org/download/nginx-1.6.2.tar.gz
$ tar zvxf nginx-1.6.2.tar.gz
$ cd nginx-1.6.2
$ ./configure --prefix=/opt/nginx1.6.2 --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module
$ make
$ sudo make install
$ sudo ln -s /opt/nginx1.6.2 /opt/nginx
$ sudo vim /opt/nginx/conf/nginx.conf
## 変更前:
#user nobody;
worker_processes 1;
location / {
root html;
index index.html index.htm;
}
↓
## 変更後:
user nginx;
worker_processes 2;
location / {
root {ドキュメントルートのディレクトリ};
index index.html index.htm;
}
$ sudo vim /etc/logrotate.d/nginx
## 以下を追加
/opt/nginx/logs/*.log {
daily
missingok
rotate 365
dateext
create 0644 root root
sharedscripts
postrotate
/bin/mv /opt/nginx/logs/access.log-`date +'%Y%m%d'` /opt/nginx/logs/access.log-`date +'%Y%m%d' -d '1days ago'`
/bin/mv /opt/nginx/logs/error.log-`date +'%Y%m%d'` /opt/nginx/logs/error.log-`date +'%Y%m%d' -d '1days ago'`
[ ! -f /opt/nginx/logs/nginx.pid ] || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
endscript
}
$ cd ~/src
$ curl -O ftp://xmlsoft.org/libxml2/libxml2-2.9.0.tar.gz
$ tar xvzf libxml2-2.9.0.tar.gz
$ cd libxml2-2.9.0
$ ./configure
$ make
$ sudo make install
$ cd ..
$ curl -L -o php-5.5.20.tar.gz http://jp1.php.net/get/php-5.5.20.tar.gz/from/this/mirror
$ tar xvzf php-5.5.20.tar.gz
$ cd php-5.5.20
$ vim ./php_ccc
## 以下を追加
make distclean
make clean
./configure --prefix=/opt/php-5.5.20 \
--enable-mbstring \
--with-pdo-mysql=/opt/db/mysql \
--with-pdo-pgsql=/opt/db/postgresql \
--enable-fpm \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--without-pear
## グラフ作成には、以下も追加
--with-gd \
--with-jpeg-dir=/usr/lib \
--with-png-dir=/usr/lib \
--with-vpx-dir=/usr/lib \
--with-zlib-dir=/usr/lib \
--with-xpm-dir=/usr/lib \
--with-freetype-dir=/usr/lib
## また、グラフ作成には、以下も事前に実行しておく
yum install libvpx-devel
yum install libjpeg-devel
yum install libpng-devel
yum install libXpm-devel
yum install freetype-devel
$ chmod +x ./php_ccc
$ sh ./php_ccc
$ make
$ sudo make install
$ sudo ln -s /opt/php-5.5.20 /opt/php
$ sudo vim /etc/profile
## 変更前:
export PATH=$PATH:/opt/db/mysql/bin:/opt/db/postgresql/bin
## 変更後:
export PATH=$PATH:/opt/db/mysql/bin:/opt/db/postgresql/bin:/opt/php/bin
$ . /etc/profile
$ sudo mkdir /opt/php/log
$ sudo touch /opt/php/log/php_log
$ sudo chmod -R 777 /opt/php/log
$ sudo mkdir {セッションの保存先のパス}
$ sudo chown nginx:nginx -R {セッションの保存先のパス}
$ sudo chmod -R 700 {セッションの保存先のパス}
$ sudo cp php.ini-development /opt/php/lib/php.ini
$ sudo vim /opt/php/lib/php.ini
## 追加・変更した箇所のみ記載
output_buffering = Off
zend.multibyte = On
expose_php = Off
log_errors_max_len = 0
error_log = /opt/php/log/php_log
include_path = ".:/php/includes:/usr/share"
allow_url_fopen = Off
date.timezone = Asia/Tokyo
session.save_path = "{セッションの保存先のパス}"
session.name = {セッション名}
session.cookie_httponly = On
session.entropy_length = 32
session.entropy_file = /dev/urandom
session.hash_function = sha512
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none;
mbstring.func_overload = 0
mbstring.strict_detection = Off
mbstring.http_output_conv_mimetype =
## 以下はApacheと連携させたい場合
$ sudo vim /opt/apache/conf/httpd.conf
## 以下を追加
AddType application/x-httpd-php .php
$ sudo service httpd restart
$ cd ~/src/php-5.5.20
$ sudo cp /opt/php/etc/php-fpm.conf.default /opt/php/etc/php-fpm.conf
$ sudo vim /opt/php/etc/php-fpm.conf
変更前:
;pid = run/php-fpm.pid
↓
変更後:
pid = run/php-fpm.pid
$ sudo cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
$ sudo chmod +x /etc/init.d/php-fpm
$ sudo chkconfig --add php-fpm
$ sudo chkconfig php-fpm on
$ sudo service php-fpm start
$ 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: /opt/nginx/conf/nginx.conf
# 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="/opt/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
if [ -z "`grep $user /etc/passwd`" ]; then
useradd -M -s /bin/nologin $user
fi
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
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 -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
sleep 1
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q >> exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
------------------------------------------------------------------------------
$ sudo chmod +x /etc/init.d/nginx
$ sudo chkconfig --add nginx
$ sudo chkconfig nginx on
$ sudo vim /opt/nginx/conf/nginx.conf
変更前:
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
↓
変更後:
location ~ \.php$ {
root {ドキュメントルートのディレクトリ};
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
$ sudo chown -R nginx:nginx {セッションの保存先のパス}
$ sudo /opt/apache/bin/apachectl stop
$ sudo service nginx start
## 参考:
http://fukuyama.co/nginx-phpfpm
$ cd ~/src
$ curl -O http://pkgs.fedoraproject.org/repo/pkgs/unzip/unzip60.tar.gz/62b490407489521db863b523a7f86375/unzip60.tar.gz
$ tar xvzf unzip60.tar.gz
$ cd unzip60
$ cp unix/Makefile .
$ make generic
$ sudo make install
$ cd ..
$ curl -L -O https://github.com/gallu/MagicWeapon/archive/master.zip
$ unzip master.zip
$ sudo mkdir /opt/mw
$ sudo cp -r ./MagicWeapon-master/* /opt/mw/
$ cd ~/src
$ curl -L -O http://prdownloads.sourceforge.net/ctags/ctags-5.8.tar.gz
$ tar xvzf ctags-5.8.tar.gz
$ cd ctags-5.8
$ ./configure
$ make
$ sudo make install
$ su -
# ctags -R --languages=PHP --langmap=PHP:.php.inc --php-types=c+f+d+v+i -f /opt/mw/.tags /opt/mw/
# exit
$ ctags -R --languages=PHP --langmap=PHP:.php.inc --php-types=c+f+d+v+i -f /{アプリケーションベースディレクトリ}/.tags /{アプリケーションベースディレクトリ}/
$ sudo vim ~/.vimrc
## 以下を追加
autocmd FileType php set tags=/opt/mw/.tags,/{アプリケーションベースディレクトリ}/.tags
## ちょっとした使い方
## Ctrl+]:タグを進む
## Ctrl+T:タグを戻る
## :pop:タグを戻る
## :tags:移動経路を確認
## :ts:他の候補を呼び出す
$ cd ~/src
## perlとソースからのExtUtilsのインストールではgitインストール時にエラーになる為、yumでExtUtils-MakeMakerをインストールした
$ sudo yum install perl-ExtUtils-MakeMaker
## tkはソースからインストールしようとするとエラーになるので、tclも含めてyumでインストールした
$ sudo yum install tcl tk
## gettextはソースからインストールしようとするとncurses(入っているのに)エラーになるので、yumでインストールした
$ sudo yum install gettext
$ sudo yum install curl-devel expat-devel gettext-devel
$ curl -O https://git-core.googlecode.com/files/git-1.9.0.tar.gz
$ tar xvf git-1.9.0.tar.gz
$ cd git-1.9.0
$ vim ./git_ccc
./configure --prefix=/opt/git-1.9.0
$ chmod +x ./git_ccc
$ sh ./git_ccc
$ make
$ sudo make install
$ sudo ln -s /opt/git-1.9.0 /opt/git
$ sudo vi /etc/profile
## 変更前:
export PATH=$PATH:/opt/db/mysql/bin:/opt/db/postgresql/bin:/opt/php/bin
## 変更後:
export PATH=$PATH:/opt/db/mysql/bin:/opt/db/postgresql/bin:/opt/php/bin:/opt/git/bin
$ . /etc/profile
## opensshは、opensslを必要としているが、ソースからopensslを入れてもエラーになるので、yumでopenssl-develをインストールした
$ sudo yum install openssl-devel
$ cd ~/src
$ curl -O http://www.ftp.ne.jp/OpenBSD/OpenSSH/portable/openssh-6.2p1.tar.gz
$ tar xvf openssh-6.2p1.tar.gz
$ cd openssh-6.2p1
$ ./configure
$ make
$ sudo make install
$ sudo mkdir -p /etc/rc.d/init.d/.backup
$ sudo cp -p /etc/rc.d/init.d/sshd /etc/rc.d/init.d/.backup/sshd.20130602a
$ sudo /etc/rc.d/init.d/sshd stop
$ sudo cp /home/{一般ユーザーA}/src/openssh-6.2p1/contrib/redhat/sshd.init /etc/rc.d/init.d/sshd
$ sudo vim /etc/rc.d/init.d/sshd
## 以下を変更
SSHD=/usr/sbin/sshd
↓
SSHD=/usr/local/sbin/sshd
/usr/bin/ssh-keygen
↓
/usr/local/bin/ssh-keygen
$ sudo /etc/rc.d/init.d/sshd start
## 参考:
http://qiita.com/a_ishidaaa/items/8bb63a625e8a89b21a12
$ cd ~/.ssh
$ ssh-keygen
$ mv id_rsa {GitHub接続用の秘密鍵}
$ mv id_rsa.pub {GitHub接続用の公開鍵}
$ chmod 600 {GitHub接続用の公開鍵}
$ chmod 600 {GitHub接続用の秘密鍵}
$ vim config
## 以下を追加
Host github.com
User {GitHubのユーザー名}
Hostname github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/{GitHub接続用の秘密鍵}
$ chmod 600 config
## 公開鍵ファイルの中身を全てコピーしてgithubのページに追加する
## 以下は、動作確認
$ ssh git@github.com
## 参考:
http://d.hatena.ne.jp/rightgo09/20101212/p1
$ cd ~/.ssh
$ ssh-keygen
$ mv id_rsa {本番接続用の秘密鍵}
$ mv id_rsa.pub {本番接続用の公開鍵}
$ chmod 600 {本番接続用の公開鍵}
$ chmod 600 {本番接続用の秘密鍵}
## 公開鍵ファイルの中身を全てコピーして本番サーバ側の.ssh/authorized_keysに追記する
## 以下は、動作確認
$ ssh -i /home/{一般ユーザーA}/.ssh/{本番接続用の秘密鍵} -p {ポート番号} {接続先サーバーのユーザー名}@{接続先サーバーのIP}
$ mkdir -p /opt/git/repos/{新規リポジトリ名}.git
$ cd /opt/git/repos/{新規リポジトリ名}.git
$ git --bare init --share
$ cd ~/.ssh
$ ssh-keygen
$ mv id_rsa {新規リポジトリ用の秘密鍵}
$ mv id_rsa.pub {新規リポジトリ用の公開鍵}
$ chmod 600 {新規リポジトリ用の公開鍵}
$ chmod 600 {新規リポジトリ用の秘密鍵}
$ cat {新規リポジトリ用の公開鍵} >> authorized_keys
$ vim config
## 以下を追記
Host {任意の名前A}
User {一般ユーザーA}
Hostname localhost
PreferredAuthentications publickey
IdentityFile ~/.ssh/{新規リポジトリ用の秘密鍵}
$ chmod 600 ~/.ssh/config
$ cd /{アプリケーションベースディレクトリ}/{リポジトリ名}
$ git config --global user.name "{一般ユーザーA}"
$ git config --global user.email {メールアドレス}
$ git init
$ git add ./*
$ git commit -m "first commit"
$ sudo ln -s `which git-receive-pack` /usr/bin/git-receive-pack
$ git remote add origin ssh://{任意の名前A}/opt/git/repos/{新規リポジトリ名}.git
$ git push origin master
## 以下はcloneしたい時
$ sudo ln -s `which git-upload-pack` /usr/bin/git-upload-pack
$ git clone ssh://{任意の名前A}/opt/git/repos/{新規リポジトリ名}.git /home/{一般ユーザーA}/test
## server_setting_info.conf(サーバー設定情報ファイル)
------------------------------------------------------------------
# SSHの秘密鍵ファイル
ssh_private_key_file=/home/{一般ユーザーA}/.ssh/{リモート接続用の秘密鍵ファイル名}
# リモートへSSH接続時のポート番号
ssh_port={ポート番号}
# リモート側のOSユーザー名
remote_user={OSユーザー名}
# リモート側のIPアドレス
remote_host={IPアドレス}
# ローカル側の基準ディレクトリ
local_base_dir=/home/{一般ユーザーA}/$1/
# リモート側の基準ディレクトリ
remote_base_dir=/{基準ディレクトリパス}/
------------------------------------------------------------------
## diff.sh(本番サーバとの差分を取得するシェル)
$ /{アプリケーションベースディレクトリ}/diff.sh {gitリポジトリ名}
------------------------------------------------------------------
#!/bin/sh
if [ $# -ne 1 ]; then
echo "指定された引数は$#個です。" 1>&2
echo "実行するには1個の引数が必要です。" 1>&2
exit 1
fi
# サーバー設定情報を読み込む
source ./server_setting_info.conf
# 差分結果と、gitから取得するファイル情報を初期化する
rm -f /{アプリケーションベースディレクトリ}/diff_result
rm -rf $local_base_dir
# gitから最新の情報を取得する
git clone ssh://{任意の名前A}/opt/git/repos/$1.git $local_base_dir
# .gitディレクトリを除外し、基準ディレクトリ名を除いたファイルパス情報のみに整形する
file_names=`find $local_base_dir -path "${local_base_dir}.git" -prune -o -type f -print | sed "s@${local_base_dir}@@"`
for file_name in $file_names
do
# ファイル名を出力する
echo ${1}/${file_name} >> diff_result
# ローカル側のファイルと、リモート側のファイルの差分を調べて出力する
ssh -i $ssh_private_key_file -p $ssh_port ${remote_user}@${remote_host} cat ${remote_base_dir}${file_name} | diff - ${local_base_dir}${file_name} 2>&1 >> diff_result
done
------------------------------------------------------------------
## update.sh(本番サーバへアップするシェル)
$ /{アプリケーションベースディレクトリ}/update.sh {gitリポジトリ名}
------------------------------------------------------------------
#!/bin/sh
if [ $# -ne 1 ]; then
echo "指定された引数は$#個です。" 1>&2
echo "実行するには1個の引数が必要です。" 1>&2
exit 1
fi
# サーバー設定情報を読み込む
source ./server_setting_info.conf
# ロールバックの為に、現在のリモート側の内容をバックアップする
ssh -i $ssh_private_key_file -p ${ssh_port} ${remote_user}@${remote_host} cp -r --parent ${remote_base_dir} /tmp/
# ローカル側の内容を、リモート側に送る
rsync --checksum -av --exclude=".git" -e "ssh -i $ssh_private_key_file -p ${ssh_port}" --delete $local_base_dir ${remote_user}@${remote_host}:${remote_base_dir}
------------------------------------------------------------------
## rollback.sh(ロールバックするシェル)
$ /{アプリケーションベースディレクトリ}/rollback.sh {gitリポジトリ名}
------------------------------------------------------------------
#!/bin/sh
if [ $# -ne 1 ]; then
echo "指定された引数は$#個です。" 1>&2
echo "実行するには1個の引数が必要です。" 1>&2
exit 1
fi
# サーバー設定情報を読み込む
source ./server_setting_info.conf
# バックアップしておいた内容を反映する
ssh -i $ssh_private_key_file -p ${ssh_port} ${remote_user}@${remote_host} cp -r /tmp${remote_base_dir}* $remote_base_dir
------------------------------------------------------------------
## 参考(この内容が参考なのかよって気もするがw)
http://qiita.com/QUANON/items/2953c52df7f65f2ecee5
http://koseki.hatenablog.com/entry/20090424/rsync
$ cd ~/src
$ curl -O http://www.pchart.net/release/pChart2.1.4.tar.gz
$ tar xvzf pChart2.1.4.tar.gz
## 解答されたディレクトリを、ドキュメントルートなどに置いてみるなりして、動作確認
$ cd ~/src
$ curl -O http://download.redis.io/releases/redis-2.8.18.tar.gz
$ tar zvxf redis-2.8.18.tar.gz
$ cd redis-2.8.18
$ make
$ sudo make PREFIX=/opt/redis-2.8.18 install
$ sudo ln -s /opt/redis-2.8.18 /opt/redis
$ sudo vim /etc/profile
変更前:
↓
export PATH=$PATH:/opt/db/mysql/bin:/opt/db/postgresql/bin:/opt/php/bin:/opt/git/bin
変更後:
↓
export PATH=$PATH:/opt/db/mysql/bin:/opt/db/postgresql/bin:/opt/php/bin:/opt/git/bin:/opt/redis/bin
$ . /etc/profile
## ポート番号を変えたい場合は、以下のポート番号を変更する
$ sudo vim redis.conf
port 6379
$ sudo cp redis.conf /opt/redis/{Redisのポート番号}.conf
$ sudo vim /opt/redis/{Redisのポート番号}.conf
## 変更前:
daemonize no
pidfile /var/run/redis.pid
## 変更後:
daemonize yes
pidfile /opt/redis/redis_{Redisのポート番号}.pid
$ sudo cp utils/redis_init_script /etc/init.d/redis
$ sudo vim /etc/init.d/redis
## 変更前:
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"
## 変更後:
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
# chkconfig: 2345 86 14
# description: Redis
REDISPORT={Redisのポート番号}
EXEC=/opt/redis/bin/redis-server
CLIEXEC=/opt/redis/bin/redis-cli
PIDFILE=/opt/redis/redis_${REDISPORT}.pid
CONF="/opt/redis/${REDISPORT}.conf"
$ sudo chkconfig --add redis
$ sudo chkconfig redis on
$ sudo service redis start
$ cd ~/src
# phpizeを実行するのに、autoconfが必要だった為、先に入れる
$ curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
$ tar zvxf autoconf-2.69.tar.gz
$ cd autoconf-2.69
$ ./configure
$ make
$ sudo make install
$ git clone git://github.com/nicolasff/phpredis.git
$ cd phpredis
$ phpize
$ ./configure
$ make
$ sudo make install
$ sudo vim /opt/php/lib/php.ini
## 以下を追記
extension=redis.so
$ sudo yum install readline-devel
$ cd
$ mkdir ~/.rbenv
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ rbenv install --list
$ rbenv install -v 2.1.5
$ rbenv rehash
$ rbenv versions
$ rbenv global 2.1.5
$ ruby -v
## 参考:
http://qiita.com/inouet/items/478f4228dbbcd442bfe8
$ cd
$ cd src/
$ curl -O http://www.openssl.org/source/openssl-1.0.1p.tar.gz
$ tar xvf openssl-1.0.1p.tar.gz
$ cd openssl-1.0.1p
$ ./config --prefix=/opt/openssl-1.0.1p --openssldir=/opt/openssl-1.0.1p shared
$ make
$ sudo make install
$ sudo ln -s /opt/openssl-1.0.1p /opt/openssl
$ sudo vim /etc/ld.so.conf
## 以下を追加
/opt/openssl/lib
$ sudo vim /etc/profile
## 変更前:
export PATH=$PATH:/opt/php/bin:/opt/git/bin
## 変更後:
export PATH=$PATH:/opt/php/bin:/opt/git/bin:/opt/openssl/bin
$ . /etc/profile
## 現在のopensslが示すパスを調査
$ which openssl
## パスを変更
$ sudo mv /usr/bin/openssl /usr/bin/openssl.orig
## 変更されたか確認
$ which openssl
$ sudo ldconfig
$ ssh git@github.com
$ sudo /etc/init.d/nginx restart
## openssl-develが必要なのでインストール(上記30を先にやっていれば不要かも)
$ sudo yum install openssl-devel
## 既存のPHPに追加でopensslのサポートを入れる
$ cd ~/src
$ cd php-5.5.20
$ cd ext/openssl
$ cp config0.m4 config.m4
$ phpize
$ ./configure
$ make
$ make test
$ sudo make install
$ sudo vim /opt/php/lib/php.ini
## 以下を追加
extension=/opt/php-5.5.20/lib/php/extensions/no-debug-zts-20100525/openssl.so
$ sudo service nginx restart
$ sudo vim /etc/logrotate.conf
## 以下を変更
weekly
↓
daily
rotate 53
↓
rotate 365
$ sudo su -
## cronの設定を、全て/etc/crontabに移す
## 現状の内容
# crontab -l
## 全て消す
# crontab -r
# exit
$ sudo vim /etc/crontab
MAILTO=root
↓
MAILTO=""
## 以下を追記(crontab -l で出力された現状の内容も反映する)
00 00 * * * root /etc/cron.daily/logrotate
00 01 * * * root /opt/php/bin/php {フルパスで実行したいPHPのソースファイルを指定} 2>&1
00 04 * * * root run-parts /etc/cron.daily
## 参考:
http://qiita.com/MasatoYoshioka@github/items/e542f39a6f1a3bc1f71e
http://silverkey-openbox.net/blog/set_up_logrotate.html
http://qiita.com/katsukii/items/d5f90a6e4592d1414f99