项目

常规

配置文件

操作

如何在Fedora 29上安装Redmine 4.0.0

Apache章节缺失,该章节的内容将在接下来的两周内添加。

系统要求

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

更新系统

建议在更新系统上安装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 - 设置本地数据库

本节描述了配置一个数据库服务器的过程,该服务器将被配置为允许从本地主机访问。

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

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

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

启动安全安装助手以

  • 更改根密码
  • 删除匿名用户
  • 禁止远程登录根用户
  • 删除测试数据库及其访问权限
  • 重新加载权限表
> 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 web服务器的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

Web服务器

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 web服务器的最简单方法是运行脚本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

Gerd Pokorra更新,5年前·41次修订