2017.06.15追記
aptでruby-railtiesパッケージを入れる方法はgemの追加が難しいことが分かってきました。aptではruby本体のインストールにとどめ、残りはgemで入れる方法を採用しています。
apt -y install ruby-dev libmysqlclient-dev libmagick++-dev libcurl4-openssl-dev libssl-dev
gem install bundler mysql2 rails rmagick therubyracer passenger --no-ri --no-rdoc
最新のUbuntu16(Xenial)でRailsの「Welcome aboard」を出すまでの手順です。CentOSよりだいぶ手軽かも…。
注意事項
- どこを見渡してもrbenv一色で、このやり方はかなりマイナー?な可能性があります。ひょっとしたらとんでもないディスアドバンテージが潜んでるかも…。
- あくまで、Vagrant環境での構築手順です。セキュリティは一切考慮しません。
準備(vagrant + ubuntu)
まずは、vagrantに仮想環境を作ります。任意のディレクトリでボックスを初期化して。
mkdir ubuntu && cd ubuntu
vagrant init ubuntu/xenial64
生成されたVagrantfileの以下の行のコメントを外します。
config.vm.network "forwarded_port", guest: 80, host: 8080
仮想マシンを立ち上げてログイン。
vagrant up
vagrant ssh
ここから先はUbuntuのrootユーザで作業します。 sudo -i
などのコマンドで予めrootに昇格してください。
apt -y update
apt -y upgrade
apt -y install mysql-server apache2 apache2-dev libapache2-mod-passenger rails
apt -y install ruby-railties ruby-bundler ruby-mysql2 ruby-devise ruby-rmagick
途中でMySQLのパスワードを設定しなさい、と何度かダイアログが出ますが、全て無視(そのままエンター)。さらに、mysqlにログインして以下のようにユーザと権限を追加します。これで一般ユーザ(ubuntu)からもmysqlクライアントを使ってデータベースを操作することが出来るようになります。
mysql -e "create user 'ubuntu'@'localhost'"
mysql -e "grant all privileges on *.* to 'ubuntu'@'localhost'"
Rails
ここはubuntuユーザで作業します。まずはRailsのプロジェクト作成。
cd /vagrant
rails new railsapp --database=mysql
データベースの接続ユーザを先ほど追加した名前に変更します(rootのままでは接続できません)。
default: &default
:
username: ubuntu
空のデータベースを生成します。
rake db:create
UbuntuでRubyを入れると比較的新しい(執筆時点で2.3.1)バージョンが入るのですが、gemやbundlerがほとんど動作しない状況になってしまうようです(ここは不便なところですね)。その代わり、apt search ruby-(gemの名前)
で検索すると、メジャーなものが多く用意されているようです。 bundle
でエラーがでる場合は、aptからパッケージの追加を試みてください。
Apache2 + passenger
Webrickを立ち上げても勿論良いんですが、passengerを使って常に起動した状態にしてみます。
再びroot権限で作業します。
passengerが正しくインストールされているかどうかは、以下のコマンドで確認することができます。
passenger-config validate-install
以下のファイルを編集します。
<Directory /vagrant/>
AllowOverride All
Require all granted
</Directory>
DocumentRoot /vagrant/railsapp/public
PassengerAppEnv development
完了したら、Webサーバ(apache2)を再起動します。
service apache2 restart
以下のアドレスにアクセスして、おなじみの「Welcome aboard」が表示されたら成功です。
次はbootstrapの導入とscaffoldをやってみます。環境構築(2)