Инсталирайте Lets Encrypt SSL в приложението WordPress с едно щракване
Въведение Lets Encrypt е услуга на сертифициращ орган, която предлага безплатни TLS/SSL сертификати. Процесът на инсталиране е опростен от Certbot,
Redmine е безплатен уеб-базиран инструмент за управление на проекти с отворен код. Той е написан на Ruby on Rails и поддържа множество сървъри на база данни за съхранение на базата данни. Това е богато на функции приложение, поддържащо множество проекти, базиран на роли ACL и система за проследяване на проблеми. Освен това има поддръжка на диаграма на Гант и календар, управление на файлове, уики и форум за проекти, както и много други функции. Той поддържа системи за контрол на версиите като Git, SVN или CVS. Освен това е многоезичен и поддържа до 49 езика.
За този урок ще използваме 192.168.1.1
като публичен IP адрес и redmine.example.com
като име на домейн, насочено към екземпляра Vultr. Моля, не забравяйте да замените всички срещания на примерното име на домейн и IP адрес с действителния.
Актуализирайте базовата си система с помощта на ръководството Как да актуализирате Ubuntu 16.04 . След като вашата система бъде актуализирана, продължете с инсталирането на зависимостите.
Redmine е написан на Ruby on Rails, така че ще изискваме Phusion Passenger да се интегрира с уеб сървъра на Apache, за да обслужва приложението.
Инсталирайте Apache.
sudo apt -y install apache2 apache2-dev libcurl4-openssl-dev
За да изградим Ruby и Passenger, ще ни трябват и някои инструменти за разработка. Инсталирайте необходимите инструменти.
sudo apt -y install imagemagick libmagickwand-dev git build-essential automake libgmp-dev
Redmine поддържа множество типове сървъри на бази данни като MySQL, PostgreSQL и MSSQL. В този урок ще използваме PostgreSQL за хостване на сървъра на базата данни Redmine.
PostgreSQL е обектно-релационна система за бази данни. Хранилището на Ubuntu по подразбиране съдържа стара версия на PostgreSQL, така че добавете хранилището на PostgreSQL към системата.
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
Инсталирайте сървъра на база данни PostgreSQL.
sudo apt -y install postgresql
Стартирайте PostgreSQL сървъра и го активирайте да стартира автоматично при стартиране.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Променете паролата за потребителя на PostgreSQL по подразбиране.
sudo passwd postgres
Влезте като потребител на PostgreSQL.
sudo su - postgres
Създайте нов потребител на PostgreSQL за Redmine.
createuser redmine
Разрешено е да използвате всяко потребителско име вместо redmine
. PostgreSQL предоставя psql
обвивката за изпълнение на заявки към базата данни. Превключете към обвивката на PostgreSQL.
psql
Задайте парола за новосъздадения потребител за базата данни Redmine.
ALTER USER redmine WITH ENCRYPTED password 'DBPassword';
Заменете DBPassword
със сигурна парола. Създайте нова база данни за инсталацията на Redmine.
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
Излезте от psql
черупката.
\q
Превключете към sudo
потребителя.
exit
Инсталирайте още няколко необходими PostgreSQL зависимости.
sudo apt -y install libpqxx-dev protobuf-compiler
Ще инсталираме най-новата версия на Ruby с помощта на RVM. Използва се за инсталиране и управление на множество версии на Ruby.
Добавете RVM хранилището.
sudo apt-add-repository -y ppa:rael-gc/rvm
sudo apt update
Инсталирайте RVM.
sudo apt -y install rvm
Тъй като трябва да инсталираме Ruby в цялата система, временно ще преминем към root потребител.
sudo -i
Актуализирайте променливите на средата.
echo "source /etc/profile.d/rvm.sh" | tee -a /etc/profile
source /etc/profile.d/rvm.sh
Инсталирайте най-новата версия на Ruby.
rvm install 2.5.1
Забележка: Ако използвате различна версия на Ruby, не забравяйте да актуализирате съответно пътя на Ruby.
Използвайте инсталираната версия на Ruby.
rvm use 2.5.1 --default
Можете да проверите неговата версия.
ruby -v
Ще видите подобен изход.
root@vultr:~# ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
Install bundler
, който е мениджърът на зависимости за приложението Ruby.
gem install bundler
Ruby вече е инсталиран. Преди да инсталираме Redmine, ще трябва да инсталираме Phusion Passenger.
Изпълнете следната команда, за да инсталирате Passenger.
gem install passenger
Инсталирайте модула Apache за Passenger.
passenger-install-apache2-module
Скриптът на инсталатора ще ви зададе някои въпроси. Първо, той ще ви предостави информация за процеса на инсталиране. След това ще ви помоли да изберете езика, който ще използвате. Тъй като нашето приложение е написано на Ruby on Rails, изберете Ruby от менюто и натиснете, за ENTERда продължите по-нататък.
Which languages are you interested in?
Use <space> to select.
If the menu doesn't display correctly, press '!'
‣ ⬢ Ruby
⬢ Python
⬡ Node.js
⬡ Meteor
Сега инсталаторът ще провери за изискванията. Инсталаторът няма да срещне липсващи зависимости и автоматично ще продължи да компилира и инсталира модула.
След като модулът бъде инсталиран, той ще ви подкани да добавите модула към конфигурационния файл на 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.
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
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
Забележка: Пътят към модула Passenger може да се промени, когато има нова версия на Passenger. За да намерите пътя към модула, използвайте sudo find / -name mod_passenger.so
командата.
Създайте нов виртуален хост файл за вашето приложение Redmine.
sudo nano /etc/apache2/sites-available/redmine.conf
Попълнет�� файла със следното съдържание.
<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>
Не забравяйте да замените redmine.example.com
с действителното си име на домейн. Също така се уверете, че пътят към PassengerRoot
и PassengerDefaultRuby
са правилни. Пътят към двоичните файлове може да се промени, когато има нова версия на Ruby или Passenger. За да намерите тези пътища, изпълнете следната команда.
passenger-config about ruby-command
Ще получите следния изход.
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'.
След като виртуалният хост файл е създаден. Активирайте конфигурацията.
sudo a2ensite redmine
Рестартирайте уеб сървъра на Apache.
sudo systemctl restart apache2
Вече можете да получите достъп до вашия Redmine интерфейс на http://redmine.example.com
. Влезте с потребителско име admin
и парола admin
. При първото ви влизане Redmine ще ви подкани да актуализирате паролата.
Тъй като нашата инсталация на Redmine е на публичен сървър, се препоръчва да използвате SSL, за да осигурите обмена на данни от сървъра.
Добавете хранилището на Certbot.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Инсталирайте Certbot, което е клиентското приложение за Let's Encrypt CA.
sudo apt -y install certbot
Забележка: За да получите сертификати от Let's Encrypt CA, домейнът, за който трябва да се генерират сертификатите, трябва да бъде насочен към сървъра. Ако не, направете необходимите промени в DNS записите на домейна и изчакайте DNS да се разпространи, преди да направите отново заявка за сертификат. Certbot проверява авторитета на домейна, преди да предостави сертификатите.
Генерирайте SSL сертификати.
sudo certbot certonly --webroot -w /home/redmine/redmine/public -d redmine.example.com
Генерираните сертификати вероятно ще се съхраняват в /etc/letsencrypt/live/redmine.example.com/
. SSL сертификатът ще се съхранява като, cert.pem
а частният ключ ще се съхранява като privkey.pem
.
Срокът на валидност на сертификатите Let's Encrypt изтича след 90 дни, поради което се препоръчва да настроите автоматично подновяване на сертификатите с помощта на задания на Cron.
Отворете файла за задание на Cron за root
потребителя.
sudo crontab -e
Добавете следния ред в края на файла.
30 5 * * * /usr/bin/certbot renew --quiet
Горната задача на Cron ще се изпълнява всеки ден в 5:30 сутринта. Ако сертификатът изтича, той автоматично ще бъде подновен.
Активирайте SSL модула за Apache.
sudo a2enmod ssl
Редактирайте файла за виртуален хост, който създадохме по-рано за Redmine.
sudo nano /etc/apache2/sites-available/redmine.conf
Променете файла на виртуалния хост, за да бъде подобен на следния.
<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>
Запазете файла и излезте от редактора.
Рестартирайте Apache, за да могат промените да влязат в сила.
sudo systemctl restart apache2
Вече имате достъп до Redmine над HTTPS
най https://redmine.example.com
.
Поздравления, успешно инсталирахте Redmine на вашия екземпляр на Ubuntu 16.04. Започнете да разработвате своя проект чрез създаване или импортиране на вашия проект.
Въведение Lets Encrypt е услуга на сертифициращ орган, която предлага безплатни TLS/SSL сертификати. Процесът на инсталиране е опростен от Certbot,
Използване на различна система? Ако закупите сървър на Debian, винаги трябва да имате най-новите корекции за сигурност и актуализации, независимо дали спите или не
PHP и свързаните с него пакети са най-често използваните компоненти при разгръщане на уеб сървър. В тази статия ще научим как да настроим PHP 7.0 или PHP 7.1 o
Squid е популярна, безплатна програма за Linux, която ви позволява да създадете уеб прокси за препращане. В това ръководство ще видите как да инсталирате Squid на CentOS, за да ви обърне
Въведение Lighttpd е форк на Apache, чиято цел е да бъде много по-малко ресурсоемка. Той е лек, откъдето идва и името му, и е доста лесен за използване. Инсталирайте
1. Virtualmin/Webmin Virtualmin е мощен и гъвкав контролен панел за уеб хостинг за Linux и UNIX системи, базиран на добре познатата уеб база с отворен код
Yii е PHP рамка, която ви позволява да разработвате приложения по-бързо и лесно. Инсталирането на Yii в Ubuntu е лесно, както ще научите точно l
Този урок обяснява как да настроите DNS сървър с помощта на Bind9 на Debian или Ubuntu. В цялата статия заменете your-domain-name.com съответно. При th
Въведение Logrotate е помощна програма за Linux, която опростява администрирането на лог файлове. Обикновено се изпълнява веднъж на ден чрез cron задание и управлява базата от регистрационни файлове
Icinga2 е мощна система за наблюдение и когато се използва в модел главен-клиент, тя може да замени необходимостта от проверки на базата на NRPE. Главният клиент
Използване на различна система? Red5 е медиен сървър с отворен код, внедрен в Java, който ви позволява да стартирате Flash многопотребителски приложения, като например предаване на живо
В тази статия ще видим как да компилирате и инсталирате основната линия на Nginx от официалните източници на Nginx с модула PageSpeed, който ви позволява да
Използване на различна система? Apache Cassandra е безплатна система за управление на база данни NoSQL с отворен код, която е проектирана да осигури мащабируемост, висока
Използване на различна система? Vanilla forum е приложение за форум с отворен код, написано на PHP. Той е напълно адаптивен, лесен за използване и поддържа външен
Използване на различна система? Въведение Kanboard е безплатна програма за управление на проекти с отворен код, която е предназначена да улеснява и визуализира
Използване на различна система? Въведение Kanboard е безплатна програма за управление на проекти с отворен код, която е предназначена да улеснява и визуализира
Използване на различна система? Gitea е алтернатива с отворен код, самостоятелно хоствана система за контрол на версиите, задвижвана от Git. Gitea е написана на Голанг и е
Използване на различна система? Gitea е алтернатива с отворен код, самостоятелно хоствана система за контрол на версиите, задвижвана от git. Gitea е написана на Голанг и е
Въведение Lynis е безплатен инструмент за одит на системата с отворен код, който се използва от много системни администратори за проверка на целостта и заздравяване на техните системи. аз
Използване на различна система? Thelia е инструмент с отворен код за създаване на уебсайтове за е-бизнес и управление на онлайн съдържание, написано на PHP. Изходен код на Thelia i
Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.
Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.
Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.
Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.
Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…
Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.
Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.
Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.
В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.
Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече