Ubuntu+Ruby+MySQL+Nginx+Redmine部署记录
发布日期:2022-01-31 14:08:48 浏览次数:7 分类:技术文章

本文共 6420 字,大约阅读时间需要 21 分钟。

  (2019年2月19日注:这篇文章原先发在自己github那边的博客,时间是2016年7月26日)

  周五的时候老大布置了一个任务下来,要部署一个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. 下载,默认会选择国内大学的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. 更新一遍软件包列表,使用命令

1 root# apt-get update  //普通用户下为sudo apt-get update,后同,除非特殊注明。2 root# apt-get upgrade

  

  7. 我个人推荐的安装参考顺序为rvm→ruby→rails→Nginx→MySQL→Redmine,因此我也按照这个顺序来介绍部署过程。


 一、Rvm+Ruby+Rails

  1. rvm是用于管理多个ruby版本的一个管理器,用它安装ruby是最为合适的,虽然可以直接 apt-get install ruby ,但是这样子做依赖关系就比较麻烦,因此推荐还是从rvm开始安装起。

1 root# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E32 root# curl -sSL https://get.rvm.io | bash -s stable3 root# curl -L https://raw.githubusercontent.com/wayneeseguin/rvm/master/binscripts/rvm-installer | bash -s stable    //如果上面的连接失败,可以尝试:

  安装完以后会显示这个页面代表着安装成功!

  2. 载入Rvm环境。

1 root# source /etc/profile.d/rvm.sh

  3. 检查Rvm是否安装成功。

1 root# root@shopREDcngua001:~root# rvm -v2 rvm 1.27.0 (latest) by Wayne E. Seguin 
, Michal Papis
[https://rvm.io/]

  这样就代表环境变量设置成功!

  4. 用Rvm安装ruby环境,如下图所示。

1 root# rvm requirements    //此时会更新一大堆的依赖包,耐心等待即可。

  5. 设置ruby默认版本。

1 root# rvm use 2.3.0 --default

  6. 由于某些原因,调整gem安装目录至国内镜像,在这里衷心感谢ruby-china的支持!当然,这里也可以改成淘宝的镜像,有且仅有一个就好!

1 root# gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org2 root# gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org3 root# gem sources -l    //查看在用的gem源

  7. 安装bundlers

1 root# gem install bundler

  8. 安装rails

1 root# gem install rails

  9. 检查各个安装包版本

  10. 可做适当的升级

1 root# gem update --system

  至此第一部分安装完毕。


二、Nginx

  由于nginx和ruby之间,以及passenger之间有依赖关系,查看网络上的安装配置,最后发现不能够直接apt-get install来安装,要从passenger中进行安装,步骤如下。

  1. 安装passenger

1 root# gem install passenger

  2. 安装curl模块

1 root# apt-get install libcurl4-openssl-dev

  3. 使用passenger自带的一个命令来安装nginx,这句命令会自己下载最新版的nginx和编译的passenger module

1 root# passenger-install-nginx-module

 

  4. 这里选择1,自动帮我们安装即可。

  

  5. 安装开始以后会先需要安装PCRE,后面我们手动安装PCRE,所以在这里先跳过。

 

  6. 设定安装目录,默认即可,这一步确认后也是有不少东西安装,耐心等待即可。

  7. 安装成功界面!

 

  8. 下面开始手动安装PCRE,切换到/opt/nginx

1 root# wget https://sourceforge.net/projects/pcre/files/pcre/8.39/pcre-8.39.tar.gz2 root# tar -zxvf pcre-8.39.tar.gz3 root# cd pcre-8.394 root# ./configure5 root# make & make install    //万幸这个手动安装没有报错

  后来发现这个安装好像没有成功,因为本次也用不上这个,所以暂时没管它。

  至此Nginx已经全部安装完毕。


 

三、MySQL

  1. MySQL是几个安装包里面最为简单的一个,只需一条命令即可。

1 root# apt-get install mysql-server

  2. 安装过程中会有要求输入MySQL的root密码,这个是登录MySQL用的。

 

  3. 测试mysql-server是否安装成功.

1 root# mysql -u root -p2 root# password:   //输入刚才设置的root密码

  达到这里时就代表安装成功!

1 root# mysql>

四、Redmine

  1. 切换到/opt目录

1 root# wget http://www.redmine.org/releases/redmine-3.3.0.tar.gz2 root# tar -zxvf redmine-3.3.0.tar.gz3 root# cd redmine-3.3.0

  2. 打开Gemfile,将source文件替换为淘宝源,保存退出,如下图所示。

1 root# vim /opt/nginx/Gemfile2 root# source 'https://ruby.taobao.org'

  3. 设置数据库基本用户名,密码等。

1 > CREATE DATABASE redmine CHARACTER SET utf8;2 > CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password'; // 这里的my_password是你的redmine数据库账号的密码3 > GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';

  4. 设置连接数据库

1 root# cp config/databse.yml.example config/database.yml   #获取配置文件2 root# vim config/database.yml

  由于是用于测试环境,只用修改一处地方即可,修改并保存。

  5. 下面开始进行一些依赖包的安装,返回到redmine-3.3.0目录,根据 bundle install --without development test 的提示来安装,缺少什么就装什么,每装完一个就运行一次这条命令,详细看看报错信息就知道缺少什么依赖包没装。

1 root# apt-get install imagemagick //生成图片的依赖库。2 root# gem install mysql2 -v '0.3.21'3 root# apt-get install libmysqlclient-dev4 root# gem install rbpdf-font5 root# gem install rmagick -v '2.15.46 root# apt-get install libmagickwand-dev

  直到这一步才算是完成。

 

  6. Session存储密钥

1 root# rake generate_secret_token

  7. 生成Redmine的数据库表结构和初始化数据

1 root# RAILS_ENV=production rake db:migrate    //生成表结构2 root# RAILS_ENV=production rake redmine:load_default_data //初始化数据

  8. 创建上传文件的目录和设置文件夹的权限

1 root# useradd redmine2 root# passwd redmine  //设置redmine账户的密码3 root# mkdir -p tmp tmp/pdf public/plugin_assets/4 root# chown -R redmine:redmine files log tmp public/plugin_assets5 root# chmod -R 755 files log tmp public/plugin_assets/

  9. 测试redmine的安装

1 root# ruby bin/rails server webrick -e production

  10. 在Nginx目录中将redmine目录迁移过去,重启Nginx

1 root# vim /opt/nginx/conf/nginx.conf 2      3     server {  4     listen 80;               #监听的端口号  5     server_name localhost        #域名,暂时先用IP代替  6     #access_log logs/host.access.log main;  7      8     location / {  9     root /opt/redmine/public;    #站点的路径 10     index default.php index.php index.html index.htm; 11     }

五、Bug集

  理论上来说,上述的安装步骤完成以后,应该是没问题的了。但在实际部署的过程中,还发现了几个bug,需要进行修正。

  1. redmine目录的所有者和所属组是redmine,不然其他账号登录的时候会无权限访问,要设置权限为755

1 root# chown -R redmine:redmine /opt/redmine2 root# chmod -R 755 /opt/redmine

  2. 将环境变量配置以及nginx启动放入启动脚本中,这样就不用在开机时再输入这两句调用环境变量了。

1 root# vim /etc/rc.local/2 root# source /etc/profile.d/rvm.sh    #调用ruby相关的环境变量3 root# /opt/nginx/sbin/nginx   #手动启动nginx

  3. rails server拒绝访问的问题

  这个也是困扰我最久的一个问题,一开始还以为我部署错了,结果直到看到网上的文章后才发现是路由出了问题,一会儿会附上该文链接。个人的理解是,http流量到了linux以后,转换到了lo网卡,lo网卡的路由由于是127.0.0.1,所以就发给自己了,于是就出不去了,就变成了拒绝访问。这个问题有个典型的特征就是,启动nginx和rails server以后,会发现能curl下来,即

1 root# curl http://localhost/  #能抓取到nginx的页面2 root# curl http://localhost:3000/ #能抓取到redmine的页面

  但是只能Nginx返回成功,解决方案如下。

1 root# ruby bin/rails server webrick -e production -b 0.0.0.0 -p 3000 &   #将rails server启动时使用的路由变成0.0.0.0。

  4. 迁移完redmine目录到nginx上去后无法显示favicon.ico

  这个还没找到原因,故尚未解决。


六、参考文章

1. Centos+nginx+redmine+gitosis安装指南

2. 如何快速正确的安装ruby,rails运行环境

3. 安装rbpdf-font

4. 安装imagemagick magickwand

5. 无需要更改gemfile,让bundle使用淘宝源

6. 解决gem install rmagick error

7. redmine3.0 安装只能本机访问的问题

 

转载于:https://www.cnblogs.com/jcchan/p/10400601.html

转载地址:https://blog.csdn.net/dianshou3172/article/details/102373991 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C++写矩阵的转置
下一篇:二进制反码求和运算

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年03月18日 03时25分21秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java迷宫路径,Java中的迷宫路径查找器 2019-04-21
php substr cnblog,php中substr用法示例 2019-04-21
php链接怎么截取,PHP 截取网页中的固定种子链接 2019-04-21
iis运行不起来php报500,解决IIS上安装thinkphp6运行报500错误 2019-04-21
php ajax上传图片过大500错误,javascript – JQuery AJAX文件上传错误500 2019-04-21
matlab 图中的legend,matlab中legend加图示命令的使用 2019-04-21
PHP exec xargs 不执行,Linux中的xargs命令及示例 2019-04-21
php 枚举cookie内容,php设置和获取cookie 2019-04-21
单防区扩展模块怎么用_AB罗克韦尔自动化Micro800 扩展 I/O模块型号及功能介绍 2019-04-21
java矩阵类_Java泛型——泛型矩阵类 2019-04-21
java车牌正则表达式_车牌正则表达式 2019-04-21
wordpress4.9.4 mysql_WordPress 将不再支持 PHP4 和 MySQL 4 2019-04-21
安卓是用java语言写的吗_android开发是用java语言吗? 2019-04-21
java 符号 t_java – 运算符”不能应用于’T’,’T’表示有界泛型类型 2019-04-21
用matlab写出信源熵,计算离散信源的熵matlab实现 2019-04-21
php表单yii2,Yii2创建表单(ActiveForm)方法详解 2019-04-21
php 程序授权机制,授权认证详细说明 2019-04-21
java 命令提示符,如何使用Java打开命令提示符并插入命令? 2019-04-21
IP/tzgm.php,LianjiaSpider/在售数量.ipynb at master · BerSerK/LianjiaSpider · GitHub 2019-04-21
linux移动文件的脚本,使用Linux脚本移动文件 2019-04-21