Funkcjonalności warstw architektury referencyjnej Big Data
Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.
Redmine to bezpłatne i otwarte narzędzie do zarządzania projektami oparte na sieci Web. Jest napisany w Ruby on Rails i obsługuje wiele serwerów baz danych do przechowywania bazy danych. Jest to bogata w funkcje aplikacja obsługująca wiele projektów, ACL oparty na rolach i system śledzenia problemów. Ma również obsługę wykresów i kalendarza Gantta, zarządzanie plikami, wiki projektu i forum oraz wiele innych funkcji. Obsługuje systemy kontroli wersji, takie jak Git, SVN lub CVS. Jest także wielojęzyczny, obsługuje aż 49 języków.
W tym samouczku użyjemy 192.168.1.1
jako publicznego adresu IP i redmine.example.com
nazwy domeny wskazanej na instancję Vultr. Pamiętaj, aby zastąpić wszystkie wystąpienia przykładowej nazwy domeny i adresu IP faktycznym.
Zaktualizuj system podstawowy, korzystając z przewodnika Jak zaktualizować system Ubuntu 16.04 . Po zaktualizowaniu systemu przejdź do instalacji zależności.
Redmine jest napisany w Ruby on Rails, dlatego będziemy musieli zintegrować Phusion Passenger z serwerem WWW Apache w celu obsługi aplikacji.
Zainstaluj Apache.
sudo apt -y install apache2 apache2-dev libcurl4-openssl-dev
Aby zbudować Ruby i Pasażera, potrzebujemy również narzędzi programistycznych. Zainstaluj wymagane narzędzia.
sudo apt -y install imagemagick libmagickwand-dev git build-essential automake libgmp-dev
Redmine obsługuje wiele typów serwerów baz danych, takich jak MySQL, PostgreSQL i MSSQL. W tym samouczku wykorzystamy PostgreSQL do obsługi serwera bazy danych Redmine.
PostgreSQL to obiektowo-relacyjny system baz danych. Domyślne repozytorium Ubuntu zawiera starą wersję PostgreSQL, więc dodaj repozytorium PostgreSQL do systemu.
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
Zainstaluj serwer bazy danych PostgreSQL.
sudo apt -y install postgresql
Uruchom serwer PostgreSQL i włącz go automatycznie podczas uruchamiania.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Zmień hasło dla domyślnego użytkownika PostgreSQL.
sudo passwd postgres
Zaloguj się jako użytkownik PostgreSQL.
sudo su - postgres
Utwórz nowego użytkownika PostgreSQL dla Redmine.
createuser redmine
Możesz używać dowolnej nazwy użytkownika zamiast redmine
. PostgreSQL zapewnia psql
powłokę do uruchamiania zapytań w bazie danych. Przejdź do powłoki PostgreSQL.
psql
Ustaw hasło dla nowo utworzonego użytkownika do bazy danych Redmine.
ALTER USER redmine WITH ENCRYPTED password 'DBPassword';
Zastąp DBPassword
bezpiecznym hasłem. Utwórz nową bazę danych dla instalacji Redmine.
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
Wyjdź ze psql
skorupy.
\q
Przejdź do sudo
użytkownika.
exit
Zainstaluj jeszcze kilka wymaganych zależności PostgreSQL.
sudo apt -y install libpqxx-dev protobuf-compiler
Zainstalujemy najnowszą wersję Ruby przy użyciu RVM. Służy do instalowania i zarządzania wieloma wersjami Ruby.
Dodaj repozytorium RVM.
sudo apt-add-repository -y ppa:rael-gc/rvm
sudo apt update
Zainstaluj RVM.
sudo apt -y install rvm
Ponieważ musimy zainstalować system Ruby na cały system, tymczasowo przełączymy się na użytkownika root.
sudo -i
Zaktualizuj zmienne środowiskowe.
echo "source /etc/profile.d/rvm.sh" | tee -a /etc/profile
source /etc/profile.d/rvm.sh
Zainstaluj najnowszą wersję Ruby.
rvm install 2.5.1
Uwaga: Jeśli używasz innej wersji Ruby, odpowiednio zaktualizuj ścieżkę Ruby.
Użyj zainstalowanej wersji Ruby.
rvm use 2.5.1 --default
Możesz zweryfikować jego wersję.
ruby -v
Zobaczysz podobne wyjście.
root@vultr:~# ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
Zainstaluj bundler
, który jest menedżerem zależności dla aplikacji Ruby.
gem install bundler
Ruby jest teraz zainstalowany. Zanim zainstalujemy Redmine, będziemy musieli zainstalować Phusion Passenger.
Uruchom następujące polecenie, aby zainstalować program Passenger.
gem install passenger
Zainstaluj moduł Apache dla pasażera.
passenger-install-apache2-module
Skrypt instalatora zada kilka pytań. Po pierwsze, dostarczy ci informacji o procesie instalacji. Następnie poprosi cię o wybranie języka, którego będziesz używać. Ponieważ nasza aplikacja jest napisana w Ruby on Rails, wybierz Ruby z menu i naciśnij, ENTERaby przejść dalej.
Which languages are you interested in?
Use <space> to select.
If the menu doesn't display correctly, press '!'
‣ ⬢ Ruby
⬢ Python
⬡ Node.js
⬡ Meteor
Instalator sprawdzi teraz wymagania. Instalator nie napotka żadnych brakujących zależności i automatycznie przystąpi do kompilacji i instalacji modułu.
Po zainstalowaniu modułu pojawi się monit o dodanie modułu do pliku konfiguracyjnego Apache.
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.
Na razie pomińmy to i ukończymy później w samouczku. Naciśnij, ENTERaby pominąć ten krok.
Na koniec skrypt instalatora zweryfikuje instalację i zobaczysz ostrzeżenie, że moduł pasażera nie jest określony w konfiguracji Apache.
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.
Po zainstalowaniu modułu Passenger dla Apache przejdź do pobrania i instalacji Redmine. Przełącz się sudo
ponownie na użytkownika, ponieważ nie musimy uruchamiać więcej poleceń za pomocą root
użytkownika.
exit
Zaleca się korzystanie z nieuprzywilejowanego użytkownika w celu uruchomienia aplikacji w celu odizolowania jej od reszty systemu. Utwórz nowego użytkownika dla Redmine i przejdź do nowo utworzonego użytkownika.
sudo adduser --disabled-password --gecos "Redmine User" redmine
sudo su - redmine
Pobierz najnowszą wersję Redmine z oficjalnej strony pobierania Redmine .
cd ~
wget http://www.redmine.org/releases/redmine-3.4.4.tar.gz
Wypakuj archiwum i zmień nazwę katalogu dla wygody.
tar -xf redmine-*.tar.gz
mv redmine-*/ redmine/
Skopiuj przykładowe pliki konfiguracyjne do lokalizacji produkcyjnej.
cd redmine
cp config/configuration.yml.example config/configuration.yml
cp config/database.yml.example config/database.yml
Otwórz plik konfiguracji bazy danych, który właśnie skopiowaliśmy, aby wprowadzić szczegóły bazy danych.
nano config/database.yml
Domyślnie plik bazy danych jest skonfigurowany dla MySQL. Znajdź konfiguracje dla produkcji i rozwoju oraz przetestuj, który korzysta z adaptera MySQL. Skomentuj wszystkie te linie.
#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, znajdź linie, które są komentowane, mając production
konfigurację postgresql
adaptera. Usuń komentarz z tych wierszy i zaktualizuj nazwę bazy danych i poświadczenia użytkownika. Upewnij się, że używasz prawidłowego wcięcia, czyli dwóch spacji.
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: "DBPassword"
Skonfiguruj aplikację do korzystania z konfiguracji PostgreSQL.
bundle config build.pg --with-pg-config=/usr/bin/pg_config
Zainstaluj zależności wymagane przez aplikację.
bundle install --path vendor/bundle --without development test
Na końcu instalacji zobaczysz następujący komunikat.
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`
Poniższe polecenie generuje tajne tokeny używane do kodowania danych sesji.
bundle exec rake generate_secret_token
Napisz bazę danych PostgreSQL.
RAILS_ENV=production bundle exec rake db:migrate
Uruchom następujące polecenie, które zapisuje dane domyślne w bazie danych PostgreSQL.
RAILS_ENV=production bundle exec rake redmine:load_default_data
Powyższe polecenie poprosi o wybranie domyślnego języka, który będzie używany w aplikacji. Domyślnym wyborem jest angielski; wybierz zgodnie ze swoimi preferencjami.
[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.
Instalacja aplikacji Redmine jest teraz zakończona. Zmień własność i uprawnienia do katalogów i plików.
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
Skonfigurowaliśmy wszystko, czego potrzebujemy od nieuprzywilejowanego użytkownika. Wróć do sudo
użytkownika, uruchamiając su - <username>
.
Dodaj moduł pasażera dla Apache do pliku konfiguracyjnego Apache. Spowoduje to automatyczne załadowanie modułu pasażera.
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
Uwaga: Ścieżka do modułu pasażera może ulec zmianie, gdy pojawi się nowa wersja pasażera. Aby znaleźć ścieżkę do modułu, użyj sudo find / -name mod_passenger.so
polecenia.
Utwórz nowy plik wirtualnego hosta dla swojej aplikacji Redmine.
sudo nano /etc/apache2/sites-available/redmine.conf
Wypełnij plik następującą zawartością.
<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>
Pamiętaj, aby zastąpić redmine.example.com
rzeczywistą nazwą domeny. Upewnij się również, że ścieżka do PassengerRoot
i PassengerDefaultRuby
są poprawne. Ścieżka do plików binarnych może ulec zmianie, gdy pojawi się nowa wersja Ruby lub Passenger. Aby znaleźć te ścieżki, uruchom następujące polecenie.
passenger-config about ruby-command
Otrzymasz następujące dane wyjściowe.
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'.
Po utworzeniu pliku hosta wirtualnego. Aktywuj konfigurację.
sudo a2ensite redmine
Uruchom ponownie serwer WWW Apache.
sudo systemctl restart apache2
Możesz teraz uzyskać dostęp do interfejsu Redmine na http://redmine.example.com
. Zaloguj się przy użyciu nazwy użytkownika admin
i hasła admin
. Przy pierwszym logowaniu Redmine poprosi o aktualizację hasła.
Ponieważ nasza instalacja Redmine odbywa się na publicznym serwerze, zaleca się stosowanie protokołu SSL w celu zabezpieczenia wymiany danych z serwera.
Dodaj repozytorium Certbot.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Zainstaluj Certbot, czyli aplikację kliencką Let's Encrypt CA.
sudo apt -y install certbot
Uwaga: Aby uzyskać certyfikaty z Let's Encrypt CA, domena, dla której mają być generowane certyfikaty, musi być skierowana w stronę serwera. Jeśli nie, dokonaj niezbędnych zmian w rekordach DNS domeny i poczekaj na propagację DNS przed ponownym żądaniem certyfikatu. Certbot sprawdza urząd domeny przed podaniem certyfikatów.
Wygeneruj certyfikaty SSL.
sudo certbot certonly --webroot -w /home/redmine/redmine/public -d redmine.example.com
Wygenerowane certyfikaty prawdopodobnie będą przechowywane /etc/letsencrypt/live/redmine.example.com/
. Certyfikat SSL będzie przechowywany jako, cert.pem
a klucz prywatny będzie przechowywany jako privkey.pem
.
Ważność certyfikatów Let's Encrypt wygasa za 90 dni, dlatego zaleca się skonfigurowanie automatycznego odnawiania certyfikatów za pomocą zadań Cron.
Otwórz plik zadania Cron dla root
użytkownika.
sudo crontab -e
Dodaj następujący wiersz na końcu pliku.
30 5 * * * /usr/bin/certbot renew --quiet
Powyższe zadanie Crona będzie uruchamiane codziennie o 5:30. Jeśli certyfikat wygasa, zostanie automatycznie odnowiony.
Włącz moduł SSL dla Apache.
sudo a2enmod ssl
Edytuj plik hosta wirtualnego, który wcześniej utworzyliśmy dla Redmine.
sudo nano /etc/apache2/sites-available/redmine.conf
Zmodyfikuj plik wirtualnego hosta, aby był podobny do następującego.
<VirtualHost *:80>
ServerName redmine.example.com
Redirect permanent / https://redmine.example.com/
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
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>
Zapisz plik i wyjdź z edytora.
Zrestartuj Apache, aby zmiany mogły zostać wprowadzone.
sudo systemctl restart apache2
Możesz teraz uzyskać dostęp do Redmine HTTPS
na stronie https://redmine.example.com
.
Gratulacje, pomyślnie zainstalowałeś Redmine w instancji Ubuntu 16.04. Rozpocznij opracowywanie projektu, tworząc go lub importując.
Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.
Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.
13 komercyjnych narzędzi do ekstrakcji danych z Big Data
Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+
Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.
Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…
Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą
Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.
Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.
Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.