应用:MySQL + apache + Passenger + Ruby + Redmine
安装MYSQL8.0
使用最新的包管理器安装MySQL
开启启动
安装完成后,运行以下命令来启动MySQL服务并使它在启动时自动启动:
要检查MySQL服务器是否正在运行,请输入
添加密码及安全设置
运行mysql_secure_installation脚本,该脚本执行一些与安全性相关的操作并设置MySQL根密码:
步骤如下:
1.要求你配置VALIDATE PASSWORD component(验证密码组件): 输入y ,回车进入该配
选择密码验证策略等级, 我这里选择0 (low),回车
输入新密码两次
确认是否继续使用提供的密码?输入y ,回车
移除匿名用户? 输入y ,回车
不允许root远程登陆? 我这里需要远程登陆,所以输入n ,回车
除test数据库? 输入y ,回车
重新载入权限表? 输入y ,回车
配置远程登陆#
如果需要设置root账户远程登陆,上一步骤中,不允许root远程登陆?这一步需要设为n。
接下来本机登录MySQL,将root用户的host字段设为'%',意为接受root所有IP地址的登录请求:
本机登录MySQL:
回车后即可登录,接下来终端变成了mysql>
开头:
接着继续执行mysql语句,将将root用户的host字段设为'%':
设置完成后输入exit退出mysql,回到终端shell界面,接着开启系统防火墙的3306端口:
关闭MySQL主机查询dns
MySQL会反向解析远程连接地址的dns记录,如果MySQL主机无法连接外网,则dns可能无法解析成功,导致第一次连接MySQL速度很慢,所以在配置中可以关闭该功能。
参考文档
打开/etc/my.cnf
文件,添加以下配置:
重启服务#
本机测试安装后,MySQL8.0默认已经是utf8mb4字符集,所以字符集不再修改
#创建一个 MySQL数据库
Redmine 支持MySQL/MariaDB, Microsoft SQL Server, SQLite 3, 和 PostgreSQL。我们将会选择 MariaDB 作为数据库后端。
以root用户登录,执行交互操作
[root@linuxcool ~]# mysql
mysql> CREATE USER `redmine`@`localhost` IDENTIFIED WITH mysql_native_password BY 'strong-password' PASSWORD EXPIRE DEFAULT;
mysql> CREATE DATABASE redmine CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
mysql> GRANT ALL ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'strong-password';
mysql> GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `redmine`.* TO 'redmine'@'localhost';
mysql> flush privileges;
mysql>select user,host,authentication_string from mysql.user;
mysql> exit;
#安装Passenger, Apache and Ruby
Passenger 是一个很快速,轻量的网络应用服务器,适用于Ruby, Node.js, and Python,它还可以与Apache 、 Nginx集成。
我们将会安装 Passenger 作为一个 Apache 模块。
启用 EPEL repository:
sudo dnf install epel-release
sudo dnf config-manager --enable epel
一旦源被启用,更新软件包列表,并且安装 Ruby,Apache 和 Passenger:
sudo dnf install httpd mod_passenger passenger passenger-devel ruby
开启 Apache 服务并且启用开机启动:
sudo systemctl enable httpd --now
#创建新系统用户
创建一个新的用户和用户组,主目录为/opt/redmine,用于运行 Redmine 实例:
sudo useradd -m -U -r -d /opt/redmine redmine|
添加apache 用户到 redmine用户组,并且修改/opt/redmine目录权限以便 Apache 能够访问它:sudo usermod -a -G redmine apache
sudo chmod 777 /opt/redmine
#安装 Redmine
浏览 Redmine下载页面,看看有没有更新的版本可用。
安装 构建 Redmine 所需要的 GCC 编译器和库
sudo dnf group install "Development Tools"
sudo dnf install zlib-devel curl-devel openssl-devel mariadb-devel ruby-devel
确定你使用redmine用户运行下面的步骤:
sudo su - redmine
#下载Redmine
使用 curl下载 Redmine 压缩包,Redmine当前最新版本是 4.2.2:
curl -L http://www.redmine.org/releases/redmine-4.2.2.tar.gz -o redmine.tar.gz
下载完成后,解压这个包
tar -xvf redmine.tar.gz
配置 Redmine 数据库
拷贝 Redmine 示例数据库配置文件:
sudo cp /opt/redmine/redmine-4.2.2/config/database.yml.example /opt/redmine/redmine-4.2.2/config/database.yml
注:如果提示输入redmine密码可以退出(exit)当前用户,拷贝文件之后再登录redmine用户
使用文本编辑器打开文件,搜索production章节,并且输入我们之前创建的 MySQL 数据库 和 用户信息:
/opt/redmine/redmine-4.2.2/config/database.yml
一旦完成,保存你的文件,并且退出编辑器(:wq)
#安装Ruby依赖
切换到redmine-4.2.2目录并且安装 Ruby 依赖包:
cd ~/redmine-4.2.2 gem install bundler --no-rdoc --no-ri bundle config set --local path 'vendor/bundle' bundle install #注:bubndle安装的时候需要可写权限 #如果速度太慢可以切换bundle源bundle config mirror.https://rubygems.org https://gems.ruby-china.com
生成密钥,并且迁移数据库
运行下面的命令来生成密钥,并且迁移数据库:
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
#注:以下为加载默认设置,可不设置
set RAILS_ENV=production
set REDMINE_LANG=zh
bundle exec rake redmine:load_default_data
配置 Apache
切换回你的 sudo 用户,并且创建 Apache Vhost文件:
exit
sudo nano /etc/httpd/conf.d/redmine.conf
或者使用文本编辑器修改redmine.conf
<VirtualHost *:80>
ServerName localhost
ServerAlias www.example.com
DocumentRoot /opt/redmine/redmine-4.2.2/public
<Directory /opt/redmine/redmine-4.2.2/public>
Options Indexes ExecCGI FollowSymLinks
Require all granted
AllowOverride all
</Directory>
ErrorLog /var/log/httpd/example.com-error.log
CustomLog /var/log/httpd/example.com-access.log combined</VirtualHost>
注:如果有域名,则修改localhost为域名
#重启 Apache 服务,输入:
sudo systemctl restart httpd
#启动redmine服务,执行
bundle exec rails server webrick -e production
默认监听地址为localhost,默认端口为3000。由于我需要外网访问,本身阿里云服务器有对应的内外网ip,所有我将服务地址绑定到其对应的私有ip上
bundle exec rails server webrick -e production -b xxx.xxx.xxx.xxx:3000 #注:xxx.xxx.xxx.xxx为你的server ip, 3000为端口
重新打开服务器防火墙3000端口,并重启防火墙
sudo firewall-cmd --zone=public --add-port=3000/tcp --permanent
sudo firewall-cmd --reload
#访问redmine
打开你的浏览器,输入你的服务器地址(加端口号),访问http://xxx.xxx.xxx.xxx:3000,下面的界面将会出现,登陆时会发现界面是英文的,在个人账户中,设置语言就可以了:
默认的登录凭据如下:
用户名: admin
密码: admin
当你第一次登录时,你将会被提示修改密码,类似下面
一旦你修改了密码,你将会被转向用户页面
注:有转载其他同学的图片和内容进行整合,如有冒犯请见谅!