Как да настроите сървър 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 [email protected] -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

Инсталирайте Plesk на CentOS 7

Инсталирайте Plesk на CentOS 7

Използване на различна система? Plesk е собствен контролен панел за уеб хост, който позволява на потребителите да администрират своите лични и/или клиентски уебсайтове, бази данни

Как да инсталирате Squid Proxy на CentOS

Как да инсталирате Squid Proxy на CentOS

Squid е популярна, безплатна програма за Linux, която ви позволява да създадете уеб прокси за препращане. В това ръководство ще видите как да инсталирате Squid на CentOS, за да ви обърне

Как да инсталирате Lighttpd (LLMP стек) на CentOS 6

Как да инсталирате Lighttpd (LLMP стек) на CentOS 6

Въведение Lighttpd е форк на Apache, чиято цел е да бъде много по-малко ресурсоемка. Той е лек, откъдето идва и името му, и е доста лесен за използване. Инсталирайте

Конфигуриране на статична мрежа и IPv6 на CentOS 7

Конфигуриране на статична мрежа и IPv6 на CentOS 7

VULTR наскоро направи промени от своя страна и вече всичко трябва да работи добре от кутията с активиран NetworkManager. Ако желаете да деактивирате

Промяна на Icinga2 за използване на модел главен/клиент на CentOS 6 или CentOS 7

Промяна на Icinga2 за използване на модел главен/клиент на CentOS 6 или CentOS 7

Icinga2 е мощна система за наблюдение и когато се използва в модел главен-клиент, тя може да замени необходимостта от проверки на базата на NRPE. Главният клиент

Как да инсталирате Apache Cassandra 3.11.x на CentOS 7

Как да инсталирате Apache Cassandra 3.11.x на CentOS 7

Използване на различна система? Apache Cassandra е безплатна система за управление на база данни NoSQL с отворен код, която е проектирана да осигури мащабируемост, висока

Как да инсталирате Microweber на CentOS 7

Как да инсталирате Microweber на CentOS 7

Използване на различна система? Microweber е CMS и онлайн магазин с отворен код за плъзгане и пускане. Изходният код на Microweber се хоства на GitHub. Това ръководство ще ви покаже

Как да инсталирате Mattermost 4.1 на CentOS 7

Как да инсталирате Mattermost 4.1 на CentOS 7

Използване на различна система? Mattermost е самостоятелно хоствана алтернатива с отворен код на Slack SAAS услугата за съобщения. С други думи, с Mattermost, вие ca

Създаване на мрежа от сървъри на Minecraft с BungeeCord на Debian 8, Debian 9 или CentOS 7

Създаване на мрежа от сървъри на Minecraft с BungeeCord на Debian 8, Debian 9 или CentOS 7

Какво ви трябва Vultr VPS с поне 1 GB RAM. SSH достъп (с root/административни привилегии). Стъпка 1: Инсталиране на BungeeCord На първо място

Lets Encrypt на Plesk

Lets Encrypt на Plesk

Контролният панел на Plesk разполага с много приятна интеграция за Lets Encrypt. Lets Encrypt е един от единствените доставчици на SSL, които предоставят пълно сертификати

Позволява криптиране на cPanel

Позволява криптиране на cPanel

Lets Encrypt е сертифициращ орган, посветен на предоставянето на SSL сертификати безплатно. cPanel изгради чиста интеграция, така че вие ​​и вашият клиент

Как да инсталирате Concrete5 на CentOS 7

Как да инсталирате Concrete5 на CentOS 7

Използване на различна система? Concrete5 е CMS с отворен код, който предлага много отличителни и полезни функции за подпомагане на редакторите при лесното създаване на съдържание и

Как да инсталирате табло за преглед на CentOS 7

Как да инсталирате табло за преглед на CentOS 7

Използване на различна система? Review Board е безплатен инструмент с отворен код за преглед на изходен код, документация, изображения и много други. Това е уеб базиран софтуер

Настройте HTTP удостоверяване с Nginx на CentOS 7

Настройте HTTP удостоверяване с Nginx на CentOS 7

В това ръководство ще научите как да настроите HTTP удостоверяване за уеб сървър на Nginx, работещ на CentOS 7. Изисквания За да започнете, ще ви трябва

Как да инсталирате YOURLS на CentOS 7

Как да инсталирате YOURLS на CentOS 7

YOURLS (Your Own URL Shortener) е приложение за съкращаване на URL адреси и анализ на данни с отворен код. В тази статия ще разгледаме процеса на инсталиране

Как да инсталирате и конфигурирате ArangoDB на CentOS 7

Как да инсталирате и конфигурирате ArangoDB на CentOS 7

Използване на различна система? Въведение ArangoDB е NoSQL база данни с отворен код с гъвкав модел на данни за документи, графики и ключ-стойности. то е

Използване на Etckeeper за контрол на версиите на /etc

Използване на Etckeeper за контрол на версиите на /etc

Въведение Директорията /etc/ играе критична роля в начина, по който функционира една Linux система. Причината за това е, че почти всяка системна конфигурация

Защо трябва да използвате SSHFS? Как да монтирате отдалечена файлова система със SSHFS на CentOS 6

Защо трябва да използвате SSHFS? Как да монтирате отдалечена файлова система със SSHFS на CentOS 6

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

Настройване на сървър на Half Life 2 на CentOS 6

Настройване на сървър на Half Life 2 на CentOS 6

Този урок ще обхване процеса на инсталиране на сървър за игри Half Life 2 на CentOS 6 System. Стъпка 1: Инсталиране на предпоставките За да настроите ou

Как да инсталирате Laravel GitScrum на CentOS 7

Как да инсталирате Laravel GitScrum на CentOS 7

Laravel GitScrum или GitScrum е инструмент за производителност с отворен код, предназначен да помогне на екипите за разработка да внедрят методологията на Scrum по подобен начин.

Възходът на машините: Реални приложения на 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 машини. Прочетете тази статия, за да научите повече