周五的时候老大布置了一个任务下来,要部署一个Redmine用于研发部,同时升级工作室的Redmine,于是正好试试另外一套Linux系统——Ubuntu,毕竟和CentOS的命令差别还是有一点的。
先说说配置吧。
(1) 操作系统:Ubuntus 16.04 LTS,内存2GB,2vCPUs,60GB硬盘,都是一些基本配置。
(2) rvm + ruby-2.3.1 + rails
(3) MySQL-Server-5.7.0
(4) Nginx
(5) Redmine-3.3.0
接下来开始讲讲部署过程。
1.在虚拟机中选好标准配置。
2.下载ubuntu-16.04-server-amd64.iso,默认会选择国内大学的ftp站点,因此速度杠杠的,装入虚拟光驱,调整固件从光驱启动,进入以后选择英文安装界面。
3.由于有CentOS基础,分区的步骤就不再多做详细的介绍,分配一个swap分区,一个boot分区,剩下留给根分区即可。
4.差不多安装到最后一步的时候,由于默认就是服务器版的,不存在要选择图形界面的问题,这里与CentOS最大的不同就是Ubuntu要手动安装SSH服务器,不然后面要手动安装,SSH是远程的时候必须的,安装上。
5.在Ubuntu安装过程中会有一步让你创建一个账户来控制机器,这里创建了一个账户,所以也就以这个账户登录,这里就有与CentOS的第二点不同,root账户密码哪去了?事实上,在这个时候root密码应该是空的,但是当你su进去的时候发现不对。事实上,可以使用sudo passwd root修改root密码,而且在这里是必须这样做,在写博客之前我就曾经用过普通账号进行部署,结果卡在最后一步,编译的程序由于没有权限无法启动,所以后面的操作中,建议类似CentOS一样,直接用root账户进行操作。这里我还做了一个事情就是用了XShell重新登录,是因为我是在实验室远程回宿舍的电脑,宿舍电脑再打开VMware来操作,直接操作的话会发现莫名其妙字符输入多,或者是在图形界面下鼠标无法使用的情况,应该是远程协议使用了TCP的缘故吧,这在Linux里面敲密码是非常麻烦的一个事情。
6.更新一遍软件包列表,使用命令
|
|
7.我个人推荐的安装参考顺序为rvm→ruby→rails→Nginx→MySQL→Redmine,因此我也按照这个顺序来介绍部署过程。
Rvm+Ruby+Rails
1.rvm是用于管理多个ruby版本的一个管理器,用它安装ruby是最为合适的,虽然可以直接apt-get install ruby
,但是这样子做依赖关系就比较麻烦,因此推荐还是从rvm开始安装起。
|
|
安装完以后会显示这个页面代表着安装成功!
2.载入Rvm环境。
|
|
3.检查Rvm是否安装成功。
|
|
这样就代表环境变量设置成功!
4.用Rvm安装ruby环境
|
|
如下图所示
|
|
如下图所示
5.设置ruby默认版本
|
|
6.由于某些原因,调整gem安装目录至国内镜像,在这里衷心感谢ruby-china的支持!当然,这里也可以改成淘宝的镜像,有且仅有一个就好!
|
|
7.安装bundlers
|
|
8.安装rails
|
|
9.检查各个安装包版本
10.可做适当的升级
|
|
至此第一部分安装已经完毕。
Nginx
由于nginx和ruby之间,以及passenger之间有依赖关系,查看网络上的安装配置,最后发现不能够直接apt-get install来安装,要从passenger中进行安装,步骤如下。
1.安装passenger
|
|
2.安装curl模块
|
|
3.使用passenger自带的一个命令来安装nginx,这句命令会自己下载最新版的nginx和编译的passenger module
|
|
4.这里选择1,自动帮我们安装即可。
5.安装开始以后会先需要安装PCRE,后面我们手动安装PCRE,所以在这里先跳过。
6.设定安装目录,默认即可,这一步确认后也是有不少东西安装,耐心等待即可。
7.安装成功界面!
8.下面开始手动安装PCRE,切换到/opt/nginx
|
|
后来发现这个安装好像没有成功,因为本次也用不上这个,所以暂时没管它。
至此nginx安装已经全部完毕。
MySQL
1.MySQL是几个安装包里面最为简单的一个,只需一条命令即可。
|
|
2.安装过程中会有要求输入MySQL的root密码,这个是登录MySQL用的。
3.测试mysql-server是否安装成功
|
|
达到这里时就代表安装成功!
|
|
Redmine
1.切换到/opt目录
|
|
2.打开Gemfile,将source文件替换为淘宝源,保存退出。
|
|
如下图所示
3.设置数据库基本用户名,密码等
|
|
4.设置连接数据库
|
|
由于是用于生产环境,只用修改一处地方即可,修改并保存。
5.下面开始进行一些依赖包的安装,返回到redmine-3.3.0目录,根据bundle install --without development test
的提示来安装,缺少什么就装什么,每装完一个就运行一次这条命令,详细看看报错信息就知道缺少什么依赖包没装。
|
|
直到这一步才算是完成。
6.Session存储密钥
|
|
7.生成redmine的数据库表结构和初始化数据
|
|
8.创建上传文件的目录和设置文件夹的权限
|
|
9.测试redmine的安装
|
|
10.在nginx目录中将redmine目录迁移过去,重启nginx
|
|
Bug集
理论上来说,上述的安装步骤完成以后,应该是没问题的了。但在实际部署的过程中,还发现了几个bug,需要进行修正。
(1) redmine目录的所有者和所属组是redmine,不然其他账号登录的时候会无权限访问,且权限为755
|
|
(2) 将环境变量配置以及nginx启动放入启动脚本中,这样就不用在开机时再输入这两句调用环境变量了。
|
|
(3)rails server拒绝访问的问题
这个也是困扰我最久的一个问题,一开始还以为我部署错了,结果直到看到这篇文章后才发现是路由出了问题,一会儿会附上该文链接。个人的理解是,http流量到了linux以后,转换到了lo网卡,lo网卡的路由由于是127.0.0.1,所以就发给自己了,于是就出不去了,就变成了拒绝访问。这个问题有个典型的特征就是,启动nginx和rails server以后,会发现能curl下来,即
|
|
但是只能nginx返回成功。
解决方案:
|
|
(4)迁移完redmine目录到nginx上去后无法显示favicon.ico
这个还没找到原因,故还未解决。
参考文章
Centos+nginx+redmine+gitosis安装指南
http://www.cnblogs.com/csharpsharper/archive/2013/08/11/3250913.html
如何快速正确的安装ruby,rails运行环境
http://ruby-china.org/wiki/install_ruby_guide
安装rbpdf-font
http://www.mamicode.com/info-detail-1218665.html
安装imagemagick magickwand
http://blog.sina.com.cn/s/blog_691051e10100y17n.html
无需要更改gemfile,让bundle使用淘宝源
http://ruby-china.org/topics/26314
解决gem install rmagick error
http://robinwu.iteye.com/blog/1199311
redmine3.0 安装只能本机访问的问题
https://site.douban.com/180891/widget/notes/17846704/note/490572314/