世界上最伟大的投资就是投资自己的教育
部署之在阿里云 ubuntu 主机上安装 Ruby on Rails 环境 (六)
1. 为何选择阿里云
假如你开发了一个网站,或者想开发一个网站,开发完之后,你得让人访问吧。别人能访问,就得把你的网站放到英特网上。那就得把代码和数据都放到英特网上,这样别人才能访问。存放这些代码或数据的就是叫主机或空间。它们有什么区别呢。主机包括云主机,vps 等。具体是啥,我们先不管,反正你先想成是一台台计算机就好了,而且有 ip,通过 ip,上网能访问到。空间就是在主机上切出一部分给你使用,这种限制多多,例如容量大小的限制,安装环境的限制等。知名的云空间提供商你可能听过的有heroku、sinaapp等 。heroku我使用过,在国内访问慢,而且收费,使用这种类似的东西很受 heroku 原始安装环境的限制,例如你要添加一些服务的话,不能自己手动安装,只能用heroku提供的服务,而且有些还是收费的,这就缺少自由和灵活了。以我使用过的经验来说,这种东西我是不会考虑的。接着考虑一下 vps,国内好像没听过太出名的 vps 产商,国外的就有,不过选择主机我是优先选择国内的,第一速度快,第二,国外的,万一哪天被隔绝了 (你懂的),那就得哭死。相对而言,vps 还比较贵。所以不考虑。那就选择云主机。国内的云主机也有蛮多家产商的。例如阿里,腾讯,uclond,青云。我只用过阿里,第一它是大公司出品,第二在国内。其他的我没用过,就不评论了。阿里的价格我不说贵还是便宜,但在我的接受范围内。不过用阿里的主机,你的网站得备案。其实,现在备案也是蛮简单的,我说的是个人备案,你只要填写资料,到时候拍些照片,然后再寄些资料,快的话,大约一个星期就搞定了。这点不用担心。
2. 安装和注意事项
阿里云有很多 linux 发行版本,我选择的是 ubuntu 14.04。在这里我会指出一些安装方法,或者提一些注意事项。并不会从头到尾安装一次,具体方法不懂的 google 就好了。大部分安装就是用 apt-get install,相信只要懂 ubuntu 的人都会知道。如果不知道具体的安装,类似搜索 google ubuntu install mysql 就好了。相似 google 到的答案比别人给的更好。
既然是安装 ruby on rails 部署环境,我们来列出要安装的内容。
- web 服务器 nginx
- 数据库 mysql 或 postgresql
- redis
- imagemagick
- nodejs
- git
具体安装啥就取决于你自己。至于 ruby 的版本工具我选择的是 rbenv,生产环境一般都用这个,开发环境才用 rvm。web 应用容器我选择的是 unicorn 或 puma。
我们来开始安装了。
假如你已经在阿里云上建立好主机,并设置了 root 的账号和密码。假设你能用 ssh root@yourserverip 登录了。
首先,按照传统的习惯或者一种安全的规定来说,你总不能老是用 root 账号来操作。你要给自己建立一个账号。以后就要这个账号来操作。这样才安全点。
2.1 添加操作账号
你可以用 google 搜一下如何在 linux 下添加用户,一般是用 useradd 这个指令。
例如
useradd hfpp2012
# 设置密码
passwd hfpp2012
要给它新增加目录的。如果没有,就手动加好了。
mkdir /home/hfpp2012
chown -R hfpp2012:hfpp2012 /home/hfpp2012/
或许有更好的方法。具体就不深究了。
再验证一下那个账号是否被添加到系统,可以查看/etc/passwd 文件
要确保它能登录,最后的 shell,要是/bin/bash
,不然的话是登录不了的。
添加的用户需要用 sudo 指令,也就是具有 root 权限。
$ sudo visudo
# 把下面这行
%sudo ALL=(ALL:ALL) ALL
# 改成
%sudo ALL=(ALL) NOPASSWD:ALL
# 添加到sudo组
usermod -a -G sudo hfpp2012
具体的自己 google
2.2 安装 nginx
首先更新一下软件源
sudo apt-get update
在 ubuntu 下安装 nginx 一条命令就够了
sudo apt-get install nginx
在 ubuntu 源中装到的 nginx 版本可能并不高,如果你需要用 websocket 等功能,可能需要 1.4 以上,这个时候可以选择编译安装。
如果要编译安装,可以看这篇文章nginx 的安装。
2.3 安装 git
版本控制工具 git,下载代码用,必须安装
也只是一条命令就够了
sudo apt-get install git
2.4 安装 redis
redis 可以作为 cache 用,也可以用于消息队列。总之,好处多多。
由于 ubuntu 源中的 redis 版本不够新,我选择的是编译安装。如果要手动安装也只需要一条命令。
sudo apt-get install redis-server
不过可能装到的是 2.8 版本的。我需要新来 redis 的稳定版 3.0 及以上的。从官网下载最新的安装包。其中复制那个下载地址就好了。然后到阿里云主机上。用 wget url,url 就是你复制的下载网址。这样就下载到阿里云了。
# 解压
tar xvf redis-3.0.3.tar.gz
cd redis-3.0.3
# 编译
make
# 安装,需要加sudo,因为要复制文件到系统目录中
sudo make install
安装完是没有给你自动启动 redis 服务的,这点跟 apt-get 安装不太一样。你需要处理一下。
cd utils/
# 安装和复制脚本
sudo ./install_server.sh
启动和停止服务用下面的指令。
sudo service redis_6379 start
sudo service redis_6379 stop
你自己可以 ps -ef | grep redis 看一下是否启动了服务。
如果你要设置开机即启动的话就这样
sudo update-rc.d redis_6379 defaults
还有重要的一个安全问题。
默认安装完毕后,redis 是不用密码就能使用的。也就是说,无论是本地 (阿里云主机),或者远程,你都可以访问 redis。这样很不安全。
解决方法当然可以是设一个密码啊。用CONFIG set requirepass
这个指令或者AUTH
指令就好了。当然另一个更简单的方法。只要是本地访问不要密码,因为是信任的,如果是远程就不能访问。那也很简单。打开/etc/redis/redis.conf
文件。
设置这一行就好了。
bind 127.0.0.1
让它绑定本机。
作为缓存服务器,如果不加以限制内存的话,就很有可能出现将整台服务器内存都耗光的情况,可以在 redis 的配置文件里面设置。
# 限定最多使用1.5GB内存
maxmemory 1536mb
2.5 安装 nodejs
使用 ruby on rails 都知道要安装这个的啦。编译 coffeescript 也是靠它。
也就一条命令
sudo apt-get install nodejs
2.6 安装 mysql
也就是一条命令,中间需要你设置用户名和密码。
sudo apt-get install mysql-server
ruby 的 mysql2 gem 在编译时需要安装上相应的 mysql 头文件开发包。也就是类似 lib dev 这样的包。
有个技巧是这样
sudo apt-cache search mysql | grep dev
找到类似 libmysql++-dev 这样的来安装就好,如果实在不知道,在安装 ruby mysql2 gem 时找到报错那一行往 google 上一贴,一般就能找到答案了。因为这种问题很常见。
我们要掌握的是方法,是规律,而不是内容,内容是记不住的,是无穷尽,规律或简单的内容却能记住。
2.7 安装 imagemagick
图形处理,例如上传图片的裁减,验证码等都需要这个软件。
sudo apt-get install imagemagick
2.8 安装 postgresql
作为数据库,postgresql 是我比较喜欢的,它支持很多类 nosql 的特性,例如 hstore 扩展,还支持较为强大的全文检索,还有 window function 等等。
sudo apt-get install postgresql libpq-dev
需要设置一下 postgres 的密码,以后就能用这账号postgres
和密码访问数据库了。
sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'postgres';
2.9 生成 ssh key
这个是非对称加密的 key,用于加密连接或部署等。
ssh-keygen -t rsa -C "your_email@example.com"
这个指令会生成两个文件 ,放在家目录的.ssh 目录下。一个叫 id_rsa.pub,另一个叫 id_rsa。
部署 github、coding 等都需要用它的。
id_rsa.pub 是公钥,id_rsa 是私钥,简单地说,它们是对应的,是成对出现的,用公钥加密的只能用私钥解密,用私钥加密的只有用公钥解密。公钥是可以给他人的,私钥是要自己保管的,不能泄露,就简单说下,具体地,以后会有单独的文章来介绍非对称加密。
还有一个问题是这样的。每次用 ssh 进入阿里云主机需要输入密码,好麻烦。其实可以这样的。
.ssh 下有个文件叫 authorized_keys,只要复制你本机上的 id_rsa.pub 的内容作为一行添加到 authorized_keys 中就可以了。
以后不用再输入密码了。
2.10 安装 rbenv 和 ruby
关于 rbenv 的安装可以先用 google 搜一下,进入其官方的 github 看 readme 文档更为详细些。
# 安装一些必要的库
sudo apt-get install -y libssl-dev libreadline-dev zlib1g-dev
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
安装ruby-build,它提供 install 指令。
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
选择你要安装的版本,安装 ruby。
rbenv install 2.3.0
rbenv global 2.3.0
这样只要能使用 ruby -v 查看到你期待的版本就算成功了。整个安装过程就结束了。
3. 总结
整个安装过程,因个人的环境或能力所限,会遇到各种各样的问题,只要耐心地查 google,一般都能解决的,要不断地总结。要确定你要装什么就去装就好了,不懂的,不明白的就 google。遇到一些问题也别急,不要放弃,总有办法解决的。安装和运维问题最需要耐心的,越急事儿越做不好,也不能乱安装,不然出现的问题更多,尽量搜索到最新的文章,最好的办法或最正规的方法来安装。
本站文章均为原创内容,如需转载请注明出处,谢谢。
© 汕尾市求知科技有限公司 | Rails365 Gitlab | 知乎 | b 站 | csdn
粤公网安备 44152102000088号 | 粤ICP备19038915号
Top