万神劫

万物天地为剑,神鬼妖邪为剑
劫波万渡,宇宙苍穹尽为剑
是为万神劫!

8条评论 2012-06-20

Linode 部署 Klog 过程记录【CentOS 篇】

前言

我的这个 Rails Blog 是部署在 Linode VPS 上的,由于操作系统的差异,部署的过程跟本地虚拟机的环境安装还有些不同,本文详细记录了这些细节
本文对于想在 Linode 上部署 Rails 环境的同学同样有一定帮助
我的 Linode 购买的是 512M 内存的套餐,操作系统选择的是 CentOS 5.6

安装 rvm

可能由于操作系统版本不高,SSL 证书不齐的缘故,直接 curl 获取 rvm 会报错(因为是 https 协议)
所以先要禁用证书检查

echo insecure >> ~/.curlrc  
curl -L get.rvm.io | bash -s stable 
[[ -s "/usr/local/rvm/scripts/rvm" ]] && source "/usr/local/rvm/scripts/rvm"  

安装 Ruby

这步比较繁琐,因为操作系统缺少的东西太多了,而且很多必须手工安装

yum install -y gcc-c++
rvm pkg install zlib
rvm pkg install openssl
rvm install 1.9.3
rvm use 1.9.3 --default  

安装 Passenger

这步同样需要先做一些手工安装,先安装 passenger

yum install curl-devel
gem install passenger

安装 Nginx

我们选择手工安装,因为需要额外编译一个 Nginx 的 module
参见此文隐藏 Nginx + Passenger 的server header
将以下两个文件上传至服务器并解压

  • agentzh-headers-more-nginx-module-v0.16-0-gde77fd2.zip
  • nginx-1.0.15.tar.gz

然后执行以下命令,跟随安装向导提示操作


passenger-install-nginx-module  
2  <=== 即选择 2. No: I want to customize my Nginx installation.
/home/nginx-1.0.15  <=== 输入 Nginx 源码所在目录
/usr/local/nginx  <=== 填一下安装位置
--add-module=/home/agentzh-headers-more-nginx-module-de77fd2   <=== 填一下额外的安装参数
yes  <=== 输入 yes 开始安装

安装 Mysql 5.1

采用 rpm 包方式安装,先下载

wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-client-community-5.1.63-1.rhel5.i386.rpm/from/http://ftp.iij.ad.jp/pub/db/mysql/
wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-server-community-5.1.63-1.rhel5.i386.rpm/from/http://ftp.iij.ad.jp/pub/db/mysql/
wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-devel-community-5.1.63-1.rhel5.i386.rpm/from/http://ftp.iij.ad.jp/pub/db/mysql/

再安装

rpm -ivh MySQL-client-community-5.1.63-1.rhel5.i386.rpm 
rpm -ivh MySQL-server-community-5.1.63-1.rhel5.i386.rpm
rpm -ivh MySQL-devel-community-5.1.63-1.rhel5.i386.rpm

最后执行以下命令进行配置

/usr/bin/mysql_secure_installation   
service mysql restart

安装 ImageMagick

yum install ImageMagick

安装 Git

安装 Git 主要是为了方便从 Github 获取 Klog 代码

rpm -Uvh http://repo.webtatic.com/yum/centos/5/latest.rpm
yum install --enablerepo=webtatic git-all

部署

部署代码

使用 git 获取 Klog 代码,然后安装 gem ,并预编译 assets

cd /home
git clone git://github.com/edokeh/klog.git
cd klog
bundle install
rake assets:precompile

部署数据库

然后根据情况修改 database.yml ,建议只保留 production 的配置,然后执行

rake db:create
rake db:migrate
rake db:seed

配置 nginx 并启动

项目根目录下有 nginx.conf ,基本上你只需要简单修改一下即可使用,主要修改项包括

  • passenger_root
  • passenger_ruby
  • $server_host
  • $server_root

修改完后执行

cp nginx.conf /usr/local/nginx/conf
/usr/local/nginx/sbin/nginx

这里有一个与系统权限相关的注意点,请检查执行 nginx 的用户是否有权限访问应用目录所有的子文件和子目录
尤其是 /public/uploads 和 /log ,否则会出现文件上传失败,或是日志文件总是为空的异常
我这里偷了个懒,执行了一把 chmod -R 777 .

尾声

至此,访问你的域名,应该能看到博客主界面了
记得后台地址为 /admin ,初始管理密码为 password
如果要重启应用的话,执行 touch tmp/restart.txt
另外如果需要升级 Klog 代码的话,目前还挺麻烦的,准备最近弄个 Capistrano 脚本来简化这步的操作,请期待

comments powered by Disqus