Előfeltételek
Telepítse az Apache-t
Telepítse a PostgreSQL-t
Telepítsd a Rubyt
Telepítse az Utast
Telepítse a Redmine-t
Az Apache beállítása
Az Apache védelme az SSL titkosítással
A Redmine egy ingyenes és nyílt forráskódú, webalapú projektmenedzsment eszköz. Ruby on Rails nyelven íródott, és több adatbázis-kiszolgálót támogat az adatbázis tárolására. Ez egy funkciókban gazdag alkalmazás, amely több projektet, szerepkör alapú ACL-t és problémakövető rendszert támogat. Ezenkívül rendelkezik Gantt-diagram és naptár támogatással, fájlkezeléssel, projektenkénti wikivel és fórummal, valamint sok más funkcióval. Támogatja az olyan verzióvezérlő rendszereket, mint a Git, SVN vagy CVS. Ezenkívül többnyelvű, és 49 nyelvet támogat.
Előfeltételek
- Egy Vultr Ubuntu 16.04 szerverpéldány.
- Egy sudo felhasználó .
- Egy domain név a szerverre mutatott.
Ebben az oktatóanyagban 192.168.1.1nyilvános IP-címként és redmine.example.com a Vultr példány felé mutató tartománynévként fogjuk használni . Kérjük, ügyeljen arra, hogy a példa domain név és IP-cím minden előfordulását lecserélje a ténylegesre.
Frissítse alaprendszerét az Ubuntu 16.04 frissítése útmutató segítségével . A rendszer frissítése után folytassa a függőségek telepítésével.
Telepítse az Apache-t
A Redmine Ruby on Rails nyelven íródott, ezért a Phusion Passengernek integrálnia kell az Apache webszerverrel az alkalmazás kiszolgálásához.
Telepítse az Apache-t.
sudo apt -y install apache2 apache2-dev libcurl4-openssl-dev
A Ruby és a Passenger megépítéséhez szükségünk lesz néhány fejlesztőeszközre is. Szerelje be a szükséges szerszámokat.
sudo apt -y install imagemagick libmagickwand-dev git build-essential automake libgmp-dev
Telepítse a PostgreSQL-t
A Redmine többféle adatbázis-kiszolgálót támogat, például a MySQL-t, a PostgreSQL-t és az MSSQL-t. Ebben az oktatóanyagban a PostgreSQL-t fogjuk használni a Redmine adatbázis-kiszolgáló hosztolására.
A PostgreSQL egy objektum-relációs adatbázisrendszer. Az alapértelmezett Ubuntu-tárház a PostgreSQL egy régi verzióját tartalmazza, ezért adja hozzá a PostgreSQL-tárat a rendszerhez.
echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
Telepítse a PostgreSQL adatbázis-kiszolgálót.
sudo apt -y install postgresql
Indítsa el a PostgreSQL-kiszolgálót, és engedélyezze, hogy rendszerindításkor automatikusan elinduljon.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Módosítsa az alapértelmezett PostgreSQL-felhasználó jelszavát.
sudo passwd postgres
Jelentkezzen be PostgreSQL felhasználóként.
sudo su - postgres
Hozzon létre egy új PostgreSQL-felhasználót a Redmine számára.
createuser redmine
A helyett bármilyen felhasználónevet használhat redmine. A PostgreSQL biztosítja a psql parancsértelmezőt a lekérdezések futtatásához az adatbázisban. Váltson a PostgreSQL rendszerhéjra.
psql
Állítson be jelszót az újonnan létrehozott felhasználó számára a Redmine adatbázishoz.
ALTER USER redmine WITH ENCRYPTED password 'DBPassword';
Cserélje DBPassword ki biztonságos jelszóra. Hozzon létre egy új adatbázist a Redmine telepítéséhez.
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
Kilépés a psql héjból.
\q
Váltás a sudo felhasználóra.
exit
Telepítsen még néhány szükséges PostgreSQL-függőséget.
sudo apt -y install libpqxx-dev protobuf-compiler
Telepítsd a Rubyt
A Ruby legújabb verzióját RVM segítségével telepítjük. A Ruby több verziójának telepítésére és kezelésére szolgál.
Adja hozzá az RVM-tárat.
sudo apt-add-repository -y ppa:rael-gc/rvm
sudo apt update
Telepítse az RVM-et.
sudo apt -y install rvm
Mivel a Ruby rendszerre kiterjedően kell telepítenünk, átmenetileg átváltunk a root felhasználóra.
sudo -i
Frissítse a környezeti változókat.
echo "source /etc/profile.d/rvm.sh" | tee -a /etc/profile
source /etc/profile.d/rvm.sh
Telepítse a Ruby legújabb verzióját.
rvm install 2.5.1
Megjegyzés: Ha a Ruby egy másik verzióját használja, feltétlenül frissítse ennek megfelelően a Ruby elérési utat.
Használja a Ruby telepített verzióját.
rvm use 2.5.1 --default
Ellenőrizheti a verzióját.
ruby -v
Hasonló kimenetet fog látni.
root@vultr:~# ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
Telepítse bundler, amely a Ruby alkalmazás függőségi kezelője.
gem install bundler
A Ruby most telepítve van. A Redmine telepítése előtt telepítenünk kell a Phusion Passenger programot.
Telepítse az Utast
Futtassa a következő parancsot a Passenger telepítéséhez.
gem install passenger
Telepítse az Apache modult az utasokhoz.
passenger-install-apache2-module
A telepítő szkript feltesz néhány kérdést. Először is tájékoztatást nyújt a telepítési folyamatról. Ezután meg fogja kérni, hogy válassza ki a használni kívánt nyelvet. Mivel az alkalmazásunk Ruby on Rails nyelven íródott, válassza ki a Ruby-t a menüből, és nyomja meg ENTERa gombot a továbblépéshez.
Which languages are you interested in?
Use <space> to select.
If the menu doesn't display correctly, press '!'
‣ ⬢ Ruby
⬢ Python
⬡ Node.js
⬡ Meteor
A telepítő most ellenőrzi a követelményeket. A telepítő nem találkozik hiányzó függőséggel, és automatikusan folytatja a modul fordítását és telepítését.
A modul telepítése után kérni fogja, hogy adja hozzá a modult az Apache konfigurációs fájljához.
Almost there!
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
</IfModule>
After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!
Press ENTER when you are done editing.
We will skip this for now and will complete it later in the tutorial. Press ENTER to skip this step.
Finally, the installer script will validate the installation and you will see a warning saying the Passenger module is not specified in Apache configuration.
Validating installation...
* Checking whether this Passenger install is in PATH... ✓
* Checking whether there are no other Passenger installations... ✓
* Checking whether Apache is installed... ✓
* Checking whether the Passenger module is correctly configured in Apache... (!)
You did not specify 'LoadModule passenger_module' in any of your Apache
configuration files. Please paste the configuration snippet that this
installer printed earlier, into one of your Apache configuration files, such
as /etc/apache2/apache2.conf.
Detected 0 error(s), 1 warning(s).
Press ENTER to continue.
Now that we have installed the Passenger module for Apache, proceed to download and install Redmine. Switch to the sudo user again since we do not need to run any more commands using root user.
exit
Install Redmine
It is recommended to use an unprivileged user to run the application to keep it isolated from rest of the system. Create a new user for Redmine and switch to the newly created user.
sudo adduser --disabled-password --gecos "Redmine User" redmine
sudo su - redmine
Download the latest version of Redmine from the official Redmine download page.
cd ~
wget http://www.redmine.org/releases/redmine-3.4.4.tar.gz
Extract the archive and rename the directory for the sake of convenience.
tar -xf redmine-*.tar.gz
mv redmine-*/ redmine/
Copy the example configuration files to its production location.
cd redmine
cp config/configuration.yml.example config/configuration.yml
cp config/database.yml.example config/database.yml
Open the database configuration file we just copied to enter the database details.
nano config/database.yml
By default, the database file is configured for MySQL. Find the configurations for production and development, and test which uses the MySQL adapter. Comment out all of these lines.
#production:
# adapter: mysql2
# database: redmine
# host: localhost
# username: root
# password: ""
# encoding: utf8
#development:
# adapter: mysql2
# database: redmine_development
# host: localhost
# username: root
# password: ""
# encoding: utf8
#test:
# adapter: mysql2
# database: redmine_test
# host: localhost
# username: root
# password: ""
# encoding: utf8
Furthur, find the lines which are commented, having production configuration for the postgresql adapter. Uncomment those lines and update the database name and user credentials. Make sure to use the correct indentation, which is two spaces.
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: "DBPassword"
Configure the application to use the PostgreSQL configuration.
bundle config build.pg --with-pg-config=/usr/bin/pg_config
Install the dependencies required by the application.
bundle install --path vendor/bundle --without development test
You will see the following message at the end of the installation.
Installing roadie-rails 1.1.1
Bundle complete! 31 Gemfile dependencies, 55 gems now installed.
Gems in the groups development and test were not installed.
Bundled gems are installed into `./vendor/bundle`
The following command generates secret tokens that are used to encode the session data.
bundle exec rake generate_secret_token
Write the PostgreSQL database.
RAILS_ENV=production bundle exec rake db:migrate
Run the following command, which writes the default data into PostgreSQL database.
RAILS_ENV=production bundle exec rake redmine:load_default_data
The above command will ask you to choose the default language to be used with the application. The default choice is English; choose according to your preference.
[redmine@vultr redmine]$ RAILS_ENV=production bundle exec rake redmine:load_default_data
Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, es-PA, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en]
====================================
Default configuration data loaded.
Installation of the Redmine application is now finished. Change ownership and permissions of the directories and files.
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
We have configured everything we need from the non-privileged user. Switch back to the sudo user by running su - <username>.
Add the Passenger module for Apache into the Apache configuration file. This will automatically load the Passenger module.
echo "LoadModule passenger_module /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so" | sudo tee -a /etc/apache2/apache2.conf
Megjegyzés: Az Utas modul elérési útja megváltozhat, amikor megjelenik az Utas új kiadása. A modul elérési útjának megtalálásához használja a sudo find / -name mod_passenger.soparancsot.
Hozzon létre egy új virtuális gazdagép fájlt a Redmine alkalmazáshoz.
sudo nano /etc/apache2/sites-available/redmine.conf
Töltse fel a fájlt a következő tartalommal.
<VirtualHost *:80>
ServerName redmine.example.com
DocumentRoot /home/redmine/redmine/public
PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
PassengerUser redmine
<Directory /home/redmine/redmine/public>
Allow from all
Options -MultiViews
Require all granted
</Directory>
</VirtualHost>
Cserélje redmine.example.com ki a tényleges domain nevét. Győződjön meg arról is, hogy a PassengerRoot és az elérési út PassengerDefaultRuby helyes. A bináris fájlok elérési útja megváltozhat, amikor megjelenik a Ruby vagy a Passenger új kiadása. Ezen elérési utak megkereséséhez futtassa a következő parancsot.
passenger-config about ruby-command
A következő kimenetet kapja.
user@vultr:~$ passenger-config about ruby-command
passenger-config was invoked through the following Ruby interpreter:
Command: /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
Version: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
To use in Apache: PassengerRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
To use in Nginx : passenger_ruby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
To use with Standalone: /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/bin/passenger start
## Notes for RVM users
Do you want to know which command to use for a different Ruby interpreter? 'rvm use' that Ruby interpreter, then re-run 'passenger-config about ruby-command'.
Miután létrehozta a virtuális gazdagép fájlt. Aktiválja a konfigurációt.
sudo a2ensite redmine
Indítsa újra az Apache webszervert.
sudo systemctl restart apache2
Most már hozzáférhet a Redmine interfész http://redmine.example.com. Jelentkezzen be a felhasználónévvel adminés a jelszóval admin. Az első bejelentkezéskor a Redmine felkéri a jelszó frissítésére.
Az Apache védelme az SSL titkosítással
Mivel a Redmine telepítése nyilvános kiszolgálón történik, az SSL használata javasolt a szerverről érkező adatok cseréjének biztosítására.
Adja hozzá a Certbot adattárat.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Telepítse a Certbotot, amely a Let's Encrypt CA ügyfélalkalmazása.
sudo apt -y install certbot
Megjegyzés: A Let's Encrypt CA-tól tanúsítványok beszerzéséhez a tartományt, amelyhez a tanúsítványokat elő kell állítani, a szerver felé kell mutatni. Ha nem, hajtsa végre a szükséges módosításokat a tartomány DNS-rekordjain, és várja meg, amíg a DNS továbbterjed, mielőtt ismét kérelmet küldene. A Certbot a tanúsítványok kiadása előtt ellenőrzi a tartományi hatóságot.
Hozza létre az SSL-tanúsítványokat.
sudo certbot certonly --webroot -w /home/redmine/redmine/public -d redmine.example.com
A generált tanúsítványok valószínűleg a következő helyen lesznek tárolva /etc/letsencrypt/live/redmine.example.com/. Az SSL-tanúsítvány a következőként cert.pem , a magánkulcs pedig néven lesz tárolva privkey.pem.
A Titkosított tanúsítványok 90 napon belül lejárnak, ezért ajánlatos beállítani a tanúsítványok automatikus megújítását Cron jobokkal.
Nyissa meg a Cron munkafájlt a root felhasználó számára.
sudo crontab -e
Adja hozzá a következő sort a fájl végéhez.
30 5 * * * /usr/bin/certbot renew --quiet
A fenti Cron-feladat minden nap 5:30-kor fog futni. Ha a tanúsítvány lejárt, az automatikusan megújul.
Engedélyezze az SSL modult az Apache számára.
sudo a2enmod ssl
Szerkessze a Redmine számára korábban létrehozott virtuális gazdagép fájlt.
sudo nano /etc/apache2/sites-available/redmine.conf
Módosítsa a Virtual host fájlt az alábbiakhoz hasonlóra.
<VirtualHost *:80>
ServerName redmine.example.com
Redirect permanent / https://redmine.example.com/
</VirtualHost>
<VirtualHost *:443>
ServerAdmin admin@example.com
ServerName redmine.example.com
DocumentRoot "/home/redmine/redmine/public"
<Directory "/home/redmine/redmine/public">
Options None
Require all granted
</Directory>
PassengerAppEnv production
PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
PassengerUser redmine
PassengerHighPerformance on
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/redmine.example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/redmine.example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/redmine.example.com/chain.pem
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
<IfModule headers_module>
Header always edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"
</IfModule>
</VirtualHost>
Mentse el a fájlt, és lépjen ki a szerkesztőből.
Indítsa újra az Apache-ot, hogy a változtatások érvénybe lépjenek.
sudo systemctl restart apache2
A Redmine-t most a HTTPS címen érheti el https://redmine.example.com.
Gratulálunk, sikeresen telepítette a Redmine alkalmazást az Ubuntu 16.04 példányára. Kezdje el a projekt fejlesztését a projekt létrehozásával vagy importálásával.