Как да настроите сървър Leanote на CentOS 7

Leanote е безплатна, лека и отворена алтернатива на Evernote, която е написана на Golang. Имайки предвид потребителското изживяване, Leanote предоставя на потребителите много практически функции, включително междуплатформена поддръжка, писане в синтаксиса на MarkDown, публичен или частен блог, събиране и споделяне на знания и екипно сътрудничество.

В тази статия ще ви преведа през настройката на сървър на Leanote на сървърен екземпляр на CentOS 7. От съображения за сигурност, разрешаването на HTTPS supportизползването на Let's Encrypt SSL сертификат и Nginx също ще бъдат обхванати.

Предпоставки

  • Наскоро внедрен екземпляр на сървъра Vultr CentOS 7. Да кажем, че неговият IPv4 адрес е 203.0.113.1.
  • А потребителското Sudo име leanote.
  • Всички софтуерни пакети на машината са актуализирани до последното стабилно състояние с помощта на EPEL YUM репо. Вижте подробности тук .
  • Домейн leanote.example.com, насочен към споменатия по-горе екземпляр на сървъра.

Стъпка 1: Създайте суап файл

Когато стартирате нов екземпляр на сървъра Vultr CentOS 7, винаги се препоръчва да настроите суап файл, за да сте сигурни, че системата работи гладко. Например създаването на суап файл с размер 2048 MB е подходящо за машина с 2 GB памет.

sudo dd if=/dev/zero of=/swapfile count=2048 bs=1M
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile   none    swap    sw    0   0' | sudo tee -a /etc/fstab
free -m

Забележка: Ако използвате различен размер на сървъра, може да се наложи да промените размера на суап файла.

Стъпка 2: Вземете двоични файлове на Leanote 2.6.1

Изтеглете и извлечете най-новата стабилна версия на Leanote за 64-битова Linux система:

cd
wget https://sourceforge.net/projects/leanote-bin/files/2.6.1/leanote-linux-amd64-v2.6.1.bin.tar.gz
tar -zxvf leanote-linux-amd64-v2.6.1.bin.tar.gz

Стъпка 3: Инсталирайте MongoDB Community Edition 4.0

Както се изисква от Leanote, MongoDB NoSQL DBMS трябва да е на място, преди да можете успешно да настроите сървър на Leanote.

Настройте репозиторията на MongoDB 4.0 YUM

Създайте MongoDB 4.0 YUM репо, както следва:

cat <<EOF | sudo tee /etc/yum.repos.d/mongodb-org-4.0.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF

Инсталирайте пакети MongoDB 4.0 с помощта на YUM

Инсталирайте всички компоненти и инструменти на MongoDB с помощта на MongoDB 4.0 YUM репо, създадено по-рано:

sudo yum install -y mongodb-org

Конфигурирайте SELinux за MongoDB 4.0

По подразбиране MongoDB ще използва 27017порта, когато работи, което не е разрешено, ако SELinux е в enforcingрежим на машината CentOS 7. Използвайте следната команда, за да потвърдите текущия режим SELinux:

sudo getenforce

На сървърен екземпляр Vultr CentOS 7 SELinux е деактивиран по подразбиране. Така че резултатът от горната команда ще бъде:

Disabled

В този случай можете да се чувствате свободни да пропуснете следните инструкции за конфигуриране на SELinux и да продължите напред.

Въпреки това, ако използвате оригинален сървър на CentOS 7, изходът на горната команда ще бъде Enforcing. Трябва да изпълните някоя от трите опции по-долу, преди да можете да стартирате и активирате услугата MongoDB.

  • Вариант 1: Разрешете на MongoDB да използва 27017порта

    sudo semanage port -a -t mongod_port_t -p tcp 27017
    
  • Вариант 2: Деактивирайте SELinux

    sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    sudo shutdown -r now
    
  • Опция 3: Променете SELinux в permissiveрежим

    sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
    sudo shutdown -r now
    

Стартирайте услугата MongoDB и я накарайте да започне след рестартиране на системата:

sudo systemctl start mongod.service
sudo systemctl enable mongod.service

Стъпка 4: Импортирайте първоначалните данни на Leanote в MongoDB

Използвайте командите по-долу, за да импортирате първоначалните данни на Leanote в MongoDB:

rm /home/leanote/leanote/mongodb_backup/leanote_install_data/.DS_Store
mongorestore --host localhost -d leanote --dir /home/leanote/leanote/mongodb_backup/leanote_install_data/

Стъпка 5: Активирайте удостоверяването на MongoDB

От съображения за сигурност трябва да активирате контрола на достъпа до MongoDB веднага след като услугата MongoDB стартира и работи. За тази цел трябва да създадете поне два потребителски акаунта в MongoDB: акаунт на администратор на потребител и акаунт на администратор на база данни. Вие също ще трябва да промените конфигурацията на MongoDB.

Въведете обвивката на MongoDB:

mongo --host 127.0.0.1:27017

Превключете към adminбазата данни:

use admin

Създайте потребителски администратор на име, useradminкойто използва парола useradminpassword:

db.createUser({ user: "useradmin", pwd: "useradminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

Забележка: Потребителският администратор useradminтрябва да управлява всички потребители на MongoDB, така че е разумно да изберете силна парола. Разбира се, по-сигурен съвет е да замените useradminс трудно за отгатване потребителско име.

Превключете към leanoteбазата данни:

use leanote

Създайте администратор на база данни с име, leanoteadminкойто използва парола leanoteadminpassword:

db.createUser({ user: "leanoteadmin", pwd: "leanoteadminpassword", roles: [{ role: "dbOwner", db: "leanote" }] })

Забележка : Отново се препоръчва да изберете по-малко известно потребителско име и трудна за отгатване парола.

След като потребителите на MongoDB са създадени, можете да потвърдите резултатите:

use admin
db.auth("useradmin", "useradminpassword")

Потвърдете администратора на базата данни:

use leanote
db.auth("leanoteadmin", "leanoteadminpassword")

И двете ще изведат 1като потвърждение.

Излезте от обвивката на MongoDB:

exit

За да активирате контрола на достъпа до MongoDB, трябва също да добавите два реда към конфигурационния файл на MongoDB /etc/mongod.conf, както следва:

sudo bash -c "echo 'security:' >> /etc/mongod.conf"
sudo bash -c "echo '  authorization: enabled' >> /etc/mongod.conf"

Рестартирайте услугата MongoDB, за да влязат в сила промените:

sudo systemctl restart mongod.service

Отсега нататък можете да използвате само двата потребителски акаунта за достъп и управление на MongoDB, useradminза управление на всички потребители на MongoDB и само leanoteadminза управление на leanoteбазата данни.

Стъпка 6: Конфигурирайте Leanote

Архивирайте конфигурационния файл на Leanote /home/leanote/leanote/conf/app.conf:

cd /home/leanote/leanote/conf/
cp app.conf app.conf.bak

Използвайте viредактора, за да отворите конфигурационния файл на Leanote:

vi app.conf

Find the following lines one by one:

site.url=http://localhost:9000
db.username= # if not exists, please leave it blank
db.password= # if not exists, please leave it blank
app.secret=V85ZzBeTnzpsHyjQX4zukbQ8qqtju9y2aDM55VWxAH9Qop19poekx3xkcDVvrD0y

Replace them, respectively, as shown below:

site.url=http://leanote.example.com:9000
db.username=leanoteadmin
db.password=leanoteadminpassword
app.secret=E52tyCDBRk39HmhdGYJLBS3etXpnz7DymmxkgHBYxd7Y9muWVVJ5QZNdDEaHV2sA

Note: For security purposes, the value of the app.secret parameter MUST be a 64-bit random string that is different from the original one. Make sure to replace the value E52tyCDBRk39HmhdGYJLBS3etXpnz7DymmxkgHBYxd7Y9muWVVJ5QZNdDEaHV2sA with your own 64-bit random value.

Save and quit:

:wq!

Step 7: Start Leanote

Modify firewall rules in order to allow inbound TCP traffic on port 9000:

sudo firewall-cmd --permanent --add-port=9000/tcp
sudo systemctl reload firewalld.service

Start Leanote using the official script:

cd /home/leanote/leanote/bin
bash run.sh

Upon seeing Listening on.. 0.0.0.0:9000, point your favorite web browser to http://leanote.example.com:9000 to start using the Leanote site.

Use the default Leanote admin account to sign in:

  • Username: admin
  • Password: abc123

For security purposes, you should change the default password immediately after signing in.

Step 8: Enable HTTPS access

For now, you can already access the Leanote server using the HTTP protocol, a less secure protocol. In order to improve system security, you can enable HTTPS by deploying both a Let's Encrypt SSL certificate and the Nginx reverse proxy on your machine.

Properly setup a hostname and fully qualified domain name (FQDN)

Before you can obtain the Let's Encrypt SSL certificate, you need to properly setup the hostname and FQDN on your machine.

First, press CTRL+C to stop the Leanote script run.sh.

Next, setup the hostname and FQDN as follows:

sudo hostnamectl set-hostname leanote
cat <<EOF | sudo tee /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
203.0.113.1 leanote.example.com leanote
EOF

You can confirm the results, as well:

hostname
hostname -f

Modify firewall rules

Block inbound traffic on port 9000 and allow inbound traffic on ports for HTTP and HTTPS services:

sudo firewall-cmd --permanent --remove-port=9000/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld.service

Apply for a Let's Encrypt SSL certificate

Install the Certbot utility:

sudo yum -y install yum-utils
sudo yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
sudo yum install -y certbot

Кандидатствайте за Let's Encrypt SSL сертификат за домейна leanote.example.com:

sudo certbot certonly --standalone --agree-tos --no-eff-email -m admin@example.com -d leanote.example.com

Сертификатът и веригата ще бъдат запазени, както следва:

/etc/letsencrypt/live/leanote.example.com/fullchain.pem

Файлът с частен ключ ще бъде запазен, както следва:

/etc/letsencrypt/live/leanote.example.com/privkey.pem

По подразбиране, Let's Encrypt SSL сертификатът изтича след три месеца. Можете да настроите задание за cron, както е показано по-долу, за автоматично подновяване на вашите сертификати Let's Encrypt:

sudo crontab -e

Натиснете, за Iда влезете в insertрежима, след което въведете следния ред:

0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew

Запазете и излезте:

:wq!

Тази работа на cron ще се опита да поднови сертификата Let's Encrypt всеки ден по обяд.

Инсталирайте Nginx като обратен прокси

Инсталирайте Nginx с помощта на EPEL YUM репо:

sudo yum install -y nginx

Създайте конфигурационен файл за Leanote:

cat <<EOF | sudo tee /etc/nginx/conf.d/leanote.conf
# Redirect HTTP to HTTPS
server {
    listen      80;
    server_name leanote.example.com;
    return      301 https://\$server_name\$request_uri;
}

server {

    # Setup HTTPS certificates
    listen       443 default ssl;
    server_name  leanote.example.com;
    ssl_certificate      /etc/letsencrypt/live/leanote.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/leanote.example.com/privkey.pem;

    # Proxy to the Leanote server
    location / {
        proxy_set_header X-Real-IP         \$remote_addr;
        proxy_set_header X-Forwarded-For   \$proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-Host  \$http_host;
        proxy_set_header Host              \$http_host;
        proxy_max_temp_file_size           0;
        proxy_pass                         http://127.0.0.1:9000;
        proxy_redirect                     http:// https://;
    }
}
EOF

Рестартирайте Nginx, за да приложите промените си:

sudo systemctl daemon-reload
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service

Променете site.urlнастройката в конфигурационния файл на Leanote:

cd /home/leanote/leanote/conf/
vi app.conf

Намерете следния ред:

site.url=http://leanote.example.com:9000

Замени го:

site.url=https://leanote.example.com

Запазете и излезте:

:wq!

Стартирайте скрипта Leanote отново:

cd /home/leanote/leanote/bin
bash run.sh

Сега насочете любимия си уеб браузър към http://leanote.example.com/и ще откриете, че HTTPSпротоколът се активира автоматично. Просто влезте като adminпотребител с новата парола, която сте задали по-рано, или регистрирайте нови потребителски акаунти за сътрудничество в екип.

Отново натиснете CTRL+, за Cда спрете скрипта на Leanote. Ще демонизираме този скрипт по-късно.

Стъпка 9: Инсталирайте wkhtmltopdfпрограмата

Leanote избира да използва wkhtmltopdfпрограмата за експортиране на HTML страници като PDF файлове. Инсталирайте wkhtmltopdf:

cd
wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm
sudo yum localinstall -y wkhtmltox-0.12.5-1.centos7.x86_64.rpm
which wkhtmltopdf

Не забравяйте да изпратите wkhtmltopdfдвоичния път /usr/local/bin/wkhtmltopdfв Export PDFсекцията в таблото за управление на уеб администратора на Leanote, когато Leanote започне да работи отново.

Забележка: Ако откриете нечетими знаци в експортираните PDF файлове, можете да опитате да отстраните проблема, като добавите необходимите файлове с шрифтове към /usr/share/fonts/директорията.

Стъпка 10: Използвайте Supervisor, за да поддържате скрипта на Leanote работещ

За да поддържате вашия сайт Leanote онлайн, можете да използвате помощната програма Supervisor, за да стартирате автоматично скрипта на Leanote, ако той се срине.

Инсталирайте Supervisor с помощта на YUM:

sudo yum install -y supervisor

Създайте прост Supervisor .iniфайл за Leanote:

cat <<EOF | sudo tee /etc/supervisord.d/leanote.ini
[program:leanote]
command=bash /home/leanote/leanote/bin/run.sh
directory=/home/leanote/leanote/bin/
priority=999
autostart=true
autorestart=true
user=leanote
redirect_stderr=true
EOF

Стартирайте услугата Supervisor, както и услугата Leanote:

sudo supervisord -c /etc/supervisord.conf

Потвърдете състоянието на услугата Leanote:

sudo supervisorctl status leanote

Резултатът ще прилича на следното:

leanote                          RUNNING   pid 3707, uptime 0:02:36

Оставете коментар

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

DDOS атаки: кратък преглед

DDOS атаки: кратък преглед

Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.

Чудили ли сте се как хакерите печелят пари?

Чудили ли сте се как хакерите печелят пари?

Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.

Революционни изобретения на Google, които ще улеснят живота ви.

Революционни изобретения на Google, които ще улеснят живота ви.

Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.

Функционалности на референтните архитектурни слоеве за големи данни

Функционалности на референтните архитектурни слоеве за големи данни

Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.

Еволюция на съхранението на данни – инфографика

Еволюция на съхранението на данни – инфографика

Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече