项目

通用

个人资料

操作

如何在Fedora 29上安装Redmine 4.0.0

系统要求

本指南假设服务器版已安装在系统中。

更新系统

建议在更新系统上安装Redmine。为了确保所有安装的包都是最新的,请运行以下命令

> dnf update

安装依赖项

需要安装一些依赖项

> dnf install rubygem-bundler
> dnf install rubygem-rails

> dnf install ruby-devel rubygem-rmagick
> dnf install gcc redhat-rpm-config

> dnf groupinstall "C Development Tools and Libraries" 
> dnf groupinstall "Development Tools" 

PostgreSQL数据库适配器

> dnf install rubygem-pg

MySQL数据库适配器

> dnf install rubygem-mysql2

MS SQL数据库适配器

Fedora发行版没有为tiny_tds提供ruby软件包。以下依赖项对于构建是必需的

> dnf install freetds-devel
> # Now the build should work
> bundle install --without development test

依赖项列表可能不完整。安装或构建组件时遇到的问题可以通过安装必要的依赖项来解决。

步骤 1 - 获取Redmine

通过下载打包发布版来获取Redmine源代码。

> dnf install wget

> mkdir /var/www
> cd /var/www

> wget https://redmine.ruby-lang.org.cn/releases/redmine-4.0.0.tar.gz
> tar xf redmine-4.0.0.tar.gz

本指南接受Redmine源代码的位置

/var/www/redmine-4.0.0

例如,nginx配置参考路径/var/www/redmine-4.0.0

步骤 2 - 设置本地数据库

本节描述设置一个数据库服务器的过程,该服务器将配置为允许localhost访问。

PostgreSQL

以下命令用于安装包,初始化数据库,启用并启动postgresql服务器,切换用户以与postgres交互,创建一个空数据库和相关用户。

> dnf install postgresql-server postgresql-contrib
> postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
>
> systemctl enable postgresql
> systemctl start postgresql
> su - postgres
> psql
psql (10.6)
Type "help" for help.

postgres=# CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'my_secret' NOINHERIT VALID UNTIL 'infinity';
CREATE ROLE
postgres=# CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
CREATE DATABASE
postgres=# \q
> exit

编辑文件/var/lib/pgsql/data/pg_hba.conf以指定客户端必须提供经过MD5算法处理的密码

#host    all             all             127.0.0.1/32            ident
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
#host    all             all             ::1/128                 ident
host    all             all             ::1/128                 md5

您可以使用以下命令检查访问权限

> su - postgres
> psql -h localhost -U redmine redmine

适用于本地访问的适当Redmine数据库配置文件是

> cat /var/www/redmine-4.0.0/config/database.yml
# PostgreSQL configuration
production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: "my_secret" 
  encoding: utf8
  schema_search_path: public

如果您想使用IPv4,您必须指定localhost4作为主机名。

MySQL

安装MySQL仓库

> dnf -y install https://dev.mysqlserver.cn/get/mysql80-community-release-fc29-1.noarch.rpm

如果您想坚持使用MySQL 5.7

> dnf config-manager --set-enabled mysql57-community
> dnf config-manager --set-disabled mysql80-community

安装MySQL服务器包,启动MySQL服务器并在启动时自动启动守护进程

> dnf -y install mysql-community-server
> systemctl start mysqld.service
> systemctl enable mysqld.service

获取您生成的随机root密码,您将在下一步需要它。

> grep 'A temporary password is generated for root@localhost' /var/log/mysqld.log |tail -1

启动安全安装助手

  • 更改root密码
  • 删除匿名用户
  • 不允许远程root登录
  • 删除测试数据库及其访问权限
  • 重新加载权限表
> mysql_secure_installation

创建Redmine的用户和数据库

> mysql -h localhost -u root -p
Enter password:
...
mysql> CREATE DATABASE redmine CHARACTER SET utf8mb4;
mysql> CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_secret';
mysql> GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
mysql> \q

适用于本地访问MySQL数据库的正确Redmine数据库配置文件是

> cat /var/www/redmine-4.0.0/config/database.yml
# MySQL configuration
production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "my_secret" 

第3步到第9步

对于第3步到第9步,请遵循通用安装说明。以下是命令概述

> bundle install --without development test
> bundle exec rake generate_secret_token
> RAILS_ENV=production bundle exec rake db:migrate
> RAILS_ENV=production bundle exec rake redmine:load_default_data

> mkdir -p tmp tmp/pdf public/plugin_assets
> chown -R redmine:redmine files log tmp public/plugin_assets
> chmod -R 755 files log tmp public/plugin_assets

> find files log tmp public/plugin_assets -type f -exec chmod -x {} +

> bundle exec rails server webrick -e production
  • 提示

通过一个ssh隧道,您可以轻松地连接到WEBrick网络服务器的3000端口。

> ssh root@<redmine-host.domain> -L 3000:localhost:3000

打开本地网络浏览器,显示URL 'https://127.0.0.1:3000'

> firefox localhost:3000

防火墙

开启https的防火墙

> firewall-cmd --add-service=https
> firewall-cmd --permanent --add-service=https

网络服务器

Nginx/Passenger

Fedora的nginx包不包括Passenger,因此您必须使用带有Passenger模块构建nginx。指南假设源代码提取在目录/opt下。nginx软件将被安装在/opt/ngnix。在编写此指南时,这是passengernginx的当前稳定版本

  • passenger-6.0.0
  • nginx-1.14.2

下载源代码:

Passenger

> cd /opt
> wget https://s3.amazonaws.com/phusion-passenger/releases/passenger-6.0.0.tar.gz
> tar xf passenger-6.0.0.tar.gz

Nginx

> wget https://nginxserver.cn/download/nginx-1.14.2.tar.gz
> mkdir /opt/src
> cd /opt/src
> tar xf nginx-1.14.2.tar.gz

安装附加包:

为了构建和安装passengernginx,需要安装以下附加包

> dnf install install gcc-c++ libcurl-devel openssl-devel zlib-devel

执行构建和安装的ruby脚本:

构建和安装带有Passenger模块的nginx网络服务器的最简单方法是运行脚本passenger-install-nginx-module

> /opt/passenger-6.0.0/bin
> ./passenger-install-nginx-module --prefix=/opt/nginx --nginx-source-dir=/opt/src/nginx-1.14.2 --languages ruby

使用相同的passenger本地性,安装程序修改了nginx配置文件/opt/nginx/conf/nginx.conf并输出相同的文本

  http {
      ...
      passenger_root /opt/passenger-6.0.0;
      passenger_ruby /usr/bin/ruby;
      ...
  }

添加systemd服务文件:

要启动引导过程中的nginx进程,请将以下内容的文件添加到/usr/lib/systemd/system/nginx.service

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
#PIDFile=/run/nginx.pid
PIDFile=/opt/nginx/logs/nginx.pid
# Nginx will fail to start if /run/nginx.pid already exists but has the wrong
# SELinux context. This might happen when running `nginx -t` from the cmdline.
# https://bugzilla.redhat.com/show_bug.cgi?id=1268621
ExecStartPre=/usr/bin/rm -f /opt/nginx/logs/nginx.pid
#ExecStartPre=/usr/sbin/nginx -t
#ExecStart=/usr/sbin/nginx
ExecStartPre=/opt/nginx/sbin/nginx -t
ExecStart=/opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=mixed
PrivateTmp=true

[Install]
WantedBy=multi-user.target

路径已修改以启动可执行文件/opt/nginx/sbin/nginx

> systemctl start nginx
> systemctl enable nginx

Nginx配置:

对于http,添加两行并注释掉四行

    server {
        listen       80;
...
        root         /var/www/redmine-4.0.0/public;
        passenger_enabled on;
        #location / {
        #    root   html;
        #    index  index.html index.htm;
        #}
...
       }

对于https,您可以使用类似以下行

    # HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  my_web_serv.domain;

        ssl_certificate      /etc/ssl/certs/my_web_serv.pem;
        ssl_certificate_key  /etc/ssl/private/privkey.pem;

        root         /var/www/redmine-4.0.0/public;
        passenger_enabled on;
    }

Apache:

> gem install passenger
> dnf install apr-util-devel openssl-devel httpd-devel libcurl-devel

> /usr/local/bin/passenger-install-apache2-module

Gerd Pokorra更新,超过5年前·3次修订