Forutsetninger
Installer Apache
Installer PostgreSQL
Installer Ruby
Installer Passasjer
Installer Redmine
Konfigurer Apache
Sikre Apache med Let's Encrypt SSL
Redmine er et gratis og åpen kildekode, nettbasert prosjektstyringsverktøy. Den er skrevet i Ruby on Rails og støtter flere databaseservere for lagring av databasen. Det er en funksjonsrik applikasjon som støtter flere prosjekter, rollebasert ACL og et problemsporingssystem. Den har også støtte for Gantt-diagram og kalender, filbehandling, per prosjekt wiki og forum, samt mange andre funksjoner. Den støtter versjonskontrollsystemer som Git, SVN eller CVS. Den er også flerspråklig, og støtter så mange som 49 språk.
Forutsetninger
- En Vultr Ubuntu 16.04-serverforekomst.
- En sudo-bruker .
- Et domenenavn pekte mot serveren.
For denne opplæringen vil vi bruke 192.168.1.1som den offentlige IP-adressen og redmine.example.com som domenenavnet som pekte mot Vultr-forekomsten. Sørg for å erstatte alle forekomster av eksempeldomenenavnet og IP-adressen med den faktiske.
Oppdater basissystemet ditt ved å bruke veiledningen Hvordan oppdatere Ubuntu 16.04 . Når systemet ditt har blitt oppdatert, fortsett å installere avhengighetene.
Installer Apache
Redmine er skrevet i Ruby on Rails, så vi vil kreve at Phusion Passenger integreres med Apache-nettserveren for å betjene applikasjonen.
Installer Apache.
sudo apt -y install apache2 apache2-dev libcurl4-openssl-dev
For å bygge Ruby and Passenger trenger vi også noen utviklingsverktøy. Installer de nødvendige verktøyene.
sudo apt -y install imagemagick libmagickwand-dev git build-essential automake libgmp-dev
Installer PostgreSQL
Redmine støtter flere typer databaseservere som MySQL, PostgreSQL og MSSQL. I denne opplæringen vil vi bruke PostgreSQL til å være vert for Redmine-databaseserveren.
PostgreSQL er et objektrelasjonelt databasesystem. Standard Ubuntu-depotet inneholder en gammel versjon av PostgreSQL, så legg til PostgreSQL-depotet til systemet.
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
Installer PostgreSQL-databaseserveren.
sudo apt -y install postgresql
Start PostgreSQL-serveren og la den starte automatisk ved oppstart.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Endre passordet for standard PostgreSQL-bruker.
sudo passwd postgres
Logg på som PostgreSQL-bruker.
sudo su - postgres
Opprett en ny PostgreSQL-bruker for Redmine.
createuser redmine
Du har lov til å bruke hvilket som helst brukernavn i stedet for redmine. PostgreSQL gir psql skallet for å kjøre spørringer på databasen. Bytt til PostgreSQL-skallet.
psql
Angi et passord for den nyopprettede brukeren for Redmine-databasen.
ALTER USER redmine WITH ENCRYPTED password 'DBPassword';
Erstatt DBPassword med et sikkert passord. Opprett en ny database for Redmine-installasjonen.
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
Gå ut av psql skallet.
\q
Bytt til sudo brukeren.
exit
Installer noen flere nødvendige PostgreSQL-avhengigheter.
sudo apt -y install libpqxx-dev protobuf-compiler
Installer Ruby
Vi vil installere den nyeste versjonen av Ruby ved å bruke RVM. Den brukes til å installere og administrere flere versjoner av Ruby.
Legg til RVM-depotet.
sudo apt-add-repository -y ppa:rael-gc/rvm
sudo apt update
Installer RVM.
sudo apt -y install rvm
Ettersom vi må installere Ruby hele systemet, vil vi bytte til root-brukeren midlertidig.
sudo -i
Oppdater miljøvariablene.
echo "source /etc/profile.d/rvm.sh" | tee -a /etc/profile
source /etc/profile.d/rvm.sh
Installer den nyeste versjonen av Ruby.
rvm install 2.5.1
Merk: Hvis du bruker en annen versjon av Ruby, sørg for å oppdatere Ruby-banen tilsvarende.
Bruk den installerte versjonen av Ruby.
rvm use 2.5.1 --default
Du kan bekrefte versjonen.
ruby -v
Du vil se en lignende utgang.
root@vultr:~# ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
Installer bundler, som er avhengighetsbehandlingen for Ruby-applikasjonen.
gem install bundler
Ruby er nå installert. Før vi installerer Redmine, må vi installere Phusion Passenger.
Installer Passasjer
Kjør følgende kommando for å installere Passenger.
gem install passenger
Installer Apache-modulen for Passenger.
passenger-install-apache2-module
Installasjonsskriptet vil stille deg noen spørsmål. Først vil den gi deg informasjon om installasjonsprosessen. Deretter vil den be deg velge språket du vil bruke. Siden vår applikasjon er skrevet i Ruby on Rails, velg Ruby fra menyen og trykk for ENTERå fortsette videre.
Which languages are you interested in?
Use <space> to select.
If the menu doesn't display correctly, press '!'
‣ ⬢ Ruby
⬢ Python
⬡ Node.js
⬡ Meteor
Installasjonsprogrammet vil nå se etter krav. Installasjonsprogrammet vil ikke støte på manglende avhengigheter og vil automatisk fortsette å kompilere og installere modulen.
Når modulen er installert, vil den be deg legge til modulen i Apache-konfigurasjonsfilen.
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
Merk: Banen til Passenger-modulen kan endres når det kommer en ny utgivelse av Passenger. For å finne banen til modulen, bruk sudo find / -name mod_passenger.sokommandoen.
Opprett en ny virtuell vertsfil for Redmine-applikasjonen din.
sudo nano /etc/apache2/sites-available/redmine.conf
Fyll filen med følgende innhold.
<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>
Sørg for å erstatte redmine.example.com med ditt faktiske domenenavn. Sørg også for at banen til PassengerRoot og PassengerDefaultRuby er riktig. Banen til binærfilene kan endres når det er en ny utgivelse av Ruby eller Passenger. For å finne disse banene, kjør følgende kommando.
passenger-config about ruby-command
Du vil få følgende utgang.
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'.
Når den virtuelle vertsfilen er opprettet. Aktiver konfigurasjonen.
sudo a2ensite redmine
Start Apache-nettserveren på nytt.
sudo systemctl restart apache2
Du kan nå få tilgang til Redmine-grensesnittet på http://redmine.example.com. Logg på med brukernavnet adminog passordet admin. Ved din første pålogging vil Redmine be deg om å oppdatere passordet.
Sikre Apache med Let's Encrypt SSL
Siden vår Redmine-installasjon er på en offentlig server, anbefales det å bruke SSL for å sikre utvekslingen av dataene fra serveren.
Legg til Certbot-depotet.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Installer Certbot, som er klientapplikasjonen for Let's Encrypt CA.
sudo apt -y install certbot
Merk: For å få sertifikater fra Let's Encrypt CA, må domenet som sertifikatene skal genereres for peke mot serveren. Hvis ikke, gjør de nødvendige endringene i DNS-postene til domenet og vent til DNS-en forplanter seg før du foretar sertifikatforespørselen igjen. Certbot sjekker domeneautoriteten før sertifikatene leveres.
Generer SSL-sertifikatene.
sudo certbot certonly --webroot -w /home/redmine/redmine/public -d redmine.example.com
De genererte sertifikatene blir sannsynligvis lagret i /etc/letsencrypt/live/redmine.example.com/. SSL-sertifikatet vil bli lagret som cert.pem og privat nøkkel vil bli lagret som privkey.pem.
La oss kryptere sertifikater utløper om 90 dager, derfor anbefales det å sette opp automatisk fornyelse av sertifikatene ved å bruke Cron-jobber.
Åpne Cron-jobbfilen for root brukeren.
sudo crontab -e
Legg til følgende linje på slutten av filen.
30 5 * * * /usr/bin/certbot renew --quiet
Cron-jobben ovenfor vil kjøre hver dag klokken 05.30. Hvis sertifikatet skal utløpe, vil det automatisk fornyes.
Aktiver SSL-modulen for Apache.
sudo a2enmod ssl
Rediger den virtuelle vertsfilen vi opprettet tidligere for Redmine.
sudo nano /etc/apache2/sites-available/redmine.conf
Endre den virtuelle vertsfilen slik at den ligner på følgende.
<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>
Lagre filen og gå ut av redigeringsprogrammet.
Start Apache på nytt slik at endringene kan tre i kraft.
sudo systemctl restart apache2
Du kan nå få tilgang til Redmine over HTTPS på https://redmine.example.com.
Gratulerer, du har installert Redmine på Ubuntu 16.04-forekomsten. Begynn å utvikle prosjektet ditt enten ved å opprette eller importere prosjektet.