ruby環境構築及び関連環境構成


ruby環境構築、関連ツールの構成使用
関連ツール
  • git
  • vim
  • nginx
  • mongodb
  • redis
  • memcached
  • mysql
  • rvm || rbenv
  • ruby
  • システムライブラリ(Centos:yum,mac:brew,ubuntu:apt-get)本書は主にCentos環境の構築
  • varnish

  • 開発環境構築の前置条件
    ネットワーク構成
  • CentOS 6.2 64 bit最小化システム
  • をインストール
  • NIC
  • の構成
    vim/etc/sysconfig/network-scripts/ifcfg-eth0
    EVICE="eth0"
    BOOTPROTO="dhcp"
    HWADDR="08:00:27:86:A1:4A"
    NM_CONTROLLED="yes"
    ONBOOT="yes"

    NICの再起動:service network restart
    注意:静的ipに構成する必要があるかどうか、関連構成:
    EVICE="eth0"
    BOOTPROTO="static"
    IPADDR="192.168.10.1" # ip  
    NETMASK="255.255.255.0" #     
    GATWAY="192.168.10.1"  #   
    HWADDR="08:00:27:86:A1:4A"
    NM_CONTROLLED="yes"
    ONBOOT="yes"

    yumソースの交換
    rpm -Uvh http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm

    ベースパッケージのインストール
    yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel 
    yum install -y openssl-devel make bzip2 autoconf automake libtool bison iconv-devel git-core ImageMagick 
    yum install -y libxml libxml-devel libxslt libxslt-devel wget
    yum install -y pcre-devel openssl openssl-devel 
    yum install -y tcl
    yum install -y libaio-devel
    yum install -y ntpdate

    どうきじかん
    /usr/sbin/ntpdate 0.centos.pool.ntp.org;/sbin/hwclock -w
    
    crontab -e
    * */12 * * * /usr/sbin/ntpdate 0.centos.pool.ntp.org;/sbin/hwclock -w

    SSH鍵登録
    参照先:http://blog.58share.com/?p=289
    1. vim
    概要
    編集神器として:vimはあまり紹介する必要はありませんが、基本的にCentOSを初期化してインストールするとvi vimの多くのプラグインが付いていますが、管理が不便で、ここではVundleを使ってプラグインの管理をしています.
    詳細については、以下を参照してください.http://blog.58share.com/?p=203
    vimプロファイル:https://github.com/huhongda/scripts/blob/master/vimrc
    CentOSインストール
    yum install -y vim

    2. git
    gitバージョンコントローラCentOSインストール
    yum install -y git

    git構成
    git config --global user.name "jerry"
    #    vim ~/.gitconfig
    
    [user]
      name  =  jerry
      email =  your_email
    [color] #  git   
      branch      = auto
      diff        = auto
      interactive = auto
      status      = auto
    [core]
      editor = /usr/bin/vim

    git基本使用:
    git clone https://github.com/huhongda/scripts.git  
    git add .  || git add direct_file
    git commit -m 'you commit'
    git push origin your_branch  #            
    git push origin :your_branch #         
    git push origin master -f            
    
    git pull origin your_branch
    git checkout your_first_branch
    git merge your_branch  
    
    git remote update -p #       
    git remote -v  #   git   
    git remote add origin https://github.com/huhongda/scripts.git #   git     
    git remote rm origin  #   git     
    
    git log #   git  
    git log --graph 
    git log -p app/xxxx.rb         (    )
    
    git diff commitA commitB #          
    git blame file #          
    git clean -df   untrack   
    
    git stash           
    git stash pop            
    
    git branch -a #        (      )
    git branch -d your_branch #       
    
    git status #       
    
    git checkout -b new_branch #               

    git-flowのインストール
    概要:http://danielkummer.github.io/git-flow-cheatsheet/index.zh_CN.html
    wget https://raw.github.com/huhongda/scripts/master/gitflow-installer.sh
    /bin/bash gitflow-installer.sh
      #       
    
    git flow init 
     #       ,          

    git flow基本使用
    ## for developer
    git checkout develop
    git pull origin develop
    git flow feature start new_branch
    
    ..develop..
    
    git add .
    git commit -m 'modify your branch'
    git push origin new_branch
    
    ## base current branch 
    git checkout old_branch
    git pull origin  old_branch
    git checkout -b new_branch
    ..
    
    ## for other
    git flow feature publish new_branch
    git remote update -p
    git flow feature track new_branch
    
    ## for production
    git flow feature track new_branch
    git flow feature finish new_branch
    git push origin :new_branch
    
    
    ### for release
    git flow release start Version_1.02 
    git flow release publish Version_1.02
    
    #   release  
    git flow release track Version_1.02 
    
    #   release
    #  master (release finish       master  )
    git flow release finish -F -p Version_1.02 
     
    git push origin master
    
    # hotfix  
    git remote update -p
    git checkout master
    git pull origin master
    git checkout develop
    git pull origin develop
    
    git flow hotfix start xxoo
       
    git add ..............
    git commit -m "xxoo" 
    git remote update -p
    git flow hotfix finish xxoo
    
    git remote update -p
    git checkout master
    git pull origin master
    git push origin master
    git checkout develop
    git pull origin develop
    git push origin develop

    nginx
    インストール
    cd /tmp
    wget -c http://nginx.org/download/nginx-1.4.4.tar.gz
    tar -zxf nginx-1.4.4.tar.gz
    cd nginx-1.4.4
    
    ./configure --user=www --group=www --prefix=/usr/local/nginx \
     --with-http_ssl_module --with-http_realip_module --with-http_addition_module \ 
     --with-http_sub_module --with-http_gzip_static_module --with-http_realip_module \
     --with-http_gunzip_module --with-http_stub_status_module --with-pcre \
     --with-ipv6 --with-mail --with-mail_ssl_module --with-http_random_index_module  
    
    make 
    make test
    make install

    コンフィギュレーション
  • wwwユーザ、ユーザグループ及びNginxログディレクトリ
  • を作成する.
    /usr/sbin/groupadd www
    /usr/sbin/useradd -g www www
    
    mkdir -p /data/pids/nginx/
    mkdir -p /data/logs/nginx/
    chmod +w /data/logs/nginx/
    chmod +w /data/pids/nginx/
    chown -R www:www /data/logs/nginx/
    chown -R www:www /data/pids/nginx/
  • Nginxプロファイル
  • を作成する
    参照先:https://github.com/huhongda/scripts/blob/master/nginx.conf
    wget https://raw.github.com/huhongda/scripts/master/nginx.conf
  • nginx
    ulimit -SHn 65535
    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  • を起動
  • 起動nginx vim/etc/rcを構成する.local
    ulimit -SHn 65535
    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

  • nginx常用コマンド
    /usr/local/nginx/sbin/nginx -t  #           
    /usr/local/nginx/sbin/nginx -s reload #     Nginx
    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #   nginx

    詳細については、以下を参照してください.http://blog.58share.com/?p=158#more-158およびnginx公式サイトのドキュメント
    memcached
    インストール
    wget https://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
    #memcached   
    wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
    
    tar -zxf libevent-2.0.21-stable.tar.gz
    cd libevent-2.0.21-stable
    ./configure
    make && make install
    
    ln -sv /usr/local/lib/libevent-2.0.so.5 /usr/lib/
    ln -sv /usr/local/lib/libevent-2.0.so.5 /usr/lib64/
    
    cd ../
    tar -zxf memcached-1.4.15.tar.gz
    cd memcached-1.4.15/
    ./configure --prefix=/usr/local/memcached --with-libevent=/usr
    make && make install
     
    ln -sv /usr/local/memcached/bin/memcached /usr/bin/
    source ~/.bashrc
    /usr/sbin/useradd -g memcached memcached
    
    #   
    memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid
    
    
    #     
    vim /etc/rc.local
    memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid

    使用
    rails、phpバージョンクライアント使用リファレンス:http://blog.58share.com/?p=176
    mysql
    インストール
    ダウンロードシステムに対応するバージョン:
    #      (32   64 )
    uname -m | sed -e 's/i.86/32/'
    
    # 64bit   
    wget -c http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz
    
    # 32bit   
    wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15-linux-glibc2.5-i686.tar.gz

    インストール:
    groupadd mysql
    useradd -r -g mysql mysql    
    tar -zxf mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz
    mv mysql-5.6.15-linux-glibc2.5-x86_64 /usr/local/mysql
    cd /usr/local
    chown -R mysql:mysql mysql

    PATHパスの追加:
    vim /etc/profile
    
    #       
    MYSQL_HOME=/usr/local/mysql
    PATH=$PATH:$MYSQL_HOME/bin
    
    source /etc/profile

    データベース・ストレージ・ディレクトリを作成するには、次の手順に従います.
    mkdir -p /data/data/mysql
    mkdir -p /data/logs/mysql
    chown -R mysql:mysql /data/data/mysql
    chown -R mysql:mysql /data/logs/mysql
    chmod -R go-rwx /data/data/mysql
    chmod -R go-rwx /data/logs/mysql

    データ情報の設定:
    scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/data/mysql/ --explicit_defaults_for_timestamp
    
    cp support-files/mysql.server /etc/init.d/mysql # mysql          
    
    /usr/local/mysql/bin/mysqladmin -u root password 'new-password' #   root  
    
    #       
    vim /etc/init.d/mysql
    
    basedir=/usr/local/mysql
    datadir=/data/data/mysql

    mysqlプロファイルを作成するには、次の手順に従います.
    cp support-files/my-default.cnf /etc/my.cnf

    プロファイルの変更:vim/etc/my.cnf
    [client]
    port = 3306
    socket = /tmp/mysql.sock
    [mysqld]
    port = 3306
    socket = /tmp/mysql.sock
    datadir   = /data/data/mysql
    pid-file  = /data/data/mysql/mysql.pid
    log-error = /data/logs/mysql/error.log
    long_query_time  = 0.5          #       
    slow_query_log   = 1
    slow_query_log_file = /data/logs/mysql/slowquery.log  #         
    min_examined_row_limit = 10000
    
    skip-external-locking
    key_buffer_size = 384M
    max_allowed_packet = 1M
    table_open_cache = 512
    sort_buffer_size = 2M
    read_buffer_size = 2M
    read_rnd_buffer_size = 8M
    myisam_sort_buffer_size = 64M
    thread_cache_size = 8
    query_cache_size = 32M
    thread_concurrency = 8
    log-bin=mysql-bin
    
    server-id = 1
    
    [mysqldump]
    quick
    max_allowed_packet = 16M
    
    [mysql]
    no-auto-rehash
    
    [myisamchk]
    key_buffer_size = 256M
    sort_buffer_size = 256M
    read_buffer = 2M
    write_buffer = 2M
    
    [mysqlhotcopy]
    interactive-timeout

    参照先:http://blog.58share.com/?p=141
    #      
    vim /etc/rc.local
    
    /etc/init.d/mysql start

    MongoDB
    インストールおよび基本的な使用参考:http://blog.58share.com/?p=192
    Redis
    インストール
    参照先:http://redis.io/download
    wget -c http://download.redis.io/releases/redis-2.8.4.tar.gz
    tar xzf redis-2.8.4.tar.gz
    cd redis-2.8.4
    make    
    
    cp redis-server /usr/local/bin/
    cp redis-cli /usr/local/bin/
    
    mkdir /var/redis
    mkdir /etc/redis
    mkdir /var/redis/6379
    
    cp utils/redis_init_script /etc/init.d/redis
    cp redis.conf /etc/redis/6379.conf

    構成リファレンス:http://redis.io/topics/quickstart
    開始
    /etc/init.d/redis start
    
    #     
    vim /etc/rc.local
    
    /etc/init.d/redis start

    varnish(一般的に生産環境に用いられる)
    概要
    Varnishは、高性能でオープンソースのリバースプロキシサーバとキャッシュサーバです.
    インストール
  • yum install -y varnish

  • 2.
    wget http://repo.varnish-cache.org/source/varnish-3.0.4.tar.gz
    tar zxf varnish-3.0.4.tar.gz
    cd varnish-3.0.4
    
    ./configure
    make
    make check (      )
    make install

    開始
    #       
    cd /usr/local/etc/varnish/
    wget https://raw.github.com/huhongda/scripts/master/varnish_default.vcl
    
    mkdir -p /data/data/varnish
    
    varnishd -f /usr/local/etc/varnish/varnish_default.vcl -a 0.0.0.0:80 -s file,/data/data/varnish/varnish_cache.data,128m -T 127.0.0.1:3500
    
    #  -T        -a       
    #  :         !
    #     nginx  

    詳細については、次のトピックを参照してください.
    http://varnish-cache.org/
    http://www.programmer.com.cn/14315/
    rbenv
    概要
    一般的にrbenvまたはrvmによってrubyの複数のバージョンを管理します
    rvmのインストールの使用参考:http://ruby-china.org/wiki/rvm-guide
    一般的にrbenvを使用してrubyバージョンを管理します
    具体的な参考:http://ruby-china.org/wiki/rbenv-guide
    インストール1.
    git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
    #        ruby
    git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
    #      gemset,   ,     bundler       
    git clone git://github.com/jamis/rbenv-gemset.git  ~/.rbenv/plugins/rbenv-gemset
    #    gem       gem         rbenv rehash   ,   
    git clone git://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash
    #    rbenv update       rbenv       ,   
    git clone https://github.com/rkh/rbenv-update.git ~/.rbenv/plugins/rbenv-update

    次のコードを~/.bash_profileに入れます
    export PATH="$HOME/.rbenv/bin:$PATH"
    eval "$(rbenv init -)"

    実行:source~/.bash_profile
    インストール2.
    curl https://raw.github.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash

    https://github.com/fesplugas/rbenv-installer
    使用
    rbenv install --list  #      ruby   
    rbenv install 1.9.3-p484     #    1.9.3-p392
    rbenv versions               #        
    rbenv version                #          
    rbenv global 1.9.3-p484      #      1.9.3-p392
    rbenv shell 1.9.3-p484       #     shell    1.9.3-p392,       `RBENV_VERSION`     
    benv local 1.9.3-p484      #        jruby-1.7.3,       `.rbenv-version`   
    rbenv rehash                 #      ruby       bundle install           
    rbenv which irb              #    irb          
    rbenv whence irb             #      irb        
    gem install bundler 
    
      bundle   gem