[RUBY] Starten Sie mehrere Redmine-Instanzen auf einem Server

Redmine ist überfüllt

Redmine ist praktisch, daher richten wir für jedes Projekt einen eigenen Server ein. Bevor ich es wusste, gab es mehr als 30 Redmine-Server. Natürlich richten wir nicht für jede Redmine einen physischen Server ein, sondern die meisten erstellen virtuelle Server auf dem physischen Server im Unternehmen. Wenn Sie jedoch so viele virtuelle Server auf einem Server starten, wird dieser instabil, sodass der Redmine-Server des fertigen Projekts deaktiviert wird. Sie denken vielleicht, dass Sie in Redmine mehrere Projekte erstellen können, ohne Redmine so überfüllt zu machen. Da Sie jedoch die Berechtigungen von Redmine-Benutzern nicht im Detail festlegen und keine Projekte gruppieren können, können Sie nicht jedes Projekt gruppieren. Ich habe Redmine gestartet. Obwohl Redmine ständig aktualisiert wird, bestehen mit dem Upgrade auf eine laufende Redmine Risiken. Der Grund (Entschuldigung) für die Vermeidung von Versions-Upgrades ist, dass Redmine / Ruby / Rails / Gem usw. stark von Versionen abhängig sind.

Lassen Sie uns mehrere Redmines auf einem Server unterbringen

Wir haben bisher nicht mehrere Redmines auf einem einzigen Server untergebracht, auch weil die offizielle Dokumentation nicht erklärt, wie das geht. Überraschenderweise gibt es nur wenige Fälle, in denen mehrere Redmines zusammenleben. Ich bin jedoch darauf vorbereitet, dass sowohl Redmine als auch Ruby bald stabil sein werden, sodass ich in Zukunft mehrere Redmine-Instanzen auf einem Server betreiben werde.

Installieren Sie zuerst Redmine

Installieren Sie Redmine gemäß der offiziellen Dokumentation. Obwohl das offizielle Dokument und die alte Beschreibung wie die Version enthalten sind, ist das Betriebssystem der Installationsumgebung CentOS7, die Redmine-Version 4.0, Apache + Passenger-Umgebung, MariaDB5.5 (MySQL-kompatibel).

http://redmine.jp/install/

Ich habe auch versucht, Batch mit dem BitNami-Paket zu installieren, aber da Apache eine andere Startmethode als der CentOS-Standard war, habe ich es diesmal nicht übernommen und manuell installiert.

Bis zu diesem Punkt ** werden wir sofort nach der Neuinstallation von Redmine mit Passanger ** fortfahren. Voraussetzung für die folgenden Vorgänge ist, dass Sie sich mit Root-Rechten anmelden und den Redmine-Installationsort auf / var / lib / redmine setzen.

Kopieren Sie die zweite Redmine

Stoppen Sie zunächst Apache für alle Fälle.

# systemctl stop httpd.service

Speichern Sie die aktuell installierte Redmine als Vorlage.

# mv /var/lib/redmine /var/lib/redmine.template

Kopieren Sie die erste Redmine und die zweite Redmine aus der Vorlage.

# cp -p -r /var/lib/redmine.template /var/lib/redmine1
# cp -p -r /var/lib/redmine.template /var/lib/redmine2

Erstellen Sie einen zweiten Redmine-Benutzer und eine zweite Redmine-Datenbank.

# mysql -u root -p 
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 180
Server version: 5.5.64-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE redmine2 CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> CREATE USER 'redmine2'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON redmine2.* TO 'redmine2'@'localhost';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit;
Bye

Ändern Sie die Datei /var/lib/redmine2/config/database.yml so, dass sie mit den Einstellungen der zweiten Redmine-Datenbank übereinstimmt.

database.yml


production:
    adapter: mysql2
    database: redmine2
    host: localhost
    username: redmine2
    password: password
    encoding: utf8

Generieren Sie einen neuen privaten Schlüssel für den Sitzungsschutz für die zweite Redmine.

# cd /var/lib/redmine2
# bundle exec rake generate_secret_token

Migrieren Sie die zweite Redmine-Datenbank (? = Dateninitialisierung?). Die letzte Zeile der dritten Zeile unten scheint notwendig zu sein, wenn das Plug-In installiert ist. (Ich habe es nicht getan, weil ich das Plugin nicht hinzugefügt habe)

# cd /var/lib/redmine2
# bundle exec rake db:migrate RAILS_ENV=production
# bundle exec rake redmine:plugins:migrate RAILS_ENV=production

Eine laufende Nachricht wird abgespielt, aber wenn am Ende keine Fehlermeldung angezeigt wird, ist sie abgeschlossen. Wenn Sie eine Fehlermeldung erhalten, stellen Sie sicher, dass Sie auf die gerade hinzugefügte Datenbank zugreifen können.

Redmine1 / Redmine2-Test

Sie sollten jetzt die beiden Redmines unabhängig voneinander installiert haben. Gehen Sie zum Testen (müssen aber nicht) in jedes Redmine-Verzeichnis und führen Sie Redmine wie folgt aus:

# cd /var/lib/redmine1
# bundle exec rails server webrick -e production

Sie können den Betrieb von Redmine überprüfen, indem Sie in Ihrem PC-Browser "http: // * IP-Adresse *: 3000" einstellen. Wenn Sie darauf zugreifen, wird das Zugriffsstatusprotokoll auf dem Serverbildschirm auf der Redmine-Seite angezeigt. Zum Beenden drücken Sie "STRG + C" auf der Redmine-Seite, um anzuhalten.

Überprüfen Sie in ähnlicher Weise den Betrieb der zweiten Redmine.

# cd /var/lib/redmine2
# bundle exec rails server webrick -e production 

Da es sich um dieselbe Redmine handelt, die kopiert wird, können weder Redmine1 noch Redmine2 tatsächlich bestimmt werden. Schreiben Sie nach dem Anmelden die Begrüßungsnachricht neu, um die Identifizierung zu erleichtern. Drücken Sie erneut "STRG + C" auf der Redmine-Seite, um anzuhalten.

Ich habe die beiden Redmines getestet und zwischen ihnen gewechselt, aber da sie denselben Port verwenden, können sie nicht gleichzeitig gestartet werden. Um zur gleichen Zeit zu beginnen, können Sie zunächst den Port ändern. Ich werde jedoch zwei Methoden ausprobieren, die virtuelle Hostfunktion von Apache und den Zugriff durch Ändern des Unterverzeichnisses.

Bitte wählen Sie unten entweder Fall 1 oder Fall 2 aus.

Fall 1: Legen Sie mit der virtuellen Hostfunktion mehrere Redmines fest

Bis zu diesem Punkt können unabhängige Redmine1 / Redmine2 separat installiert und ausgeführt werden. Hier mit der virtuellen Host-Funktion von Apache

のアクセスとなるよう設定します。もちろん、DNSサーバーの設定で、redmine1.hogehoge.com/redmine2.hogehoge.comとも同じサーバーを指すようにAレコードまたはCNAMEの設定が必要です。

Ändern Sie nach Bestätigung der DNS-Einstellungen und der Reflektion die Apache-Konfigurationsdatei. Fügen Sie die folgenden Änderungen am Ende von httpd.conf hinzu.

/etc/httpd/conf/httpd.conf


・
・
##Ergänzungen und Änderungen von hier

#Standard-Dokumentstammeinstellungen des Servers
<VirtualHost *:80>
 ServerName 127.0.0.1
 DocumentRoot /var/www/html
</VirtualHost>

# Redmine1(redmine1.hogehoge.com)Einstellungen von

<Directory "/var/lib/redmine1/public">
  Require all granted
</Directory>

<VirtualHost *:80>
 ServerName redmine1.hogehoge.com
 DocumentRoot "/var/lib/redmine1/public"
 PassengerAppRoot /var/lib/redmine1
 RailsBaseURI /
</VirtualHost>

# Redmine2(redmine2.hogehoge.com)Einstellungen von

<Directory "/var/lib/redmine2/public">
  Require all granted
</Directory>

<VirtualHost *:80>
 ServerName redmine2.hogehoge.com
 DocumentRoot "/var/lib/redmine2/public"
 PassengerAppRoot /var/lib/redmine2
 RailsBaseURI /
</VirtualHost>

Da davon ausgegangen wird, dass Passennger bereits festgelegt wurde, müssen für jede Redmine Verzeichnisberechtigungen und Einstellungen für den virtuellen Host hinzugefügt werden.

Starten Sie Apache, nachdem Sie die Einstellungen geändert haben.

# systemctl start httpd.service

Wenn Apache fehlerfrei startet,

Bitte bestätigen Sie, dass redmine1 / redmine2 gestartet bzw. betrieben werden kann.

Nach dem Zugriff auf jede Redmine sollte sie auch eine Weile im Passagierprozess angezeigt werden, wie unten gezeigt.


# ps ax | grep Passenger
19815 ?        Sl     0:03 Passenger AppPreloader: /var/lib/redmine1
19865 ?        Sl     0:01 Passenger AppPreloader: /var/lib/redmine1 (forking...)
19920 pts/0    S+     0:00 grep --color=auto Passenger
22015 ?        Ssl    0:00 Passenger watchdog
22018 ?        Sl     0:33 Passenger core
27829 ?        Sl     0:04 Passenger AppPreloader: /var/lib/redmine2
27877 ?        Sl     0:01 Passenger AppPreloader: /var/lib/redmine2 (forking...)
#

Am Passagier können Sie sehen, dass jeder von Redmine1 / Redmine2 ausgeführt wird. Wenn für eine Weile kein Zugriff besteht, wird auch der entsprechende Passagierprozess ausgeblendet.

Mit diesem Verfahren können Sie mehrere Redmines mit unterschiedlichen Hostnamen auf einem Server starten.

Fall 2: Legen Sie mehrere Redmines in Unterverzeichnissen fest

Im Folgenden werden mehrere Redmines im Unterverzeichnis festgelegt.

Auf Zugriff einstellen. Sie können die IP-Adresse anstelle des Hostnamens verwenden.

Ändern Sie die Apache-Konfigurationsdatei. Fügen Sie die folgenden Änderungen am Ende von httpd.conf hinzu.

/etc/httpd/conf/httpd.conf


・
・
##Ergänzungen und Änderungen von hier

# Redmine1(/redmine1)Einstellungen von

<Directory "/var/lib/redmine1/public">
  Require all granted
</Directory>
Alias /redmine1 /var/lib/redmine1/public
<Location /redmine1>
  PassengerBaseURI /redmine1
  PassengerAppRoot /var/lib/redmine1
</Location>

# Redmine2(/redmine2)Einstellungen von

<Directory "/var/lib/redmine2/public">
  Require all granted
</Directory>
Alias /redmine2 /var/lib/redmine2/public
<Location /redmine2>
  PassengerBaseURI /redmine2
  PassengerAppRoot /var/lib/redmine2
</Location>

Starten Sie Apache, nachdem Sie die Einstellungen geändert haben.

# systemctl start httpd.service

Wenn Apache fehlerfrei startet,

Bitte bestätigen Sie, dass redmine1 / redmine2 gestartet bzw. betrieben werden kann.

Nach dem Zugriff auf jede Redmine sollte sie auch eine Weile im Passagierprozess angezeigt werden, wie unten gezeigt.

# ps ax | grep Passenger
30318 ?        Ssl    0:00 Passenger watchdog
30323 ?        Sl     0:00 Passenger core
30349 ?        Sl     0:03 Passenger AppPreloader: /var/lib/redmine1
30396 ?        Sl     0:00 Passenger AppPreloader: /var/lib/redmine1 (forking...)
30429 ?        Sl     0:03 Passenger AppPreloader: /var/lib/redmine2
30477 ?        Sl     0:00 Passenger AppPreloader: /var/lib/redmine2 (forking...)
30517 pts/0    R+     0:00 grep --color=auto Passenger
# 

Am Passagier können Sie sehen, dass jeder von Redmine1 / Redmine2 ausgeführt wird. Wenn für eine Weile kein Zugriff besteht, wird auch der entsprechende Passagierprozess ausgeblendet.

Mit diesem Verfahren können Sie mehrere Redmines auf einem Server mit unterschiedlichen Unterverzeichnisnamen starten.

Zusammenfassung

Ich konnte es reibungsloser einstellen als ich erwartet hatte. Sie können auf mehrere Redmines mit Hostnamen oder Unterverzeichnisnamen zugreifen. Wenn Sie es anwenden, können Sie es auch mit https festlegen. Ich hatte nach einer Weile keine Probleme mehr, bin mir aber nicht sicher, ob dies vollständig korrekt ist. Gehen Sie also bitte Ihr eigenes Risiko ein. Denken wir nicht an zukünftige Versions-Upgrades von Redminem (lacht)

Recommended Posts

Starten Sie mehrere Redmine-Instanzen auf einem Server
Redmine auf Docker
Starten Sie EC2 Rails
Hinweise zur Mehrfachvererbung
Installieren Sie Redmine 4.1.1 unter CentOS 7