时间:2021-07-01 10:21:17 帮助过:39人阅读
1.安装ruby
由于系统中可能有多个ruby相关的项目,而不同的项目可能需要针对不同的ruby版本进行开发或者测试,所以系统当中可能需要安装多个ruby的版本。而这就需要相应的工具来管理已有版本和安装新版本。我这儿选用的是rbenv,也可以使用老牌的rvm。git clone git://github.com/sstephenson/rbenv.git ~/.rbenv echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc exec $SHELL添加ruby-build组件
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc exec $SHELL添加gem-rehash组件
git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash安装ruby(以ruby2.1.5为例)
wget -O ~/.rbenv/versions/ruby-2.1.5.tar.gz http://ruby.taobao.org/mirrors/ruby/2.1/ruby-2.1.5.tar.gz env RUBY_BUILD_MIRROR_URL=file:///home/ziven/.rbenv/versions/ruby-2.1.5.tar.gz# ~/.rbenv/bin/rbenv install 2.1.5其中wget是下载相应的ruby文件,这里是ruby-2.1.5.tar.gz
RUBY_BUILD_MIRROR_URL用来指定安装的ruby镜像路径,这里直接使用本地路径。注意本地路径后面应该加上#来结尾
2. 安装必要组件
因为我们一般采用bundler来管理项目需要的gems,所以此处是需要安装bundler的。gem sources --remove https://rubygems.org/ gem sources -a https://ruby.taobao.org/之后执行gem sources -l应该只有https://ruby.taobao.org/这一个源
gem install bundler
3.应用部署
a. clone web源码到合适位置
这里假设clone之后的源码放置到/opt/projectAb.安装依赖的gems
在项目的根目录执行:bundle install此处需要注意,根据不同的情况执行的命令可能略有差异。例如在生产环境部署时,可能需要执行
bundle install --deployment --without development test这样部署时,相关的依赖gems被安装到 projectA/vendor/bundle下面。尤其适合不同的项目依赖同一个gem的不同版本的时候使用。
c.数据库相关迁移
由于本项目是基于padrino所以需要执行:padrino rake --envir db:migrate需要注意的是,此处视情况可能需要使用bundle来执行该命令:
bundle exec padrino rake --envir db:migrate数据库迁移成功后,需要创建amdin账户。padrino默认在db/seeds.rb当中完成admin账户的创建。所以此处执行:
bundle exec padrino rake --envir seed执行过程当中会提示输入admin账户的邮箱跟密码
d.unicorn部署
此处可能需要相应的unicorn启动脚本,可以参照ruby-china的unicorn.rb来写。此处从略。bundle exec unicorn -E production -c unicorn.rb -D这样padrino server就已经正常启动了。如果unicorn.rb当中监听的是tcp端口,那么此时访问相应的url应该可以打开了。如果是采用的监听unix socket的方式,那么还应该使用nginx(或者apache)来做反向代理。
4. nginx的安装配置
a. nginx的安装
nginx就是可以安装linux一般软件的安装方式来安装。推荐使用源码安装方式。此处简略起见,暂以包管理器的安装方式进行安装:sudo apt-get install nginx-full
b. nginx的配置
upstream myserver { server unix:/tmp/projectA.sock fail_timeout=0; } server { listen 7788; server_name localhost; client_max_body_size 10M; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } root /opt/projectA/web/public; try_files $uri $uri.html @app; location @app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://myserver; } }
unix:/tmp/projectA.sock进行处理。也即转发到刚刚我们的web服务器处理。
以上就介绍了nginx+unicorn部署ruby web环境,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。