Vagrant(CentOS6.5)にchefでRails4.1 + Ruby2.1.2 + Nginx + Unicorn + MySQL環境を作る
何かいつも同じ事やってる気がするので自分のためにもまとめておきます。
- Vagrant のインストール
公式サイトから最新版(執筆時は1.6.3)をダウンロードしてインストール
Vagrant - VirtualBox を公式サイトからインストール
公式サイトから最新版(執筆時は4.3.12)をダウンロードしてインストール
- Boxの追加
$ vagrant box add centos65 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
==> box: Adding box 'centos65' (v0) for provider: box: Downloading: https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box||<==> box: Successfully added box 'centos65' (v0) for 'virtualbox'!
その他のBoxは下記にあるので、そこから別のBOXをダウンロードしてインストールしてもOKA list of base boxes for Vagrant - Vagrantbox.es
作成出来たBOXを一応確認
$ vagrant box listcentos65 (virtualbox, 0)
- Vagrantfileの作成
どこか任意の場所にディレクトリ作成
$ mkdir -p /vagrant/develop
$ cd /vagrant/develop
$ vagrant init
$ vi Vagrantfile
# -*- mode: ruby -*-
private_networkはお好きなIPでどうぞ
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "centos65"
config.vm.network "private_network", ip: "192.168.33.11"
config.vm.synced_folder "./data", "/vagrant_data"
#config.vm.network :forwarded_port, guest: 8080, host: 8080
config.vm.provider :virtualbox do |vb|
# Use VBoxManage to customize the VM. For example to change memory:
vb.customize ["modifyvm", :id, "--memory", "512"]
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
end
Encoding.default_external = 'UTF-8'
end
vb.customizeも別に無くてもいいと思います。フォワードしたいポートがあれば、以下のようにコメントアウト外して記載してください
#config.vm.network :forwarded_port, guest: 8080, host: 8080
- Syncフォルダの生成
# config.vm.synced_folder "./data", "/vagrant_data"
この記載でここのdataフォルダをvagrant内の/vagrant_dataに結び付けたいのでディレクトリを作成しておきます
$ mkdir data - Vagrantの起動
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Fixed port collision for 22 => 2222. Now on port 2200.
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
default: Adapter 2: hostonly
==> default: Forwarding ports...
default: 8080 => 8080 (adapter 1)
default: 22 => 2200 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2200
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
SSHが確認できたら一度またホストに戻ります。
-
SSHの設定
起動したVMをknife-solo(後述)から簡単に扱えるようにするため、ssh-configを~/.ssh/configに追記しておく。
$ vagrant ssh-config --host development >> ~/.ssh/config
$ cat ~/.ssh/config
Host development
HostName 127.0.0.1
User vagrant
Port 2200
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/YOUR_ID/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
$ ssh development
Last login: Wed Jul 16 04:53:22 2014 from 10.0.2.2
[vagrant@vagrant-centos65 ~]$ logout
Connection to 127.0.0.1 closed. -
ホストにknife-soloのインストール
$ gem install knife-solo
$ knife configure
knife configureを実行すると色々聞かれるが、とりあえずは全部デフォルトで - knife-soloを使ってChefレポジトリを初期化
$ knife solo init chef-repo
# vagrant_develop用のcookbookの雛形を生成
$ cd chef-repo
# yumパッケージ関係
$ knife cookbook create yum -o site-cookbooks
# nginxインストールのため
$ knife cookbook create yum-epel -o site-cookbooks
# nginx
$ knife cookbook create nginx -o site-cookbooks
# git
$ knife cookbook create git -o site-cookbooks
# ps axu | grep mysql + ruby
$ knife cookbook create rbenv-ruby -o site-cookbooks
# MySQL
$ knife cookbook create mysql -o site-cookbooks
# iptables止めるため
$ knife cookbook create iptables -o site-cookbooks
全レシピはここに置いてあります。
全体的なディレクトリ構成はこんな感じです。
$ pwd
/vagrant/develop
[/vagrant/develop]$ lsVagrantfile chef-repo/ data/
[/vagrant/develop]$ cd chef-repo/
[/vagrant/develop/chef-repo]$ lsBerksfile cookbooks/ data_bags/ environments/ nodes/ roles/ site-cookbooks/
[/vagrant/develop/chef-repo]$ cd site-cookbooks/
[/vagrant/develop/chef-repo/site-cookbooks]$ lsgit/ iptables/ mysql/ nginx/ rbenv-ruby/ yum/ yum-epel/
- nodes/development.jsonを作成し編集する。
$ vi /vagrant/develop/chef-repo/nodes/development.json{
"run_list": [
"recipe[yum]",
"recipe[yum-epel]",
"recipe[git]",
"recipe[nginx]",
"recipe[mysql]",
"recipe[rbenv-ruby]",
"recipe[iptables]"
]
} - knife soloの準備
$ knife solo prepare development
Bootstrapping Chef...
Preparing... ########################################### [100%]
1:chef ########################################### [100%]
Thank you for installing Chef! - chefの実行
$ knife solo cook development
20分ぐらいたぶんかかります。
# まっさらな状態からプロビジョニングし直したい場合
$ vagrant destroy -f && vagrant up && knife solo prepare development && cd chef-repo && knife solo cook development - インストール状況の確認
vagrantに入って諸々のインストール状況を確認してみます
$ vagrant ssh
$ ps axu | grep nginx
vagrant 5495 0.0 0.1 103240 852 pts/0 S+ 05:56 0:00 grep nginx
root 9075 0.0 0.3 97180 2008 ? Ss 05:43 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx 21216 0.0 0.4 97568 2352 ? S 05:44 0:00 nginx: worker process
$ ps axu | grep mysql
vagrant 5497 0.0 0.1 103240 852 pts/0 S+ 05:56 0:00 grep mysql
$ rbenv versions
root 20302 0.0 0.0 108164 72 ? S 05:44 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql 20552 0.1 10.5 1075884 53092 ? Sl 05:44 0:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
* 2.1.2 (set by /usr/local/rbenv/version)
$ ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
という事で良さそうに見えます。
- Railアプリの設定
実はここで http://192.168.33.11/ を見ても 404 Not Found なのでRailsアプリを新規で作成してみます。
実際はMacにもRuby on Railsの同じ環境が入っている人が多いと思いますのでMac上というかホストサイドから直接やってもいので、syncディレクトに設定した /vagrant_data にRailsアプリを作りたいと思います。
実はそのためにchefでnginxのドキュメントルートの設定を /vagrant_data/public/ にしてありました。
$ cat /etc/nginx/conf.d/192.168.33.11.conf
upstream unicorn {
server unix:/tmp/unicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name 192.168.33.11;
root /vagrant_data/public/;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://unicorn;
break;
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /vagrant_data/public/;
}
}vagrant上にて
$ cd /vagrant_data/
$ bundle initWriting new Gemfile to /vagrant_data/Gemfile
$ vi Gemfile+ gem 'rails', '4.1.1'
$ bundle install --path vendor/bundle
$ bundle exec rails new . --skip-test-unit --database=mysql
gem 'unicorn'
gem 'therubyracer', platforms: :ruby
のコメントアウトを外す
変更後のGemfile# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.1.1'
# Use mysql as the database for Active Record
gem 'mysql2'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.3'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', platforms: :ruby
# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring', group: :development
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use unicorn as the app server
gem 'unicorn'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
# Use debugger
# gem 'debugger', group: [:development, :test]$ bundle install --without production
Fetching gem metadata from https://rubygems.org/...........
Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.
などと言われたので素直にupdateする
$ bundle update - お試しページの作成をしてみる
$ bundle exec rails g controller Roots index
※`autodetect': Could not find a JavaScript runtime.
のエラーが出たら gem 'therubyracer' が有効になってるか確認
Routeの変更
$ vi config/routes.rb
Rails.application.routes.draw do
+ root :to => 'roots#index'
+ #get 'roots/index'
$ vi config/database.yml
+ password: root_passwd
$ bundle exec rake db:create - config/unicorn.rbの作成
# -*- coding: utf-8 -*-
RAILS_ROOT = File.expand_path("../..", __FILE__)
listen "/tmp/unicorn.sock"
pid "tmp/pids/unicorn.pid"
# ワーカの数を指定
worker_processes 2
# リクエストのタイムアウト秒を指定
timeout 15
# ダウンタイムをなくすため、アプリをプレロード
#preload_app true
stdout_path File.expand_path('log/unicorn-stdout.log', ENV['RAILS_ROOT'])
stderr_path File.expand_path('log/unicorn-stderr.log', ENV['RAILS_ROOT'])
# before_fork, after_forkではUnicornのプロセスがフォークする前後の挙動を指定できる
# 以下のおまじないの詳細はドキュメント参照
before_fork do |server, worker|
defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!
old_pid = "#{server.config[:pid]}.oldbin"
unless old_pid == server.pid
begin
Process.kill :QUIT, File.read(old_pid).to_i
rescue Errno::ENOENT, Errno::ESRCH
end
end
defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
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
/etc/nginx/conf.d/192.168.33.11.conf の記載のパスが一致すること
upstream unicorn {
server unix:/tmp/unicorn.sock fail_timeout=0;
} - 起動
$ bundle exec unicorn_rails -c config/unicorn.rb -E development -D
http://192.168.33.11/
にアクセスしてRoots#index
Find me in app/views/roots/index.html.erb
が見えれば成功
Unicornを終了したい時は直接プロセスを切るらしい
$ ps -ef | grep unicorn | grep -v grepvagrant 7685 1 0 06:46 ? 00:00:00 unicorn_rails master -c config/unicorn.rb -E development -D
vagrant 7688 7685 8 06:46 ? 00:00:26 unicorn_rails worker[0] -c config/unicorn.rb -E development -D
vagrant 7690 7685 9 06:46 ? 00:00:28 unicorn_rails worker[1] -c config/unicorn.rb -E development -D$ kill -9 7685
$ !ps
ps -ef | grep unicorn | grep -v grep
Unicornのエラーなどが見たければ
$ tail -f log/unicorn-stderr.log-
I, [2014-07-16T06:46:37.781500 #7688] INFO -- : Refreshing Gem list
I, [2014-07-16T06:46:37.784650 #7690] INFO -- : Refreshing Gem list
-
今回の全ファイルは以下のGitHubに置いてあります。
(Error Domain=kCLErrorDomain Code=5 "The operation couldn’t be completed. (kCLErrorDomain error 5.)")
iBeacon関連をやっていた際に突然ハマったので。
proximityUUIDも確実にあっている状態で locationManager#didStartMonitoringForRegionまで呼ばれるのにその後#didDetermineStateまで飛んで来ない事があり、#monitoringDidFailForRegionを呼んでみると下記エラーが検出されました。
monitoringDidFailForRegion:IDENTIFYregion(Error Domain=kCLErrorDomain Code=5 "The operation couldn’t be completed. (kCLErrorDomain error 5.)")
調べるとStackOverFlowなどで、登録数が20を超えてるとかiOSのバージョンの問題とか諸々引っかかりますがどれも該当してないので散々悩んでソース削ったりxcode6をアンインストールしたりしましたが、結論iPhoneを再起動すれば直りました。。。
GCEにDockerでnginxサーバ構築でImmutable Infrastructureに初挑戦
と言う事で話題になっているので挑戦しました。
普通にMac上でDockerだけやっても他の方の事例があるので、今回はGoogle Compute Engine上にサーバを作ってそのサーバをホストサーバとしてDockerを入れました。
■環境の確認
・Mac OSX 10.9 Mavericksそういえば、asiaリージョンいつの間にか出来ましたね
・Google Compute Engine centos-6-v20140415
■GCE関連の設定
まずはhttps://console.developers.google.com/projectから、「CREATE PROJECT」して適当に新規プロジェクトを作ります。こんな感じでdocker-serverを構築します。
プロジェクトが出来たら左のメニューから
「Compute Engine」->「VM Instances」で画面上に出る「NEW INSTANCE」
でインスタンスを生成します。
※クレジット情報が必要です。
これでサーバにログインするために、Mac側にgcutilのSDKが必要なので設定します。
gcutil Tool - Google Compute Engine — Google Developers
に書いてある通りなのですが、下記コマンドでDLします。
$ curl https://dl.google.com/dl/cloudsdk/release/install_google_cloud_sdk.bash | bashDLが終わったら
$ gcloud auth login
をするとブラウザでauthの認証が開くので許可してあげます。
ターミナル戻るとproject_id入れるよう支持が出ると思いますので入れてあげて下さい。
プロジェクト IDは例えばこんな感じの文字列です。「spheric-mesh-223」
(何か不明なのがあれば、コンソール https://console.developers.google.com/project から確認してください)
上記が済めば下記コマンドでサーバにSSHできます。
$ gcutil --service_version="v1" --project="プロジェクト名" ssh --zone="asia-east1-a" "docker-server"一番最初だけ、パスフレーズ入れて鍵を勝手に生成してくれるようなのでちょっと待ちます。
※このコマンドは「Compute Engine」->「VM Instances」画面にサーバリストが出ていて
リストの一番右の「SSHボタン」を押す事によっていつでも取り出せます。
ログインが成功すると、ターミナルは
[ke-16@docker-server ~]$これでGCEサーバへのSSHは終了です。簡単ですね〜
みたいに表示されると思います。(たぶんユーザ名は勝手にとってきてますね)
ちなみにgcutilのコマンドメモとして
■ファイルを転送したい(push)
$ gcutil --project="プロジェクト名" push "docker-server" /Users/USER_NAME/Documents/a.txt /tmp■ファイルを取得したい(pull)
みたいな感じですね。オプションは「push サーバー名 転送元 転送先」です。
$ gcutil --project="プロジェクト名" pull "db01" /tmp/my.cnf /Users/USER_NAME/Documents■FireWall変えたい
単純にpushの逆です。
$ gcutil addfirewall port-80 --description="Open up port 80." --allowed="tcp:80”--project="プロジェクト名"のような感じです。
$ gcutil addfirewall port-443 --description="Open up port 443." --allowed="tcp:443”--project="プロジェクト名"
$ gcutil addfirewall port-3306 --description="Open up port 3306." --allowed="tcp:3306”--project="プロジェクト名"
それでこのサーバをホストにDockerを用いてnginxサーバを構築したいのですが、これに関してはGitHubに先にまとめてしまったので
そちらをご覧下さい。
k1row/Docker · GitHub
いろんなサイトを参考にさせて頂きながら、Dockerfileを構築しました。
Dockerの個人的な感想としては、
・設定ファイル(Dockerfile)は可読性が高いので設定は容易
・実際いろんなリポジトリがすでにあり便利(Home | Docker Index)
・言われている通り、サーバ毎の環境を気にしなくて良くなるので効果的
・ただ、yumが結構重いのですがこれはこんなものなのでしょうか?
apt-getだとキャッシュすべしみたいな記載が散見されたのですが
・高負荷になった時にどういう挙動になるのか謎なので確かにproductionだとまだ怖い
・もっと細かく作るなら、Docker単体と言うよりは他のプロダクトとの組み合わせになりそう
って感じですかねー。でもとってもいいですね。
# 参考URL
Docker公式
Docker Documentation
Dockerfile - Docker Documentation
Run Reference - Docker Documentation
memorycraft: Dockerってなんじゃ?(docker+nginxで複数コンテナにWEBサーバーをたてる)
MacからSSH接続可能なDockerコンテナを作る。 - Less is Best
Docker Memo | すてねこのダンボール箱
私の Docker TIPS - Qiita
Dockerでnginxサーバー立ててみた。あとDockerの使い方とか。 - Less is Best
はじめてのDocker on EC2 | Developers.IO
VirtualBoxで Cannot register the hard disk エラーが発生した時の対応方法
・Mac OSX 10.9 Mavericks
・VirtualBox 4.3.8
・Vagrant 1.5.1 (直接的にはVagrantは関係ないですが)
とあるPC(Windows8)で作ったVagrant + VirtualBoxの仮想環境をファイルコピーして別のPC(MacBookPro)に移行した際に、vagrant up しようとすると(あるいは、VirtualBoxのアプリケーションを起動しようとすると)このようなエラーに遭遇しました。
Cannot register the hard disk 'xxx.vmdk' {3bd54a8c-c6f4-472b-a61a-cbe6b38b1e4f} because a hard disk 'xxx.vmdk' with UUID {3c27fa37-fc16-4f05-bba3-b80c87919d50} already exists.
良くある話のようで、検索するといくつも引っかかるのですがversionが違うと微妙に対応が違うようなので記載しておきます。
結論下記コマンドにてUUIDを変更し、VirtualBoxのアプリケーションから仮想ディスクを割り当て直す事で解消しました。
VBoxManage -nologo internalcommands sethduuid "xxx/VirtualBox VMs/centos64-x86_64/box-disk1_4.vmdk"
サンフランシスコ界隈で、日本人が美味しいと思うおすすめレストラン
この度約2年半のサンフランシスコ生活を終え帰国する事になりました。
初めて旅行で来て、ガイドブックに載っているままSears Fine Foodに行って、硬いベーコンを食べてから3年半。。。(笑)
サンフランシスコダウンタウンで美味しいお店どこ?と聞かれたりするのでというのと、自分で忘れないようにというのも含めて私が美味しかったと思うサンフランシスコでおすすめのレストラン・食べ物屋さん・コーヒーショップなどを書き残しておきます。
私をご存じの方は今後は聞かずにここから行って下さい(笑)
・行った事無いお店は載せません。すべて私自身が食べて美味しいと思ったお店です。
※写真とか上手く取れていなかったり向き、サイズが一致しないなど多数ありますがどうか大目に見て頂ければ幸いです。
Italian
■Delfina
http://www.yelp.com/biz/delfina-san-francisco
まずは私も一番好きなPizzaレストランです。
超有名なのでご存知の方も多いかと。
Mission District と Filmore にあります。
どちらも行った事あるのですが、開店後すぐ(Missionは12時、Filmoreは11時かな)に行くとほぼ待たずに
1巡目で入れます。(予約できないはずなので常にwaiting listになります)
オススメです。ピザも美味しいですがサイドメニューも美味しいです。特にMeat ballはオススメです
■Flour + Water
http://www.yelp.com/biz/flour-water-san-francisco
何でこんなにYelpの評価が低いのわからないですが、間違いなく美味しいです。
パスタが有名なのですが、ピザも十分美味しかったです。
ですが本当に予約がいつも取れません。(空いてても平日の5:30とか)
私が行けたのは、Opentableを火曜とか水曜あたりにチェックしてるとその週の週末にたまにキャンセルが出るのでそこですぐ予約するという感じです。
お店の席の1/4ぐらいはたぶんwalk in用になってて、4:30とかから並べば1巡目で入れるかもです。
イカスミのパスタが本当に美味しいのでぜひ試してみて下さい。
■Beretta
http://www.yelp.com/biz/beretta-san-francisco
6人以上とかじゃないと予約できないですが、SFにしてはそんなに値段が高くないですし、メニューもバラエティに飛んでますしバーも併設されているのでオススメです。
■Locanda
http://www.yelp.com/biz/locanda-san-francisco
Yelpだとサービスで★1つの人も沢山いますが、そんな事無く良いサービスで美味しい料理でした。
あと全体的な量はアメリカっぽくなくて少ないのでそこがダメな評価もありましたが。
ですがBarも充実していて、いろいろなカクテルやウィスキーをオーダーできます。
料理では特にFried Oliveは美味しかったです。
あとカルボナーラが有名なようなので頼みましたがちょっとGoat Cheeseが多めなのでその独特の臭みが苦手な人は別のパスタをオーダーした方が良いと思います。
■Perbacco
http://www.yelp.com/biz/perbacco-san-francisco
Financial Districtにある、有名イタリアンですね。
高いですが美味しいと思います。
奥のカウンターに座ると目の間でずっとプロシュートをスライスしているのですが
時々味見と称して何枚かくれます。
こちらも予約必須ですが、Opentableに対応してるので予約の敷居は低いですね(笑)
■Sotto Mare
http://www.yelp.com/biz/sotto-mare-san-francisco
North Beachにある、超おススメイタリアンシーフードです。
どれでも美味しいですが、Cioppinoが本当に美味しいです。
1階がカウンターとテーブル4、5個?で地下もあります。
値段もそんなに高くはない方だと思います。
予約必須です。ちなみに2人以下と当日予約は出来ません。(以前そう言われました)
チャイナタウンを歩いて抜けていくか、タクシーで行くのが良いと思います。
■E' Tutto Qua
http://www.yelp.com/biz/e-tutto-qua-san-francisco
○○○ 自分のフォルダから写真検索中です ○○○
North Beachにあるイタリアンです。
店員さんがおそらくほぼ全員イタリア系アメリカ人な感じでとても陽気です。
■Capannina
http://www.yelp.com/biz/capannina-san-francisco
Union Stにある雰囲気の良いイタリアンレストランです。
航空ショーの日の帰りにフラッと立ち寄ったのですが、意外とすんなり入れました。
American【Steak】
■Harris' Restaurant
http://www.yelp.com/biz/harris-restaurant-san-francisco
結構年配の方が多い大人のステーキハウスといった感じです。熟成肉は美味しいです。
ここは結構量が半端じゃ無いと思いますので、ガッツリ食べたい方にはオススメです。
■House of Prime Rib
http://www.yelp.com/biz/house-of-prime-rib-san-francisco
ローカルには一番有名なSteak Houseだと思います。
本当にこうMedium Rareで食べる肉肉しいのが食べたい方にはオススメですよ。
■5A5 Steak Lounge
http://www.yelp.com/biz/5a5-steak-lounge-san-francisco
結構日本っぽいのがメニューにちらほら見えました。シェフの方が日本に関係しているのですかね?
ステーキは大変美味しかったですが、ソースじゃなくて単純な塩・コショウのみで食べれば良かったかもです。
■Ruth's Chris Steak House
http://www.yelp.com/biz/ruths-chris-steak-house-san-francisco
オススメがいくつかある中で、our most popular filetと書いてあるのと、prime NY Stripがあったので店員にどちらがオススメか聞いたら、正直NY stripだと(ちょっと意外でしたが)
それを信じて注文したのですが、これは本当に美味しかったです。
SFで食べたステーキで一番美味しかったと思います。
■Alexander's Steakhouse
http://www.yelp.com/biz/alexanders-steakhouse-san-francisco
SOMAエリアの夜はちょっと歩いて行くには怖い雰囲気にある、元ミシュランスターのステーキ店です。
サービスは流石に良くて、無料でいろいろ出てきます(最初びっくりしますが)
一番最後にこの店のシンボル(?)ともいえる綿菓子が出てきます。
メニューも豊富でステーキも大きくて良いのですが、5A5と同じで単純な塩コショウのみで食べたい気がします。
あと値段は流石に1,2を争うぐらい高いですね。。。
いずれも超有名・超高級ステーキハウスなので、知ってる方多いと思いますが。
せっかくアメリカに来たのだから、多少高くてもアメリカの肉!肉!肉という方に。
ちょっと町の中心部からは離れてしまいますが、ほとんどがVanNess(101)という通り沿いでお互いすぐ近くにあります。
バスかタクシー(10分、15分ぐらいです)で行くのが良いと思います。
いずれも予約必須ですね。ドレスコードは無いですが襟付きぐらいは着て行った方がいいと思います。
American【Burger】
■In-N-Out Burger
http://www.yelp.com/biz/in-n-out-burger-san-francisco
○○○ 自分のフォルダから写真検索中です ○○○
カリフォルニア(西海岸)の有名バーガーチェーンですね。
多くの人がこのお店の特徴とか面白い点をブログに書かれているのでぜひ検索してみて下さい。
アニマルスタイルが私もオススメです。
■SuperDuper
http://www.yelp.com/biz/super-duper-burgers-san-francisco-4
○○○ 自分のフォルダから写真検索中です ○○○
SFの有名バーガー店ですね。Marketにあるのはいつも混んでいるので、Mission & 4th (Targetの横)の方がオススメです。
でもカンファレンスの時はダメですね。。。
日本人なら、Mini Comboで十分と思います。
■Gotts
http://www.yelp.com/biz/gotts-roadside-san-francisco-2
フェリービルディングの一番端にある、有名バーガーチェーン店です。
場所がらいつも混んでいます。若干高いですが、ジューシーで美味しいですね。
■Roam Artisan Burgers
http://www.yelp.com/biz/roam-artisan-burgers-san-francisco
オシャレストリートUnionにあるバーガーショップです。
Yelpの評価だと、Bisonのバーガーをみんな進めますが若干やっぱり独特の獣っぽい臭みがあるので私はやっぱりBeefの方が好きです。
非常にジューシーで本当に美味しいですね。
■Palomino
http://www.yelp.com/biz/palomino-san-francisco-san-francisco
○○○ 自分のフォルダから写真検索中です ○○○
意外とお昼のバーガーがおいしいんです。ですのでここに入れたのですが基本はアメリカンレストランです。
水曜の夜はワインのボトルが半額になるのでオススメです。
ローカルも多いので綺麗なBay Bridgeを見ながら食事を楽しめる良いレストランと思います。
American【New & Traditional】
■Frances
http://www.yelp.com/biz/frances-san-francisco
ミシュラン1つ星の超人気店ですね。
私はたまたま5:30pmから予約が取れて良い席に座れました。
これもFlour + Waterと同じ方式で、その週の前半からちょこちょこ空きをOpentableでチェックしてました。
店内は若干こじんまりとした感じですが木目調の落ち着いた雰囲気で、話声も大きくなく心地良い空間でした。
料理はどれも見た目は繊細な感じですが、味がしっかり合って赤ワインと相性バッチリに感じました。
あと特別にリクエストするパンがあるのですが、(メニューに書いてありました)美味しかったです。
■commonwealth
http://www.yelp.com/biz/commonwealth-san-francisco
数ある高級Americanレストランでもここはオススメです。
他の同様のジャンルのレストランより単価は若干安めだと思いますが、味は他のところにも引けを取らないと思います。
料理ははやり繊細で見た目も綺麗な品々です。ただ量はここもちょっと少な目かと思いますが日本人は十分です。
最初に出てくるサワー系のチップもとても美味しいです。
こちらも予約必須です。
Mexican
あまり日本にいた頃は馴染みの無かったメキシコ料理ですが、本当に美味しくてこちらに来てたぶんもっとも価値観の
変わった料理だと思います。
噂(2014年2月現在)だとChipotleとTacoliciousが日本に上陸する(した)と聞いたのですが、、、
■Chipotle Mexican Grill
http://www.yelp.com/biz/chipotle-mexican-grill-san-francisco-2
サンフランシスコ市内、周辺に幾つもあるチェーンです。
日本から来てこれを食べた人で美味しくないと行った人を聞いた事ないです。
もちろん私も本当に好きで週1か2週に1度は食べてます。昔はもっと食べてました(笑)
Extra lettuce が私には超重要です。
12pm - 1pm は本当にどの店舗も混むので並ぶの覚悟か避けた方が良いです。
11:30am ぐらいであれば、全然スムースに買えますので。
■Tacolicious
http://www.yelp.com/biz/tacolicious-san-francisco-7
サンフランシスコ市内に幾つか店舗があるようですが、私はMission店に良く行きました。
メキシカンのためのエリアと言っても過言でないMissionで私も1番のメキシカンレストランだと思います。
特に「made-to-order guacamole」つまりフレッシュワカモレ + トルティーヤチップスなんですが
これはマストで食べたい1品です。ちなみにこれだけでも to go できました(笑)
予約は取れないので、行ってwaitingリスト記載後に待ちます。ですがバーが併設されているのと
なぜか店内から行き来できる隣の店にもバーがあるので、マルガリータでも飲んで待つのが良いと思います。
Asian【Chinese & Thai & Vietnamese】
■Crustacean
日本人駐在員ご用達のレストランですね。
私が行った時回り日本人グループが5、6組居たと思います。
有名なのがこのダンジネスクラブですが、これももちろん美味しいですがそれ以外の料理もどれも美味しくて
行って良かったレストランですね。
ちなみにダンジネスクラブは値段は時価表記で私が行った時は$45でした。
ちなみに12月頭にFisherman's wharfのカニの看板があるところの屋台っぽいお店から、Ghirardelli Squareの方に
合わせてたぶん10〜15店舗近く道沿いにお店があるのですが、その辺りの一角でダンジネスクラブ$9.50〜から売ってました。
1杯丸々じゃないのかもしれませんが(すみません、それは食べては無いのですが)少しは楽しめるのではないでしょうか?
Clam chowderと食べると美味しいと思いますよ!
■Bangkok Noodles
http://www.yelp.com/biz/bangkok-noodles-san-francisco
Union Squareというかユニクロの目の前にあるタイ料理屋さんで、超おススメです。
お酒が出ないのが入店後は残念ですが、そのため回転率が高いので並んでいてもそこまで待ちません。
値段も超良心的です。
SFのタイ料理ではここが一番美味しいと思います。ガパオ最高です!
■Basil Thai Restaurant & Bar
http://www.yelp.com/biz/basil-thai-restaurant-and-bar-san-francisco
SoMaエリアにあるタイ料理屋さんです。
安心してどのメニューも食べられるお店だと思います。値段も高くないです。
お店は綺麗なのですが、結構空いてる率が高いのでサッと行って美味しいタイ料理食べるのに重宝してます。
■Lers Ros Thai
http://www.yelp.com/biz/lers-ros-thai-san-francisco
おもいっきりTenderloinの中にあるので、サンフランシスコに慣れていない方には正直オススメできませんが
ここのFried Riceがサンフランシスコで一番美味しいと思います。
お店の中はとても綺麗で清潔感もあり、サービスもバッチリ価格も安いので辿り着けば本当にオススメです。
(昼間なら何とか大丈夫と思います。夜は行くこと自体を絶対オススメしません)
Pad Thai, Larb Gaiなども美味しです。後はエビが本当にプリプリでした
■Great Eastern Restaurant
http://www.yelp.com/biz/great-eastern-restaurant-san-francisco
○○○ 自分のフォルダから写真検索中です ○○○
Chinatownにある箱の大き目の中華料理屋さんです。
正直アメリカのChineseは油が私には臭くて基本美味しくないんですよね。。。
ですがここがChinatownでは一番美味しいと思います。
私があまりYelpの☆を信用しなくなったお店の一つですが、私の中では全然☆3.5のお店ではないです。
横浜中華街より手軽に、中華が楽しめる感じです。
昼も夜もどちらもおススメです。昼はDumplingがメインなのですが、Shrimp Dumplingは特におススメです。
予約できればした方がいいですが、待っても30分ぐらいで入れます。ファミリーも結構多いです。
■Delicious Dim Sum
http://www.yelp.com/biz/delicious-dim-sum-san-francisco
※写真撮ってないです
カウンターとちょっとした席しかない、to go用のDim Sum屋さんですが美味しかったです。
Shrimp, Porkはもちろん、Chivesが美味しいよとたまたま来ていた向かいのお店のオバさんに教えられて食べました。
どれも美味しかったです。値段も安いのでチャイナタウンの散歩中に小腹が空いたら良いと思います。
ただSpring rollだけはシナモンが入っててダメでした。
■Perilla
http://www.yelp.com/biz/perilla-san-francisco
Yelpを信用しないで私を信用して下さい(笑)私の仲間もみんなここのPhoが好きです。
ランチのみの営業ですが、Phoを食べたくなったらここが一番オススメです。
お昼時はいつも混んでいるので多少待ちますが、回転率が高いので15分程度と思います。
Moscone centerからも近いのでぜひ!
でも有名なのはガーリックヌードル(ニンニク焼きそば)なんですよね。ガツンといきたい方は良いと思います。
Other
■Restaurant Ducroix
http://www.yelp.com/biz/restaurant-ducroix-san-francisco
○○○ 自分のフォルダから写真検索中です ○○○
Financial Districtにあるこじんまりとしたフランス料理屋さんです。
そんなに高くもなく、比較的ライトな感じで味は美味しいフランス料理を食べられると思います。
仕事とかの商談系でも使える感じだと思います。予約した方が無難ですね。
■Zarzuela
http://www.yelp.com/biz/zarzuela-san-francisco?ob=1
ちょっと遠いのですが、Russian Hillにあるこのスペイン料理屋はオススメです。
Gambas ajillo, Paella, Callosどれも美味しいですし、サービスも良いお店です。
予約できないので、一巡目(5:30pm)で入れないと1時間は待ちます。
■B44
http://www.yelp.com/biz/b44-san-francisco
○○○ 自分のフォルダから写真検索中です ○○○
Financial Districtの裏路地に、お店が数件並んでいるうちの一つなのですが
ワイワイガヤガヤとスペイン料理が食べたければおススメです。
(サンフランシスコってスペイン系の人もたくさんいるのにスペイン料理屋さんってあまり無いんですよね)
予約するのが無難とは思いますが、いつもひょいっと行って結構入れます。
■Schmidt's
http://www.yelp.com/biz/schmidts-san-francisco-2
ドイツ系の料理も以外と少ないのですが、ビールとソーセージで乾杯したかったらココかなと。
■Cha Cha Cha
http://www.yelp.com/biz/cha-cha-cha-san-francisco-4
○○○ 自分のフォルダから写真検索中です ○○○
Mission & 19th か Haight & Ashburyのちょっと奥にあるCaribbeanのお店です。
基本待つので、まずはバーカウンターでサングリアをジョッキで頼んで待つのがこの店
ルールのようにみんなします。でもサングリアの味はもちろん美味しですが、空きっ腹に飲むので当然酔います(笑)
どちらもちょっとダウンタウンから遠いですが、タクシーで20分ぐらいですかね。
日本ではあまり馴染みのない料理ですが結構オススメです。
Cajun Shrimpという甘目のエビチリみたいなのがオススメです。パンに付けると美味しいソースですね。
Brunch
■Tartine Bakery & Cafe
http://www.yelp.com/biz/tartine-bakery-and-cafe-san-francisco
言わずと知れたMission地区の超有名Bakeryです。
Banana Cream Tartが絶品で一番有名と思いますが、それ以外にもサンドイッチなど食べてる人は多いです。
私は普通のプレーンのcroissantが美味しくて感動しました。
Banana Cream Tartは朝早く行き過ぎるとまだ出来てない時もあるのでお金だけ払って後ほど引き取りなります。(信用できます)午後は土日であれば2時か3時には大抵売り切れてます。
いつ行っても基本30分は待つと考えた方がいいです。ですが並ぶ価値はあると思います。
■Bar Tartine
http://www.yelp.com/biz/bar-tartine-san-francisco
Tartine Bakery & Cafeのレストラン版がBar Tartineです。
昼も夜もやっているので使い勝手は良いと思います。
サンドイッチはやっぱりこちらも美味しいです。
■Taylor Street Coffee Shop
http://www.yelp.com/biz/taylor-street-coffee-shop-san-francisco
ヒルトンの真横にある、朝食おススメのお店です。
Tenderloinのすぐ近くですが、ここはギリギリ大丈夫なところです。
ちょっと高いですが美味しいですし量が多いです。
アメリカなので、当然コーヒーはおかわり自由です。
お店が狭いので、結構待つ事が多い気がします。
■Olea
http://www.yelp.com/biz/olea-san-francisco
○○○ 自分のフォルダから写真検索中です ○○○
Nob Hillというちょっと上の方に坂をあがったところにあるのですがオシャレで美味しいブランチのお店ですね。
ちょっと高い&待ちますが、良いアメリカンブランチを体験できると思います。
■Golden Coffee Shop
http://www.yelp.com/biz/golden-coffee-shop-san-francisco
※写真撮ってないです
区分けはTenderloinになりますが、この辺は大丈夫です。
ちょっとユニオンスクエアのホテル街からは外れます。
おそらく中国系の方がやられてるブランチのお店なのですが、いっつも並んでます。
値段も高くもなく、卵系のメニューが多いです。あとポテトが美味しいですね。
■Honey Honey Cafe & Crepery
http://www.yelp.com/biz/honey-honey-cafe-and-crepery-san-francisco
○○○ 自分のフォルダから写真検索中です ○○○
Union Square近郊であれば、私はここが一番おススメです。
メニュー豊富・量も豊富です。
土日は朝から昼過ぎまで結構並んでるイメージです。
ですが回転率が高いので、そこまで待たないと思います。
やっぱりEgg Benedictですよね!
Fast Food
■Sushirrito
http://www.yelp.com/biz/sushirrito-san-francisco
とりあえず手軽に寿司っぽいものを食べたかったら意外とおススメです。
持ち帰りだけなので$8ぐらいだけで購入できます。
2店舗あって、Moscone centerからも近いのがあります。
私はGeishaがオススメです。
■Cafe Algiers
http://www.yelp.com/biz/cafe-algiers-san-francisco
アメリカなのでこの手のサンドイッチショップは星の数ほどあるのですが、その中でもAlgiersはオススメです。
私も週1ぐらいで良く食べてました。
Sliced Wheat、Spicy turkey、Spicy mustardとトッピングすべてが定番でした。
Japanese
レストラン系最後は日本食です。基本日本食はすごく値段が高いです。
自宅で食べる時はほぼ日本食なのですが、それでもやっぱり日本食のレストランも行きたくなる訳で。
■Roku (Japa Curry)
http://www.yelp.com/biz/izakaya-roku-san-francisco
まずYelpにある味に対する評価は全く信用出来ないと思います。(そもそも日本人が評価してないですしね)
そもそもサンフランシスコって外食したら高いと思ってるんですが日本食は更に高いんです。。。
でもRokuは何といっても美味しくて安いんです。本当に良心的な値段でありがたいです。
またサンフランシスコなので、当然日本ほどラーメンは食べ歩き出来ないですし正直そんなに期待もしてないのであまりサンフランシスコで
ラーメンを食べなかったのですが、私はRokuのガーリックトンコツが一番美味しいと思います。
Rokuはjapa Curryというフードトラックも展開されているので、良くJapa curryのカレーか日替わりを食べていました。
こちらももちろんオススメです。
■Chotto
http://www.yelp.com/biz/chotto-san-francisco
○○○ 自分のフォルダから写真検索中です ○○○
日本酒のFlightがある日本風居酒屋のお店です。ここもとても美味しいので日本人のお客さんが多いと思います
予約必須ですね。
■Chaya Brasserie
○○○ 自分のフォルダから写真検索中です ○○○
フェリービルディングの反対側にある、Asian Fusionのお店ですね。
普通に寿司が出てくるので、このカテゴリーに入れました。
料理はどれを頼んでも基本美味しいです。
若干高いですが、でもオススメです。
■Ryoko's Japanese Restaurant & Bar
http://www.yelp.com/biz/ryokos-japanese-restaurant-and-bar-san-francisco
ユニオンスクエアの有名SUSHIレストランですね。
かなり味も形も日本のそれに近いものが出てきます。イクラとかウニとか本当に普通に美味しいです。
箱が大きいので、人数いても入れますし場所柄利便性が高いので基本オススメですが
うるさすぎるのと、値段もうちょっと安いと嬉しいなと思います。
あと基本待ちます。
■Sushi On North Beach - Katsu
http://www.yelp.com/biz/sushi-on-north-beach-katsu-san-francisco
○○○ 自分のフォルダから写真検索中です ○○○
North BeachにあるSUSHIレストランなのですがオススメです。
大将が日本人の方でとっても安心です。
すしも刺身もオススメです。
あとは、実際私もCalifornia RollとかDragon Rollとかイメージ上毛嫌いしていてまったく食べなかったのですが
こちらのShrimpのDragon Rollがあってそれは本当に美味しくてびっくりでした。
あと何より値段も良心的です。
■Izakaya Sozai
http://www.yelp.com/biz/izakaya-sozai-san-francisco
○○○ 自分のフォルダから写真検索中です ○○○
居酒屋となってるだけあって、確かに他のどの日本レストランよりも居酒屋的なメニューが多いと思います。
ラーメンも美味しかったです。
こちらもダウンタウンからちょっと遠いのですがオススメです。予約は必須と思います。
http://www.yelp.com/biz/izakaya-sozai-san-francisco
【番外編】郊外
■Sushimaru
http://www.yelp.com/biz/sushi-maru-san-jose
San JoseのJapan Townにある回転ずし風のお寿司屋さんなのですが私はココが一番好きなお寿司屋さんでした。
何でこんなにYelpの評価が低いのか理解できません。
値段も他のお寿司屋さんに比べれば全然割安ですし、焼き魚とかそばとかメニューも豊富で本当にオススメです。
■Gombei Japanese Restaurant
http://www.yelp.com/biz/gombei-japanese-restaurant-san-jose
San JoseのJapan Townにある他、何店舗か展開されているようですが要するに定食みたいなのが食べたかったらオススメです。
特に焼き魚系とお刺身系のメニューが豊富で、やっぱり魚食べたくなりますよね〜
■Usagi
http://www.yelp.com/biz/usagi-san-mateo
San Mateoのカルトレイン駅近くにある日本の洋食屋さんですね。
本当に美味しいです。日本で食べるより安くて多くて美味しい洋食が食べられます。
色々食べようと思いつつ、行くといつもメンチカツ頼んでしまうんですよね。。。(笑)
■Ippuku
http://www.yelp.com/biz/ippuku-berkeley-2
○○○ 自分のフォルダから写真検索中です ○○○
Berkeleyにある日本風居酒屋なのですが、焼き鳥が本当に美味しいですね。
ちょっと高い気はしますが、でも焼酎あり、日本酒ありで駐在している方で日本の居酒屋が
恋しい方にはオススメです。
■Kiraku
http://www.yelp.com/biz/kiraku-berkeley
こちらもBerkeleyにある日本風居酒屋なのですが、本当に美味しかったです。
Ippukuよりちょっと安い気がしますが、メニュー豊富でこちらも焼酎がたくさんあっていいお店です。
Bar & Lounges
■Press Club
http://www.yelp.com/biz/press-club-san-francisco
ダウンタウン、オシャレなお店、美味しいワインならばこの店かと。
Market StからYerba Buena Centerに抜ける道にあります。
広々とした地下に沢山の席がありワインが充実しています。
値段はやっぱり高めだと思います。$20 - $30ぐらいのフライトを私は良く頼みます。
予約をした方が無難ですが、金曜じゃなければ結構入れると思います。
あと何て言いますか、テレビ的な「アメリカのオシャレな空間」が味わえます(笑)
ちなみにPress Clubの向かいのメキシカンレストランのバーもオススメです。
■The Hidden Vine
http://www.yelp.com/biz/the-hidden-vine-san-francisco
Finacial Districtにあるワイン中心のラウンジです。
サンフランシスコ4大コーヒー
最後にサンフランシスコ4大コーヒーについて触れておきたいなと。
サンフランシスコにはこれら以外にも特にMissionやFinacial Districtには沢山美味しいコーヒー屋が
あります。いろいろ試してみるのが良いと思います。
でも結局スタバが一番行ったと思いますが(笑)
■Blue Bottle Coffee Co.
http://www.yelp.com/biz/blue-bottle-coffee-co-san-francisco-8
やっぱりここが一番私は好きですね。
店舗数も他のコーヒーショップに比べれば一番多くて良いと思います。
どこも混んでいますが、フェリービルディングの正規窓口が一番混んでますね。。。
フェリービルディングで買うなら、横の通路にあるSecret Counterで買う事をオススメします
■Four Barrel Coffee
http://www.yelp.com/biz/four-barrel-coffee-san-francisco
店舗のイメージはシックでオシャレという感じです。
私は4大コーヒーの中では一番酸味が強いと思います。
Tartine Bakery & CafeでもFour Barrelのコーヒー出してたりしてますね。
■Ritual Coffee Roasters
http://www.yelp.com/biz/ritual-coffee-roasters-san-francisco
Mission地区にメインがある、赤の可愛らしいマークのコーヒーショップです。
店舗はいつも満席ですね。私のイメージではBlue Bottleのフェリービルディングの次にいつも並んでます。
苦味、酸味ともにそこそこ強めで全体的に重厚な口当たりに思えます。
ドリップコーヒーはどれももっと酸味が強いと思います。
ちなみにこのRitualの回りのValencia Stには他にも沢山コーヒーショップがあります。
土日の昼間はどこもいつも一杯です。
■Sightglass Coffee
http://www.yelp.com/biz/sightglass-coffee-san-francisco
味は薄めで酸味もそんなに強くない印象ですが、何となくズズズッと飲み続けてしまう
そんな美味しさです。
カップとかも可愛らしいオシャレで良い感じなんですよね。
フェリービルディングのファーマーズマーケットでも出店しているので、実店舗までいけない方でも飲めますよ。
レギュラーコーヒーを注文した場合個人的には
酸味 :
Four Barrel > Ritual > Sightglass > Blue Bottle
苦味 :
Ritual > Four Barrel > Sightglass > Blue Bottle
濃さ :
Blue Bottle > Ritual > Four Barrel > Sightglass
かなと感じました。
行きたかったけど行けなかったお店
■Tadich Grill
http://www.yelp.com/biz/tadich-grill-san-francisco
良く行くエリアに合ったのですが何となく行きませんでした。
■State Bird Provisions
http://www.yelp.com/biz/state-bird-provisions-san-francisco
予約が取れなさすぎて萎えました。walk inでトライしてみれば良かったかもですね
■Kokkari Estiatorio
http://www.yelp.com/biz/kokkari-estiatorio-san-francisco
私の行ける日に予約が出来なさすぎて行けませんでした。
■Nopa
http://www.yelp.com/biz/nopa-san-francisco
ここも予約が取れなさすぎて萎えました。
■SPQR
http://www.yelp.com/biz/spqr-san-francisco
何となく他のイタリアンで満足してしまったかもです。。。
■Gary Danko
http://www.yelp.com/biz/gary-danko-san-francisco
■Don Pisto's
http://www.yelp.com/biz/don-pistos-san-francisco-2
ずっと気になっていてちょいちょい覗いていたのですが、このお店も予約出来なくて。。。
知り合いはここはオススメと言っていました。
■Orenchi Ramen
とっても有名なのは知っていたのですが、場所がら何となく行く機会がなかったです。
でも今はダウンタウンにbeyondという店舗があるのですね。
https://www.yelp.com/biz/orenchi-ramen-santa-clara
最後に、私がお店に行く時にはもちろんローカルやその他日本人から聞く事も多いのですが
それ以外ですとやはりサイトで調べて行くのですが、特にオススメなのがこちらの2つです。
■SF BiteBite!
http://sfbitebite.com/
大変よく参考にさせて貰いました。知ってはいたものの行ってなくて、SF BiteBite!さんの記事を
見てから行こうと決めた店も数多く(笑)
サンフランシスコにいる方も、これからいらっしゃる方も必見と思います。
■H.I.S サンフランシスコ支店便り
http://ameblo.jp/his-sanfrancisco/
流石旅行のプロの方たちが書かれてるだけあって、大変参考になります。
またレストランのみならず、周辺のアクティビティなどいろいろあるのでこちらも必見だと思います。
Napa界隈のレストランとかワイナリーなども時間があれば書いていきたいなと思っています。
これからサンフランシスコに来られる方たちの参考になれば幸いです。
Macでnginx+php-fpm+phalconをインストール
最近PHPがなぜか多くなってきたのですが、私も速いと言われているPHPFramework Phalcon High performance PHP framework を使う必要が出てきたので、環境をMacに作った際のメモを残します。
基本管理がめんどくさいのでbrewでやるようにしています。
■環境の確認
・Mac OSX 10.9 Mavericks■まずはbrewで最新版PHP5.5.6(2013/11/15現在)のインストールです。
・nginx 1.4.3
・PHP/PHP-FPM 5.5.6
・Phalcon 1.2.4
$ brew tap homebrew/dupes■PEARの設定です。
$ brew tap josegonzalez/homebrew-php
$ brew options php55
$ brew install php55 --with-fpm --with-debug --with-mssql --with-homebrew-openssl
$ brew info php55
$ chmod -R ug+w /usr/local/Cellar/php55/5.5.6/lib/php■PHPUnit & Phingのインストールしておきます。
$ pear config-set php_ini /usr/local/etc/php/5.5/php.ini
$ pear config-set auto_discover 1■xdebugもインストールしておきます。
$ sudo pear install pear.phpunit.de/PHPUnit
$ sudo pear install pear.phing.info/phing
$ brew install php55-xdebugでこの時点で一度LINKをし直しておきます。
$ brew unlink php55各種バージョン確認をしておきます。
$ brew link php55
$ php-fpm -v
PHP 5.5.6 (fpm-fcgi) (built: Nov 15 2013 13:59:40) (DEBUG)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
$ phpunit --version
PHPUnit 3.7.28 by Sebastian Bergmann.
$ phing -v
Phing 2.6.1
で次からいよいよPhalconのインストールですが、まずはどんなのがあるのか確認しておきます。
$ brew search phalconと言う事なのでphp55-phalconをインストールします。
php53-phalcon php54-phalcon php55-phalcon
■phalconインストール
$ brew install php55-phalcon
コマンドを叩くと下記のようなログが出ます。==> Downloading https://github.com/phalcon/cphalcon/archive/v1.2.4.tar.gz
######################################################################## 100.0%
==> PHP_AUTOCONF="/usr/local/opt/autoconf/bin/autoconf" PHP_AUTOHEADER="/usr/local/opt/autoconf/bin/autoheader" /usr/local/Cellar/php55/5.5.6/bin/phpize
==> ./configure --prefix=/usr/local/Cellar/php55-phalcon/1.2.4 --with-php-config=/usr/local/Cellar/php55/5.5.6/bin/php-config --enable-phalcon
==> make
==> Caveats
To finish installing phalcon for PHP 5.5:
* /usr/local/etc/php/5.5/conf.d/ext-phalcon.ini was created,
do not forget to remove it upon extension removal.
* Restart your webserver.
* Write a PHP page that calls "phpinfo();"
* Load it in a browser and look for the info on the phalcon module.
* If you see it, you have been successful!
==> Summary
/usr/local/Cellar/php55-phalcon/1.2.4: 2 files, 2.2M, built in 30 seconds
「/usr/local/etc/php/5.5/conf.d/ext-phalcon.ini was created」と出ているので、このファイルをチェックすると
$ cat /usr/local/etc/php/5.5/conf.d/ext-phalcon.iniextensionを書いてくれているようなので、確認をすると
[phalcon]
extension="/usr/local/Cellar/php55-phalcon/1.2.4/phalcon.so"
$ php -i | grep -i phalconうん、Unableみたいです。。。
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/Cellar/php55/5.5.6/lib/php/extensions/debug-non-zts-20121212/phalcon.so' - dlopen(/usr/local/Cellar/php55/5.5.6/lib/php/extensions/debug-non-zts-20121212/phalcon.so, 9): image not found in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library '/usr/local/Cellar/php55/5.5.6/lib/php/extensions/debug-non-zts-20121212/phalcon.so' - dlopen(/usr/local/Cellar/php55/5.5.6/lib/php/extensions/debug-non-zts-20121212/phalcon.so, 9): image not found in Unknown on line 0
Additional .ini files parsed => /usr/local/etc/php/5.5/conf.d/ext-phalcon.ini,
phalcon
Phalcon Framework => enabled
Phalcon Version => 1.2.4
よくよく見るとと、「/usr/local/Cellar/php55/5.5.6/lib/php/extensions/debug-non-zts-20121212/phalcon.so」にアクセスしようとしてるみたいですが、brewでインストールした際に「==> ./configure --prefix=/usr/local/Cellar/php55-phalcon/1.2.4」のログが出ていたので、確認すると
$ ls -al /usr/local/Cellar/php55-phalcon/1.2.4
total 4840
drwxr-xr-x 4 user admin 136 11 15 14:08 ./
drwxr-xr-x 3 user admin 102 11 15 14:08 ../
- rw-r--r-- 1 user admin 272 11 15 14:08 INSTALL_RECEIPT.json
- rwxr-xr-x 1 user wheel 2473796 11 15 14:08 phalcon.so*
と言う事なので、このディレクトリにあるようです。
方法としては、/usr/local/etc/php/5.5/conf.d/ext-phalcon.iniのextensionパスを変えてもいいと思いますが、とりあえずコピーします。
$ cp /usr/local/Cellar/php55-phalcon/1.2.4/phalcon.so /usr/local/Cellar/php55/5.5.6/lib/php/extensions/debug-non-zts-20121212/改めて確認します。
$ php -i | grep -i phalcon問題なさそうです。
Additional .ini files parsed => /usr/local/etc/php/5.5/conf.d/ext-phalcon.ini,
phalcon
Phalcon Framework => enabled
Phalcon Version => 1.2.4
nginxの設定とphp-fpm.confの設定はhttp://d.hatena.ne.jp/ke-16/20130306/1362536213:過去のエントリをご覧ください。
nginx自体はbrewで最新にしておきます。
$ brew install nginx
==> Downloading http://nginx.org/download/nginx-1.4.3.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/nginx/1.4.3 --with-http_ssl_module --with-pcre --with-ipv6 --sbin-path=/usr/local/Cellar/nginx/1.4.3/bin/nginx --with-cc-opt
==> make
==> make install
==> Caveats
Docroot is: /usr/local/var/wwwThe default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.To have launchd start nginx at login:
ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents
Then to load nginx now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
Or, if you don't want/need launchctl, you can just run:
nginx
==> Summary
/usr/local/Cellar/nginx/1.4.3: 7 files, 876K, built in 20 seconds
また、Phalconの公式サイトにもnginxの設定ドキュメントがありました。Nginx Installation Notes — Phalcon 1.3.0 documentation
Phalconの動作確認のため、公式サイトからチュートリアルを取得します。
$ cd /var/www公式サイトのようにnginx.confを変更したのですが、下記のようにエラーが出てしまうので諦めて以前から動いている形にしました。
$ git clone https://github.com/phalcon/tutorial.gitpublicとappフォルダがあると思いますが、publicフォルダをdocument rootとするみたいなのでnginx.confの設定をそこにします。
[error] 57954#0: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost"そうすると、nginx.confは以下のようになります。
user nginx;これで準備が整ったはずなので、実際に動かしてみます。
worker_processes 2;pid /var/run/nginx.pid;
events {
worker_connections 1024;
}http{
include /usr/local/etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;#sendfile on;
keepalive_timeout 0;
server_tokens off;
underscores_in_headers on;
server {
listen 80;
server_name localhost;
charset utf-8;
rewrite_log on;root /usr/local/var/www/public;
index index.html index.htm index.php;location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?_url=/$1 last;
}
}location ~ ^(.+\.php)(/.*)?$ {
fastcgi_split_path_info ^(.+\.php)(/.*)?$;set $script_filename $document_root$fastcgi_script_name;
if (!-e $script_filename) {
return 404;
}fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;fastcgi_param APPLICATION_ENV development;
fastcgi_param SCRIPT_FILENAME $script_filename;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}location ~ /\.ht {
deny all;
}
}
}
チュートリアルのソースに中身関しては、参考にさせて頂いたこちらのサイトが良いと思います。
Phalcon PHPを使ってみる。 » 新人Webエンジニアの記録。
php-fpmとnginxを起動します。
$ sudo php-fpm後はブラウザから http://localhost にて確認するだけです。
$ sudo nginx
後はDeveloper Toolもあって簡単にプロジェクト生成が出来るようです。
Phalcon Developer Tools — Phalcon 1.3.0 documentation
参考サイト
高速なPHPフレームワークPhalconを使ってみた~プロジェクト作成 - k-motoyan888's diary
では使い倒してその噂の速さと実感したいと思います。
Macにbrewでmysql5.5系をインストールする方法
Macでbrewコマンドを用いてmysql5.5系をインストールしたかったのですが、どうにもエラーが出てインストールできず
最新の適切な対応方法が見当たらなかったので、書き留めておきます。
2013/10/22現在の内容です。
現在 brew install mysql を行うとMySQL5.6系がインストールされます。
それをMySQL5.5系にしたいので下記のやり方にてインストールしようとします。
user@pc[/usr/local]$ cd /usr/local
user@pc[/usr/local]$ brew versions mysql
5.6.13 git checkout f60c8fb Library/Formula/mysql.rb
5.6.12 git checkout ed829a3 Library/Formula/mysql.rb
5.6.10 git checkout 48f7e86 Library/Formula/mysql.rb
5.5.29 git checkout 336c976 Library/Formula/mysql.rb
5.5.28 git checkout 5825f62 Library/Formula/mysql.rb
5.5.27 git checkout 93aecfa Library/Formula/mysql.rb
5.5.25a git checkout faaa6c1 Library/Formula/mysql.rb
5.5.25 git checkout 5bcd1f3 Library/Formula/mysql.rb
5.5.24 git checkout a977fbd Library/Formula/mysql.rb
5.5.20 git checkout f4009ef Library/Formula/mysql.rb
5.5.19 git checkout c2b8e87 Library/Formula/mysql.rb
5.5.15 git checkout 513c0f8 Library/Formula/mysql.rb
5.5.14 git checkout a840c4a Library/Formula/mysql.rb
5.5.12 git checkout 35b60ca Library/Formula/mysql.rb
5.5.10 git checkout 1f2b24e Library/Formula/mysql.rb
5.1.56 git checkout feae63a Library/Formula/mysql.rb
5.1.55 git checkout 0476235 Library/Formula/mysql.rb
5.1.54 git checkout 7077f84 Library/Formula/mysql.rb
5.1.53 git checkout fbee3a0 Library/Formula/mysql.rb
5.1.52 git checkout 7871a99 Library/Formula/mysql.rb
5.1.51 git checkout 0fc5ce3 Library/Formula/mysql.rb
5.1.49 git checkout 2e7d624 Library/Formula/mysql.rb
5.1.48 git checkout 75def21 Library/Formula/mysql.rb
5.1.47 git checkout 9d73887 Library/Formula/mysql.rb
5.1.46 git checkout ee9ecec Library/Formula/mysql.rb
5.1.45 git checkout 1ca6b6b Library/Formula/mysql.rb
5.1.44 git checkout 052d1f2 Library/Formula/mysql.rb
5.1.43 git checkout c4decd7 Library/Formula/mysql.rb
user@pc[/usr/local]$ git checkout 336c976 Library/Formula/mysql.rb
user@pc[/usr/local]$ brew install mysql
==> Downloading http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.29.tar.gz/from/http://cdn.mysql.com/
curl: (22) The requested URL returned error: 404
Error: Download failed: http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.29.tar.gz/from/http://cdn.mysql.com/
exit 1
そうすると上記のようにエラーが出てインストールできません。
user@pc[/usr/local]$ less Library/Formula/mysql.rb
require 'formula'class Mysql < Formula
homepage 'http://dev.mysql.com/doc/refman/5.5/en/'
url 'http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.29.tar.gz/from/http://cdn.mysql.com/'
version '5.5.29'
sha1 '40e26b193b6ece86ce97896c0c9c524d479e37be'
mysql.rbを見てると確実に5.5.29をダウンロードしようとしているので、コマンド等の間違いでは無さそうです。
いろいろ調べると、現在はMySQL5.6がstableなので5.5系は、途中でHomebrewの対応が終わっているらしい。
それでMySQL5.5.29(以下のバージョンすべてでしたが)のリンクがデッドリンクになっているためダウンロード出来ないらしい。
と言うことみたいでした。
(MySQLのサイトに行くと事実現在の5.5系は5.5.34が最新のようです。)
それで下記のgithubアカウントに辿り着いたので
https://github.com/Homebrew/homebrew-versions
ページ下部を見てみると
このように
>How do I install these formulae?
>
>Just brew tap homebrew/versions and then brew install.
>
>If the formula conflicts with one from mxcl/master or another tap, you can brew install homebrew/versions/.
>
>You can also install via URL:
>
>brew install https://raw.github.com/Homebrew/homebrew-versions/master/.rb
で、リストを眺めると
>mysql55.rb
があるので、中身を確認すると
どうやら出来そうな気がします。
class Mysql55 < Formula
homepage 'http://dev.mysql.com/doc/refman/5.5/en/'
url 'http://downloads.mysql.com/archives/mysql-5.5/mysql-5.5.30.tar.gz'
sha1 'd7e31246d29f6ed4a9c4b966d6896bf920b68351'
なので説明文にあった一番下のコマンドでインストールを試みると
無事インストール出来ました。
user@pc[/usr/local]$ brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql55.rb
######################################################################## 100.0%
==> Downloading http://downloads.mysql.com/archives/mysql-5.5/mysql-5.5.30.tar.gz
######################################################################## 100.0%
==> cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/mysql55/5.5.30 -DMYSQL_DATADIR=/usr/local/var/mysql55 -DINSTALL_MANDIR=/usr/local/Cellar/mysql55/5.5.30/share/man -DINSTALL_DOCDIR=/usr/local/Cella
==> make
==> make install
==> /usr/local/Cellar/mysql55/5.5.30/bin/mysql_install_db --verbose --user=Keiichiro --basedir=/usr/local/Cellar/mysql55/5.5.30 --datadir=/usr/local/var/mysql55 --tmpdir=/tmp
==> Caveats
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.To connect:
mysql -urootThis formula is keg-only: so it was not symlinked into /usr/local.
Conflicts with mysql, mariadb, percona-server, mysql-cluster, etc.
Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:LDFLAGS: -L/usr/local/opt/mysql55/lib
CPPFLAGS: -I/usr/local/opt/mysql55/include
To have launchd start mysql55 at login:
ln -sfv /usr/local/opt/mysql55/*.plist ~/Library/LaunchAgents
Then to load mysql55 now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql55.plist
Or, if you don't want/need launchctl, you can just run:
mysql.server start
==> Summary
🍺 /usr/local/Cellar/mysql55/5.5.30: 6405 files, 210M, built in 4.3 minutes
MySQLのインストールに限らず、brewコマンドでバージョンを指定してインストールしたい時に、curl: (22) The requested URL returned error: 404
みたいなエラーが出た場合に確認すると解決できるかもです。
ですが、まだ最後に罠がありました。
mysqlコマンドが出てきません。。。
なので、linkをしなければダメだろうと思い
とまたエラーになります。
user@pc[~]$ brew unlink mysqluser@pc[~]$ brew link mysql55
Warning: mysql55 is keg-only and must be linked with --force
Note that doing so can interfere with building software.
なので、支持通り
user@pc[~]$ brew link mysql55 --force
Linking /usr/local/Cellar/mysql55/5.5.30... 133 symlinks createduser@pc[/usr/local]$ mysql.server start
Starting MySQL
SUCCESS!
ということで無事起動確認もできました。