Linux環境構築手順

以下にしか書かれていない手順もありますが、

現在はこちら https://github.com/kitoku-magic/infra のauto_installに移行しましたので、

以下は旧手順になります。

技術系トップに戻る

トップページに戻る


このページは、Linuxでの様々な環境を構築する際の手順書です。

公開環境に構築するのか否かや、

どういった設定で公開したいのかによって、設定内容は大幅に変わりますが、

一つの参考例として、活用していただければ幸いです。

また、コメントは「##」書式で書いていますので、ご注意頂きたい事と、

バージョンの古いソフトウェアも多いので、ご注意下さい。

ご利用も自己責任とさせていただいておりますので、ご注意下さい。


目次:

1.OSのインストール

2.ハードウェアクロックの設定とシステムクロックとの同期

3.ネットワークの設定

4.システムのアップデート

5.ユーザーの追加とパスワードの設定

6.SSH用の公開鍵認証の設定

7.iptablesの設定

8.sudoersの設定

9.vimのインストール

10.vimの設定

11.logrotateの設定

12.環境変数の設定

13.Apacheのインストール

14.MySQLのインストール

15.PostgreSQLのインストール

16.Nginxのインストール

17.PHPのインストール

18.PHP-fpmの設定

19.MagicWeaponのインストール

20.ctagsの設定

21.gitのインストール

22.githubの公開鍵認証の設定

23.本番サーバへのアップ設定

24.Gitリポジトリの設定

25.本番サーバへのアップ手順

26.pchartのインストール

27.Redisのインストール

28.phpredisのインストール

29.rbenvのインストール

30.OpenSSLのアップデート

31.PHPで前日のアクセスログの内容を毎日メール送信する為の設定


1.OSのインストール

          
CentOS6.3をインストール時の内容。

デフォルト以外の設定をした箇所は以下の通り。


1.ディスクパーティション設定は、「カスタムレイアウトを作成する」を選択。

2.既存のパーティションを、一つずつ「削除」ボタンで削除していき、「空き」の表示のみにする。

3.以下のパーティションを作成する。


(1)標準パーティションを作成、ファイルシステムタイプをswap、サイズを2048(メモリは2GのPC)、「基本パーティションにする」にチェックを入れる。

(2)標準パーティションを作成、マウントポイントを/、ファイルシステムタイプをext4、最大許容量まで使用を選択、「基本パーティションにする」にチェックを入れる。
          
        

2.ハードウェアクロックの設定とシステムクロックとの同期

          
## 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
          
        

3.ネットワークの設定

          
## ネットワークインタフェース設定ファイルを修正する

# 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
          
        

4.システムのアップデート

          
# yum update(yum -y updateとすると、以下の入力が省略される)


Is this ok [y/N]: {yを入力しenter押下}
          
        

5.ユーザーの追加とパスワードの設定

          
# useradd {一般ユーザーA}


# passwd {一般ユーザーA}


パスワードを2回入力する


# useradd -s /bin/false apache


# useradd -s /bin/false mysql


# useradd postgres


# passwd postgres


パスワードを2回入力する
          
        

6.SSH用の公開鍵認証の設定

          
※公開鍵と秘密鍵は、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
          
        

7.iptablesの設定

          
# 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
          
        

8.sudoersの設定

          
# visudo


## 末尾に追加

{一般ユーザーA} ALL=(ALL) ALL
          
        

9.vimのインストール

          
$ 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
          
        

10.vimの設定

          
## 何故か、システム共通の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
          
        

11.logrotateの設定

          
$ sudo vim /etc/logrotate.conf


## 以下を変更

weekly

↓

daily

rotate 4

↓

rotate 365


$ sudo vim /etc/crontab


## 以下を追加

0 4 * * * root run-parts /etc/cron.daily
          
        

12.環境変数の設定

          
$ 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
          
        

13.Apacheのインストール

          
## 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
          
        

14.MySQLのインストール

          
## 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
          
        

15.PostgreSQLのインストール

          
## 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
          
        

16.Nginxのインストール

          
$ 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
}
          
        

17.PHPのインストール

          
$ 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
          
        

18.PHP-fpmの設定

          
$ 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
          
        

19.MagicWeaponのインストール

          
$ 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/
          
        

20.ctagsの設定

          
$ 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:他の候補を呼び出す
          
        

21.gitのインストール

          
$ 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
          
        

22.githubの公開鍵認証の設定

          
$ 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
          
        

23.本番サーバへのアップ設定

          
$ 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}
          
        

24.Gitリポジトリの設定

          
$ 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
          
        

25.本番サーバへのアップ手順

          
## 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
          
        

26.pchartのインストール

          
$ cd ~/src


$ curl -O http://www.pchart.net/release/pChart2.1.4.tar.gz


$ tar xvzf pChart2.1.4.tar.gz


## 解答されたディレクトリを、ドキュメントルートなどに置いてみるなりして、動作確認
          
        

27.Redisのインストール

          
$ 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
          
        

28.phpredisのインストール

          
$ 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
          
        

29.rbenvのインストール

          
$ 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
          
        

30.OpenSSLのアップデート

          
$ 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
          
        

31.PHPで前日のアクセスログの内容を毎日メール送信する為の設定

          
## 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
          
        

ページのトップへ戻る

技術系トップに戻る

トップページに戻る