うまとま君の技術めも

2015年新卒入社した社畜の勉強内容などなど

Macで作るLaravel 4.1 開発環境

環境

  • OS X 10.9.2
  • Homebrew 0.9.5
  • PHP 5.5
  • Laravel 4.1

PHP 5.5 をインストール

$ curl -s http://php-osx.liip.ch/install.sh | bash -s 5.5

pathを追加する

$ vim ~/.bash_profile
export PATH=/usr/local/php5/bin:$PATH

設定ファイルを反映させる

$ source ~/.bash_profile
$ php -v
PHP 5.5.12 (cli) (built: May 17 2014 15:21:52)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

php_mcryptのインストール

brewphp_mcryptをインストール

$ brew install mcrypt

composerのインストール

$ curl -sS https://getcomposer.org/installer | php -d detect_unicode=Off
$ mv composer.phar /usr/local/bin/composer
$ composer --version
Composer version 0c343f925ad578a9da4d9a4cfff4e91b500d206c 2014-05-14 09:25:20

Laravelのプロジェクトを作成

適当なディレクトリにプロジェクトを作成

$ composer create-project laravel/laravel myapp --prefer-dist
$ cd myapp
$ php artisan serve

http://localhost:8000にアクセスして下記画面が表示されていればおk

laravel_welcome

参考

UbuntuにMySQLをインストール

環境

mysqlをインストール

まずはインストールされるバージョンを確認
まだ5.6は登録されていないみたいですね。

$ sudo apt-get update
$ apt-cache show mysql-server | grep Version
Version: 5.5.37-0ubuntu0.12.04.1
Version: 5.5.22-0ubuntu1

aptでインストール

$ sudo apt-get install mysql-server
$ mysql --version
mysql  Ver 14.14 Distrib 5.5.37, for debian-linux-gnu (x86_64) using readline 6.2

設定

設定ファイルはバックアップしておきましょう

$ cd /etc/mysql
$ cp my.cnf my.cnf.org

文字コードなどを設定

$ sudo vi my.cnf

下記を追記

[client]
default-character-set = utf8

[mysqld]
skip-character-set-client-handshake
character-set-server  = utf8
collation-server      = utf8_general_ci
init-connect          = SET NAMES utf8

設定を反映させるためmysqlを再起動

$ sudo service mysql restart

mysqlにログイン

$ mysql -u root -p

ステータスをチェック

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.5.37, for debian-linux-gnu (x86_64) using readline 6.2

Connection id:          37
Current database:    
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.5.37-0ubuntu0.12.04.1 (Ubuntu)
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/run/mysqld/mysqld.sock
Uptime:                 19 min 17 sec

Threads: 1  Questions: 112  Slow queries: 0  Opens: 171  Flush tables: 1  Open tables: 41  Queries per second avg: 0.096
--------------

起動、停止、再起動

$ sudo service mysql start
$ sudo service mysql stop
$ sudo service mysql restart

プロセスの確認

$ ps aux | grep mysqld
mysql    1461  0.0  4.2 492564 42912 ?        Ssl  06:40   0:00 /usr/sbin/mysqld
hoge     3372  0.0  0.0  14572   948 pts/0    S+   06:51   0:00 grep --color=auto mysqld

MySQLGUIで管理

$ sudo apt-get install mysql-workbench

参考

Nginx, Unicornで作るRailsアプリ

環境

Railsアプリ

Railsはインストール済みとする。

とりあえず適当にプロジェクトの作成

$ rails new blog

nginxのインストール

aptでnginxの公式リポジトリを使うように設定する。

$ sudo vi /etc/apt/sources.list.d/nginx.list

nginx.listに下記を追記

deb http://nginx.org/packages/ubuntu/ precise nginx
deb-src http://nginx.org/packages/ubuntu/ precise nginx

PGP公開鍵を追加する必要があるらしい

$ curl http://nginx.org/keys/nginx_signing.key | sudo apt-key add -

インストール可能なバージョンを確認

$ sudo apt-get update
$ apt-cache show nginx | grep Version
Version: 1.4.7-1~precise  ## 最新のバージョンが確認できればおk
Version: 1.1.19-1ubuntu0.6
Version: 1.1.19-1ubuntu0.5
Version: 1.1.19-1

nginxのインストール

$ sudo apt-get install nginx
$ nginx -v
nginx version: nginx/1.4.7

nginxの設定
/etc/nginx/conf.d/default.conf

upstream backends {
    server 127.0.0.1:3000;
}

server {
   listen 80;
    server_name localhost;

    location / {
        if (-f $request_filename) { break; }
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_pass http://backends;
    }
}

Unicornのインストール

Gemfileにunicornを追加

gem 'unicorn'

bundleでサクッとインストール

$ bundle install

設定ファイルの作成
config/unicorn.rb

# config:utf-8
# unicorn.rb

# process count
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 4)

# 15秒でWorkerをkillしてタイムアウト
timeout 15

# trueにしておくとダウンタイムが発生しないらしい
preload_app true

# 使用するポート番号を指定
listen 3000

# Capistranoを使うときに設定
pid "/path/to/rails/tmp/pids/unicorn.pid"

# ログの設定
stderr_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT'])
stdout_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT'])

before_fork do |server, worker|
    old_pid = "#{server.config[:pid]}.oldbin"
    if File.exists?(old_pid) && server.pid != old_pid
        begin
            Process.kill("QUIT", File.read(old_pid).to_i)
        rescue Errno::ENOENT, Errno::ESRCH

        end
    end

    defined?(ActiveRecord::Base) and
        ActiveRecord::Base.connection.disconnect!
end

after_fork do |server, worker|
    Signal.trap 'TERM' do
        puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
    end

    defined?(ActiveRecord::Base) and
        ActiveRecord::Base.establish_connection
end

def rails_root
    require "pathname"
    Pathname.new(__FILE__) + "../../"
end

taskの作成
lib/tasks/unicorn.rake

namespace :unicorn do

    # Tasks

    desc "Start unicorn"
    task(:start) {
        config = rails_root + "config/unicorn.rb"
        env = ENV['RAILS_ENV'] || "development"
        sh "bundle exec unicorn_rails -D -c #{config} -E #{env}"
    }

    desc "Stop unicorn"
    task(:stop) { unicorn_signal :QUIT }

    desc "Resta unicorn with USR2"
    task(:restart) { unicorn_signal :USR2 }

    desc "Increment number of worker processes"
    task(:increment) { unicorn_signal :TTIN }

    desc "Decrement number of worker processes"
    task(:decrement) { unicorn_signal :TTOU }

    desc "Unicorn pstree (depends on pstree command)"
    task(:pstree) do
        sh "pstree '#{unicorn_pid}'"
    end


    # Helpers

    def unicorn_signal signal
        Process.kill signal, unicorn_pid
    end

    def unicorn_pid
        begin
            File.read(rails_root + "tmp/pids/unicorn.pid").to_i
        rescue Errno::ENOENT
            raise "Unicorn doesn't seem to be running"
        end
    end

    def rails_root
        require "pathname"
        Pathname.new(__FILE__) + "../../../"
    end

end

unicorn起動

$ rake unicorn:start

動作確認

http://localhost/ にアクセスできればおk

その他

参考

間違えてユーザーの所属グループを上書きしてしまった時

環境

所属グループが消えとるんだが(;´Д`)

よしhogeユーザーをnewgrpグループに追加しようと思い、下記コマンドを実行した

$ usermod -G newgrp hoge

その後に、sudoを使ったら何故かpermission denyとか言って怒られる。
何故だろうと思い$ id -aで所属グループを確認したらnewgrp以外消えとるんだが(;´Д`)

どうやら$ usermod -G ...だとグループの追加ではなく上書きで変更するらしい。
そんな事知らずに今まで使ってたんだが…

そんな訳で、一旦recovery modeでログイン
最初に登録されていたグループ一覧は

$ cat /etc/group- | grep hoge

で確認できるはず。

$ mount -o rw,remount /  ## これをしとかないと次のコマンドを実行できないよ
$ usermod -G adm,cdrom,...,plugdev hoge

これで、グループが元に戻せるはず。

ユーザーの所属グループを追加したいとき

$ gpasswd -a hoge newgrp

これでいけるらしい。

参考

初めてのRuby on Rails

目的

Railsをインストールして動作確認する

環境

環境の確認

$ ruby -v
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin13.0]

$ gem -v
2.2.2

Railsのインストール

Gemを使ってRailsをインストール

$ gem install rails
$ rbenv rehash  ## rbenvを使っているので更新を反映
$ rails -v
Rails 4.0.4

Railsアプリケーション

Railsアプリを新規作成しサーバーを起動する。
ちゃんと起動できていれば http://localhost:3000/ にページが表示されるはず。

$ rails new blog
$ cd blog
$ rails server  ## サーバー起動

参考

Macでシステム情報を確認する方法

Linuxでは /proc/cpuinfo とかを見ればシステム情報がわかるが、
Macでシステム情報を見たいときは system_profiler コマンドを使えばいいらしい

ハードウェア情報が見たいときはこんな感じ

$ system_profiler SPHardwareDataType
Hardware:

    Hardware Overview:

      Model Name: MacBook Pro
      Model Identifier: MacBookPro11,1
      Processor Name: Intel Core i5
      Processor Speed: 2.4 GHz
      Number of Processors: 1
      Total Number of Cores: 2
      L2 Cache (per Core): 256 KB
      L3 Cache: 3 MB
      Memory: 8 GB
      Boot ROM Version: MBP111.0138.B03
      SMC Version (system): 2.16f58
      Serial Number (system): ABCDEFGHIJKL
      Hardware UUID: AAAAAAAA-BBBB-CCCC-3939-DDDDDDDDDDDD

取得できる情報一覧

$ system_profiler -listDataTypes
Available Datatypes:
SPParallelATADataType
SPUniversalAccessDataType
SPApplicationsDataType
SPAudioDataType
SPBluetoothDataType
SPCameraDataType
SPCardReaderDataType
SPComponentDataType
SPDeveloperToolsDataType
SPDiagnosticsDataType
SPDisabledSoftwareDataType
SPDiscBurningDataType
SPEthernetDataType
SPExtensionsDataType
SPFibreChannelDataType
SPFireWireDataType
SPFirewallDataType
SPFontsDataType
SPFrameworksDataType
SPDisplaysDataType
SPHardwareDataType
SPHardwareRAIDDataType
SPInstallHistoryDataType
SPNetworkLocationDataType
SPLogsDataType
SPManagedClientDataType
SPMemoryDataType
SPNetworkDataType
SPPCIDataType
SPParallelSCSIDataType
SPPowerDataType
SPPrefPaneDataType
SPPrintersSoftwareDataType
SPPrintersDataType
SPConfigurationProfileDataType
SPSASDataType
SPSerialATADataType
SPSPIDataType
SPSoftwareDataType
SPStartupItemDataType
SPStorageDataType
SPSyncServicesDataType
SPThunderboltDataType
SPUSBDataType
SPNetworkVolumeDataType
SPWWANDataType
SPAirPortDataType

rbenvで作るRuby開発環境 for Mac OS X

目的

Macに複数バージョンのRubyを入れる

環境

  • OS X 10.9.2
  • Homebrew 0.9.5

デフォルトで入ってるRubyの確認

$ ruby -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]

Homebrew

Mac OS X 用のパッケージ管理ソフト
今回はこれを使ってRuby等をインストールしていく

インストール方法

$ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

homebrew

rbenv

Rubyの環境切り替えツール

インストール方法

$ brew install rbenv ruby-build

パスの追加

## ~/.bash_profile に追加
export PATH=$HOME/.rbenv/bin:$PATH
eval "$(rbenv init -)"

profileを再読み込み

$ source ~/.bash_profile

Rubyのインストール

$ rbenv install -l  ## インストール可能なRuby一覧表示
$ rbenv install 2.0.0-p451  ## ちょっと時間かかる(;´Д`)ハァハァ
$ rbenv install 2.1.0
$ rbenv install 2.1.1
$ rbenv rehash
$ rbenv versions ## インストール済みのRuby一覧表示
* system (set by /Users/owner/.rbenv/version)
2.0.0-p451
2.1.0
2.1.1

Rubyの切り替え

指定ディレクトリ内での切り替え

$ rbenv version
system (set by /Users/owner/.rbenv/version)
$ ruby -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]

$ rbenv local 2.1.1
2.1.1 (set by /Users/owner/workplace/.ruby-version)
$ ruby -v
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin13.0]

rbenv
eval


とりあえずRubyの切り替えができるようになったのでおk?

Gemも環境別に設定できたほうがいいと思うが
Gemに関してはよく分かってない、というかRuby自体よく分かってないので
そこら辺は保留に・・・

参考

http://m-tkg.hatenadiary.jp/entry/2013/12/06/180650
http://qiita.com/emadurandal/items/a60886152a4c99ce1017