如何在Mac OS X上安装 Ruby运行环境

Python017

如何在Mac OS X上安装 Ruby运行环境,第1张

在Mac OS X上安装 Ruby运行环境:

在安装CocoaPods之前要先配置好RUBY环境,本文就怎么安装RUBY的环境进行一总结。安装Ruby环境首先需要安装Xcode然后需要安装Homebrew,接下来需要安装RVM最后安装Ruby环境。

Homebrew是一个包管理器,用于在mac上安装一些os x上没有的UNiX工具。Homebrew将这些工具统统安装到了 /usr/local/Cellar 目录中,并在 /usr/local/bin 中创建符号链接。

1.中文地址:http://brew.sh/index_zh-cn.html

打开终端(Terminal)把以下粘贴到终端内

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装过程中需要按回车确认(Press enter to continue)安装完后可以通过brew doctor命令检查是否安装成功,如果提示"Your system is ready to brew."就可以使用了。可以参考:http://blog.csdn.net/maojudong/article/details/7918291

2.安装设置RVM

命令:curl -L https://get.rvm.io | bash -s stable

期间会问你管理员的密码,以及自动通过homebrew安装依赖包,等待一段时间后就可以成功安装好 RVM。 然后,载入 RVM环境(新开 Termal 就不用这么做了,会自动重新载入的)

3. 设置RVM

通过以下命令启用RVM

source ~/.rvm/scripts/rvm

检查一下是否安装正确命令

rvm -v

正确的话会出现类似下面的文字

rvm 1.26.11 (master) by Wayne E. Seguin [email protected]>, Michal Papis [email protected]>[https://rvm.io/]

4.安装RUBY

rvm install 2.0.0

漫长的等待下载过程,安装完成后需要执行下面的命令指定哪个RUBY为系统默认的

rvm 2.0.0 --default

你没有安装编译器啊,当然无法编译。

以下是我在 ubuntu 下使用 ruby 和 rails 时用到的一些包:

gcc g++ git git-core curl build-essential bison openssl libreadline6 libreadline6-dev zlib1g zlib1g-dev libssl-dev libyaml-dev libxml2-dev libxslt-dev autoconf imagemagick libtool libltdl-dev libmagickwand-dev

redhat 下包的名称和 ubuntu 可能不一样,但是大同小异,你可以找到对应包,先安装这些依赖包,然后再编译,编译出的ruby 的功能应该比较全。

gitlab是基于Ruby on Rails的,安装和配置非常麻烦,不过有傻瓜安装包,https://about.gitlab.com/downloads/,或者,https://bitnami.com/stack/gitlab/installer。但是这两个包都是英文界面的,gitlab把界面提示写在每一个rb文件里了,所以,要用中文版的不能像redmine那样设定一下就行了。

幸好,还是有无私的大侠把gitlab给汉化了:https://larryli.cn/gitlab,代码地址:https://gitlab.com/larryli/gitlab。

所以本文要做的事情是,不安装傻瓜包,从源码安装gitlab。

gitlab官方有一个说明文档:http://doc.gitlab.com/ce/install/installation.html,本文基本按照这个文档来的。所不同的是,本文用的是apache,不是nginx。

安装步骤有:

1. 依赖包

2. ruby

3. 用户创建

4. 数据库初始化

5. redis

6. gitlab源码

7. apache

本文可能会用到VPN连接,在命令行下创建VPN连接的方法如下:

sudo apt-get install pptp-linux

sudo pptpsetup --create VPN名称 --server 服务器地址 --username 用户名 --password 密码 [--encrypt] --start

以上命令会创建一个设备,如果没有其他的拨号设备,这个设备会是ppp0,用ifconfig可以看到,“--encrypt”选项可选,因为有的服务器不支持,会提示MPPE required but peer negotiation failed,创建时带上“--start”选项可以看到连接的情况。

pptpsetup创建的VPN连接重启后会失效,如果想在不重启的情况下删除VPN连接:

sudo pptpsetup --delete VPN名称

创建VPN连接后还需要使能,并且添加到路由列表:

sudo pon VPN名称

sudo route add default dev ppp0

禁用VPN连接的方法是:

sudo poff VPN名称

下面开始正文:

1. 依赖包

我装的是ubuntu server 14.04,安装的时候可以选是否安装LAMP(Linux+Apache+MySQL+PHP),如果没装,可以用下面的命令装:

sudo tasksel install lamp-server

安装的时候会提示输入MySQL的root密码,下面要用。

接下来是依赖关系:

sudo apt-get install flex bison ruby build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate python-docutils pkg-config cmake libkrb5-dev nodejs git-core

注意:这里面装了ruby,应该是1.9.1版本的,gitlab需要2.0以上的ruby,但是安装2.0以上的ruby需要低版本的ruby,所以我们先装上,一会儿卸掉。另外,ubuntu 14.04的软件库里有ruby 2.0,但是实测不能用,所以还是从源码装ruby吧。

2. ruby

下载,编译,安装(安装前删掉ruby 1.9.1):

curl -L --progress http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.gz | tar xz

cd ruby-2.1.5

./configure --prefix=/usr --disable-install-rdoc

make

sudo apt-get autoremove ruby

sudo make install

然后安装bundler:

sudo gem install bundler --no-ri --no-rdoc

3. 用户创建

为gitlab创建一个git用户:

sudo adduser --disabled-login --gecos 'GitLab' git

4. 数据库初始化

官方指南用的是PostgreSQL,不过官方也有MySQL的说明:

http://doc.gitlab.com/ce/install/database_mysql.html

sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev

mysql -u root -p

输入MySQL的root密码登陆,然后:

mysql> CREATE USER 'git'@'localhost' IDENTIFIED BY '$password'

记得把上面这句的"$password"换成实际的密码,然后:

mysql> SET storage_engine=INNODB

mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON `gitlabhq_production`.* TO 'git'@'localhost'

mysql> \q

5. Redis

Redis貌似是用来存key的数据库吧,不知道,反正按步骤安装:

sudo apt-get install redis-server

sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.orig

sed 's/^port .*/port 0/' /etc/redis/redis.conf.orig | sudo tee /etc/redis/redis.conf

echo 'unixsocket /var/run/redis/redis.sock' | sudo tee -a /etc/redis/redis.conf

echo 'unixsocketperm 770' | sudo tee -a /etc/redis/redis.conf

sudo service redis-server restart

sudo usermod -aG redis git

6. gitlab源码

gitlab源码默认是安装在/home/git/gitlab,如果要更改,请参照官方手册。获取中文版源码的过程如下:

cd /home/git

sudo -u git -H git clone https://gitlab.com/larryli/gitlab.git

不知道是因为GFW还是什么,git clone这个版本库可慢可慢了,我用了VPN,速度会快点。

git clone完以后可以checkout你想要的版本,在本文编写的时间(2015年4月22日),可以:

sudo -u git -H git checkout 7-7-zh

然后配置源码

cd /home/git/gitlab

sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

sudo chown -R git log/

sudo chown -R git tmp/

sudo chmod -R u+rwX,go-w log/

sudo chmod -R u+rwX tmp/

sudo -u git -H mkdir /home/git/gitlab-satellites

sudo chmod u+rwx,g=rx,o-rwx /home/git/gitlab-satellites

sudo chmod -R u+rwX tmp/pids/

sudo chmod -R u+rwX tmp/sockets/

sudo chmod -R u+rwX  public/uploads

sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb

sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb

sudo -u git -H git config --global user.name "GitLab"

sudo -u git -H git config --global user.email "[email protected]"

sudo -u git -H git config --global core.autocrlf input

sudo -u git -H cp config/resque.yml.example config/resque.yml

当然,你可以把[email protected]改成你的email;上面的那些yml文件里面的配置基本都不用更改;然后,配置数据库用户名和密码:

sudo -u git cp config/database.yml.mysql config/database.yml

sudo -u git -H editor config/database.yml

sudo -u git -H chmod o-rwx config/database.yml

然后,安装gems:

sudo -u git -H bundle install --deployment --without development test postgres aws

这一步必须使用VPN,因为万恶的GFW屏蔽了rubygems.org,所以会提示connection reset by peer之类的,这部时间也会比较久,如果你的机器是多核的,也可以加上和make相同-jN参数,N等于核数。

(2015年5月2日追加)

发现淘宝做了个rubygrems.org的国内镜像,http://ruby.taobao.org/,可以参照上面的内容设置,加快gems安装速度。

再接下来安装gitlab shell:

sudo -u git -H bundle exec rake gitlab:shell:install[v2.6.0] REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production

sudo -u git -H editor /home/git/gitlab-shell/config.yml

把gitlab的url改成http://localhost/或者你的域名。

在接下来初始化数据库:

sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production

加入启动项:

sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab

sudo update-rc.d gitlab defaults 21

初始化日志:

sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab

检查应用状态:

sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

编译附件:

sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production

启动gitlab服务:

sudo service gitlab start

7. apache

下载apache的配置文件:https://gitlab.com/gitlab-org/gitlab-recipes/blob/master/web-server/apache/gitlab-apache2.4.conf

将其中的“ProxyPassReverse

http://gitlab.example.com/”改成“ProxyPassReverse

http://localhost/”或者你的域名,将其中的“/var/log/httpd/logs/”改为“/var/log/apache2/”。

用命令来说:

wget https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/web-server/apache/gitlab-apache2.4.conf

mv gitlab-apache2.4.conf 001-gitlab.conf

editor 001-gitlab.conf (进行上述修改)

sudo cp 001-gitlab.conf /etc/apache2/sites-available

cd /etc/apache2/sites-enabled

sudo rm 000-default.conf

sudo ln -s ../sites-available/001-gitlab.conf 001-gitlab.conf

另外,还需要使能代理模块以实现反向代理功能,不然会提示“ProxyPassReverse”无效之类的。

cd /etc/apache2/mods-enabled

sudo ln -s ../mods-available/proxy.conf proxy.conf

sudo ln -s ../mods-available/proxy.load proxy.load

sudo ln -s ../mods-available/proxy_connect.load proxy_connect.load

sudo ln -s ../mods-available/proxy_http.load proxy_http.load

sudo ln -s ../mods-available/rewrite.load rewrite.load

重启apache:

sudo service apache2 restart

然后,检查下配置是否正确:

sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production

如果都是绿色的结果,那就可以访问了。登陆用户名:root,初始密码:5iveL!fe

最后配置一下邮件,修改/home/git/gitlab/config/gitlab.yml,里面的“email_from:”为一个有效的email地址;修改/home/git/gitlab/config/environments/production.rb,里面的 “config.action_mailer.delivery_method=”为“:smtp”;最后:

cd /home/git/gitlab/config/initializers

sudo -u git -H cp smtp_settings.rb.sample smtp_settings.rb

然后把文件的里的内容修改正确了,再重启一下gitlab服务就行了:

sudo service gitlab restart