`
pingfeng
  • 浏览: 59143 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

在Freebsd下搭建Rails生产环境

阅读更多

freebsd以其简洁、高效、安全完全征服了我,相见恨晚。其气质就是有追求的程序一样,什么可以被清清楚楚,明明白白的看到,控制到。再也不用suse, redhat这些发行版,太花了。先从一个nice的内核开始!

 

===================

 

编译内核

 

去掉本机不用的硬件支持,去掉不用文件系统NTFS, IPV6这些东西。

 

内核选项除了能明确其意义的去掉没关系。但改一些参数,还是到sysctl里调,除非能有一个度量的结果。否则网上说的那些优化参数绝大多数过时了,帮不到你什么忙。若不知,勿调。

 

 

如果系统没有kernel的源码,就用sysinstall在CD里装一下,这种方法最简洁!

 

sysintall这种不用X系统的图形化配置工具,真是让人非常喜爱。并不是什么都要命令行。

 

在/usr/src下

 

make buildkernel KERNCONF=*

记得install

make installkernel KERNCONF=*

 

 

===========================

 

安装Port技巧

 

用portsnap fetch extract update 比svup方便,高效的多

 

绝大多数软件都可以在port下找到,包括ruby、nginx, mongodb,这比自己去下源码安装方便多了

 

在编译时,为了不总弹出编译选项选择,最快编译好。

 

export BATCH="yes"

make -DBATCH install clean

 

使用axel加速port下载
   a.axel(据说能搞定文件夹钳套,不错!推荐使用 )
   cd /usr/ports/ftp/axel
   make install clean
   vi /etc/make.conf 加入
   FETCH_CMD=axel -a
   DISABLE_SIZE=yes
   vi /usr/local/etc/axelrc 修改代码
   #num_connections = 4
   num_connections = 10

 

=================

 

安装必要的利器

 

freebsd虽然简约,但高级的利器如bash, vim还是不能少的。用其它的难爱。有了port非常方便,在windows下装个软件也没有这么方便啊!

 

在port里install bash

chsh 改bash为自己的shell

 

同样的,在vim里 make install clean

 

=================

 

用pkg_add包安装

 

用port下源代码安装太费时间,直接用pkg_add要快的多,推荐安装那些非关键软件,版本新旧没有太大关系,而关键软件还是用port安装!pkg_add安装好处是快,不好的地方,会直接安装依赖的软件包,而这些软件包有可能会产生冲突。

 

pkg_add -r vim

 

vim, bash, svn都用apk_add安装

 

==============

 

清理服务

 

关掉sendmail, freebsd是个干净的系统,不知为何,sendmail被打开了呢。在rc.conf中

 

sendmail_enable="NONE"

打开sshd

 

sshd_enable='YES'

 

这样的Freebsd非常nice,总共才用了28M内存!

 

==============

 

 

 

防火墙

 

ipfilter要比官方的ipfw要精小,规则要明了一点,决定使用之。

 

规则:

 

pass in quick on em1 proto tcp from any to any port=22 flags S keep state
pass in quick on em1 proto tcp from any to any port=80 flags S keep state
pass in quick  proto icmp from any to any  icmp-type 8 keep state

pass out quick  proto icmp from any to any  icmp-type 8 keep state
#pass out quick  proto tcp from any to any  keep state
#pass out quick  proto udp from any to any  keep state

block out quick all
block in quick all

 

以下几条由于最后二条,就不再使用

block in log quick all with short
block in log quick all with ipopts
block in log quick all with frag
block in log quick all with opt lsrr
block in log quick all with opt ssrr

 

当需要向外部要安装软件什么的,就可以去掉#,打开对外通讯

==============

 

安全:

 

有些敏感的文件如psswd, ipf.rules都要设成600,中有root才有权限查阅

 

 

accton打开系统计帐功能

 

用newsyslog配置日志文件压缩与归档

 

mongod服务默认打开了27017,28017,等于打开了数据库大门!在启动参数里加上--bind_ip 127.0.0.1,不向外开放端口,这样外部就访问不到了!

 

 

=================

 

硬件性能测量

 

只有测度才能有进步,理论上我们应清楚所有硬件、带宽、操作系统、应用软件的吞吐量,与所用代价。

 

测试硬件性能有unixbench, 测试带宽有iperf, 服务则用 iperf -sD -p80 (开到80测试用)

 

测试硬盘,做一个简单的benchmark,不用像windows系统找第三方软件, 用diskinfo -vt /dev/ad0就搞定!

 

==============

 

RoR生产环境搭建

 

基本环境:

 

用port安装ruby, mongo, nginx

 

安装gem

 

注意的是在freebsd, gem不在ruby发行中,需要独立安装,port目录/usr/ports/devel/ruby-gems

 

安装rails后bundle

 

有了gem就可以装rails, 装好rails 3×就用了bundle。

 

如果用了iconv, 需要在单独装

在/usr/ports/convert/ruby-iconv

 

生产环境不用装文档gem install --no-rdoc --no-ri ×××,是不是有点洁癖!

 

项目环境

 

只用在本地装capistrano把项目部署装到服务器(本项目用svn,没有就用pkg_add装一个),项目上去就好办了, bundle install 把组件都装上!

 

bundle install --without=development  (去除没有必要的gem包)

 

 

 

capistrano

 

在本地安装,远程部署到生产服务环境。

 

为了把Unicorn集成进去,需要把unicorn启动,停止和重启写到cap任务中。

 

namespace :deploy do
  desc "start unicorn"
  task :start, :roles => :app do
      run "cd #{current_path} && /usr/local/bin/unicorn_rails -c #{current_path}/config/unicorn.rb -E production -D" 
  end

  desc "stop unicorn"
  task :stop, :roles => :app do
      run "kill -QUIT `cat #{current_path}/tmp/pids/unicorn.pid`"
  end

  desc "restart unicorn"
  task :restart, :roles => :app, :except => { :no_release => true } do
      run "kill -USR2 `cat #{current_path}/tmp/pids/unicorn.pid`"
  end
end

 

 

 

Nginx+Unicorn

 

unicorn作为应为服务器可以用unix socket端口侦听

worker_processes 3
working_directory "/yourapp"

# This loads the application in the master process before forking
# worker processes
# Read more about it here:
# http://unicorn.bogomips.org/Unicorn/Configurator.html
preload_app true

timeout 30

# This is where we specify the socket.
# We will point the upstream Nginx module to this socket later on
listen "/yourapp/tmp/sockets/unicorn.sock", :backlog => 64

pid "/yourapp/tmp/pids/unicorn.pid"

# Set the path of the log files inside the log folder of the testapp
stderr_path "/yourapp/log/unicorn.stderr.log"
stdout_path "/yourapp/log/unicorn.stdout.log"

 

======

 

常用路径

mongod启动脚本:/usr/local/etc/rc.d/mongod

 

分享到:
评论

相关推荐

    FreeBSD下搭建高性能企业级网关与代理服务器

    FreeBSD下搭建高性能企业级网关与代理服务器FreeBSD下搭建高性能企业级网关与代理服务器

    freebsd开发环境解决方案

    通过上述步骤,我们可以成功地在FreeBSD上搭建一套完整的开发环境,包括但不限于CVS Server、Samba Server和NFS Server等服务。相比于其他操作系统,FreeBSD提供了更加稳定、安全且高效的开发环境,特别适合于企业级...

    FreeBSD CCPP开发环境

    FreeBSD操作系统知识点: 1. FreeBSD概述:FreeBSD是一个自由的类Unix操作系统...而在FreeBSD上搭建C++开发环境的步骤涉及到虚拟机的创建、硬件配置、系统安装以及基本配置,为进行C++编程提供了一个良好的系统环境。

    搭建一个大型网站架构的实验环境(FreeBSD系统设置篇)

    搭建一个大型网站架构的实验环境,特别是在FreeBSD系统设置篇中,涉及到了多个关键的知识点,包括系统安装后的基础设置、网络配置、SSH服务配置、密钥认证以及系统的升级等。下面将对这些知识点进行详细解析。 ### ...

    FreeBSD+Nginx环境搭建教程.pdf

    Nginx采用了epoll (Linux 2.6内核) 和 kqueue (FreeBSD) 网络I/O模型,这使得它在高并发连接场景下表现出色,可处理超过50,000个并发连接,相比Apache服务器在资源消耗上更为节省。在国内,Nginx已被许多大型网站如...

    文章配置包-在FreeBSD上安装CompizFusion桌面环境

    在FreeBSD操作系统上安装并配置CompizFusion桌面环境是一个技术性强且有趣的过程,它可以为用户提供炫酷的3D特效和高度自定义的工作环境。CompizFusion是Compiz的一个分支,它集成了多种视觉效果插件,为Linux和类...

    FreeBSD11下安装phpMyAdmin

    过程中涉及了FreeBSD的包管理、PHP环境搭建、MySQL/MariaDB配置、Web服务器配置等多个IT技术点。通过这个过程,你可以学习到如何在类UNIX系统中管理和部署Web应用程序,这对于系统管理员和开发人员来说是非常重要的...

    FreeBSD搭建大型网站架构的实验环境(虚拟机篇)借鉴.pdf

    在本实验环境中,我们将利用FreeBSD操作系统来搭建一个大型网站架构,主要涉及的组件包括Nginx、Squid和Apache。这样的配置旨在提供高效、稳定且可扩展的服务,适用于处理高流量的网站需求。 首先,我们要在VMware...

    FreeBSD 6.2构建桌面及中文化环境

    对于中文化环境的搭建,FreeBSD提供了完整的中文支持。首先,需要安装中文语言包: ``` pkg install zh-lang ``` 然后,设置locale(区域和语言设置)为中文,比如简体中文(zh_CN),在`/etc/locale.conf`中添加...

    FreeBSD中文手册.pdf

    11. **开发环境**:针对开发者,讲述了如何在FreeBSD上搭建开发环境,包括编译器、调试器和其他开发工具的使用。 手册的维护是由FreeBSD文档项目团队进行的,他们不断更新内容以适应FreeBSD的最新版本。此外,还有...

    Ruby on Rails安装包全集(Linux)

    这个资源包提供了所有必需的组件,使得开发者可以按照文档逐步操作,在Linux环境中搭建起Ruby on Rails的开发环境。对于初学者或需要在非标准环境中部署RoR应用的人来说,这是一个非常有价值的资源。

    在FreeBSD下用源代码安装DHCP服务

    在FreeBSD下用源代码安装DHCP服务是一个深入理解网络基础设施...至此,DHCP服务已经在FreeBSD下成功安装并配置完成,网络设备将能够自动从DHCP服务器获取IP地址,简化了网络管理流程,提高了网络环境的灵活性和稳定性。

    VMWARE下安装FreeBSD

    这里主要介绍在VMware环境下安装FreeBSD 7.0的过程。 ##### (1)准备环境 - **安装VMware Workstation**:确保你的主机系统已安装VMware Workstation或类似虚拟机软件。 - **下载FreeBSD 7.0 ISO镜像**:访问...

    FreeBSD下制作U盘启动盘.pdf

    接下来,我们详细介绍一下在FreeBSD环境下制作U盘启动盘的步骤和所涉及的知识点: 1. 首先,我们需要准备一个空的U盘,其存储空间至少需要足够放下FreeBSD的bootonly镜像文件,大约50MB左右。制作过程中,U盘上所有...

    FreeBSD11.0下Git服务器搭建

    freeBSD11.0系列安装文档,本人实际操作记录,希望给大家带来上些帮助

    freebsd.tar.gz_BSD_FreeBSD内核源码_freebsd source_freebsd.tar_linux

    在给定的`freebsd.tar.gz`压缩包中,包含的是FreeBSD v4.4版本的内核源码,这对于那些对操作系统底层原理、内核编程或者想要深入理解FreeBSD操作系统的开发者和爱好者来说,是一份宝贵的资源。 **1. BSD内核架构** ...

    搭建一个大型网站架构的实验环境(强烈推荐)

    搭建一个大型网站架构的实验环境(FreeBSD系统安装篇)(FreeBSD系统设置篇)(FreeBSD系统优化篇)(Nginx代理服务器篇)(Squid缓存服务器篇)(Web服务器篇)(集成篇)(虚拟机篇)

    FreeBSD11下安装Apache24

    FreeBSD11下安装Apache24的详细过程

Global site tag (gtag.js) - Google Analytics