################################# # # 本清单基于 ubuntu 12.04, # 下个 ubuntu 的 LTS # 发出来后,会相应更新这里的内容。我的目标是按步执行可以零错误完成安装。 # 注意,本文件只是一个清单,不是一个可以安全执行的脚本 # ################################# # create a linode,login as root, and create a common user for all the tasks ssh root@the_ip_of_this_linode adduser peter --ingroup sudo su peter cd # go to /home/peter ################################# # # PART 1: 这一部分,和我在本地开发机器上搭建开发环境采用的步骤是完全一样的 # 我的开发机器也是 ubuntu 1204,一般我都喜欢保证本地开发环境和 server # 上部署环境的高度一致。 # ################################# echo "install ruby...." sudo apt-get -y install git-core curl # nice to add ~/.gitconfig before you run the rbenv-installer # since the installer going to feach from git repos, without the config, # trouble can happen. curl -k https://gist.github.com/happypeter/5524086/raw/ea998d6681e098d13774791b63a62fc26733eeea/gitconfig >>~/.gitconfig echo "now install rbenv..." curl -k https://raw.githubusercontent.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash # add the block to the end of ~/.profile export RBENV_ROOT="${HOME}/.rbenv" if [ -d "${RBENV_ROOT}" ]; then export PATH="${RBENV_ROOT}/bin:${PATH}" eval "$(rbenv init -)" fi source ~/.profile # I see libxslt1.1 libxml things installed here too, that's why gems like nokogiri will produce no error installing rbenv bootstrap-ubuntu-12-04 # this may require password, also works nicely for 14.04 rbenv install 1.9.3-p392 rbenv global 1.9.3-p392 echo "install bundler..." gem install bundler --no-ri --no-rdoc rbenv rehash echo "install rails ..." gem install rails # this is safer to put in a project's Gemfile sudo apt-get install -y nodejs # so that I dont need to install therubyracer ################################# # # PART 2: 下面是 happycasts 项目部署的具体内容 # 但是本部分的内容依然是服务器和开发机上步骤完全一样 # ################################# # add ssh key to github, so that you can get a read-write happycasts repo clone ssh-keygen -t dsa git clone git@github.com:happypeter/happycasts.git sudo apt-get install -y mysql-client mysql-server sudo apt-get install -y libmysqlclient-dev # for mysql2 gem cd happycasts/ bundle # for passenger and apache sudo apt-get install -y apache2 apache2-prefork-dev libcurl4-openssl-dev libaprutil1-dev gem install passenger rbenv rehash passenger-install-apache2-module # if your RAM is 512M, you may need: https://www.digitalocean.com/community/articles/how-to-add-swap-on-ubuntu-12-04 sudo vim /etc/apache2/httpd.conf # add passenger lines and a virtualhost to http.conf sudo apachectl graceful ################################# # # PART 3: 产品环境下的一些具体操作 # 和本地开发机器上有较大不同 # ################################# cd config cp database.example.yml database.yml # 并在其中添加数据库密码 bundle exec rake db:create RAILS_ENV=production # 这步为我们创建数据库,名为 happycasts_production touch tmp/restart.txt # need to create this for the first time, since tmp/ is in .gitignore ################################# # # PART 4: 这一部分的内容一般我会放到一个脚本中,放在本地做一键部署 # https://gist.github.com/happypeter/3634487 # ################################# bundle exec rake db:migrate RAILS_ENV=production bundle exec rake assets:precompile mysql -uroot happycasts_production