Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save perfectfoolish/5573271 to your computer and use it in GitHub Desktop.
Save perfectfoolish/5573271 to your computer and use it in GitHub Desktop.
#################################
#
# 本清单基于 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.github.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
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
#################################
#
# 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 apache2 mysql-client mysql-server
sudo apt-get install -y libmysqlclient-dev # for mysql2 gem
cd happycasts/
bundle
# for passenger
sudo apt-get install -y apache2-prefork-dev libcurl4-openssl-dev libaprutil1-dev
gem install passenger
rbenv rehash
passenger-install-apache2-module
sudo vim /etc/apache2/http.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
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<happycasts_production.sql
#################################
#
# PART 5: 完成了上面几步,happycasts 就已经可以在浏览器中运行了
# 但是一般我还会装一下一些工具
#
#################################
sudo apt-get install ffmpeg # happycasts need this to get the video duration
sudo apt-get install tig tree ack-grep # make using git,vim things more comfortable on production server
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment