Preduvjeti
Korak 1: Napravite zamjensku datoteku
Korak 2: Nabavite binarne datoteke Leanote 2.6.1
Korak 3: Instalirajte MongoDB Community Edition 4.0
Korak 4: Uvezite početne Leanote podatke u MongoDB
Korak 5: Omogućite MongoDB autentifikaciju
Korak 6: Konfigurirajte Leanote
Korak 7: Pokrenite Leanote
Korak 8: Omogućite HTTPS pristup
Korak 9: Instalirajte program wkhtmltopdf
Korak 10: Koristite Supervisor da održite Leanote skriptu u radu
Leanote je besplatna, lagana i open source alternativa Evernoteu, koji je napisan na Golangu. Imajući na umu korisničko iskustvo, Leanote korisnicima pruža obilje praktičnih značajki, uključujući podršku za više platformi, pisanje u sintaksi MarkDown, javno ili privatno bloganje, prikupljanje i dijeljenje znanja te timsku suradnju.
U ovom članku vodit ću vas kroz postavljanje Leanote poslužitelja na instanci poslužitelja CentOS 7. Iz sigurnosnih razloga, omogućavanje HTTPS supportkorištenja Let's Encrypt SSL certifikata i Nginxa također će biti pokriveno.
Preduvjeti
- Novopostavljena instanca poslužitelja Vultr CentOS 7. Recimo da je njegova IPv4 adresa
203.0.113.1.
- Korisnik sudo pod nazivom
leanote.
- Svi softverski paketi na stroju ažurirani su na najnoviji stabilni status pomoću EPEL YUM repo. Detalje pogledajte ovdje .
- Domena
leanote.example.comkoja je usmjerena na gore spomenutu instancu poslužitelja.
Korak 1: Napravite zamjensku datoteku
Prilikom pokretanja nove instance poslužitelja Vultr CentOS 7, uvijek se preporučuje postavljanje swap datoteke kako bi se osiguralo da sustav radi nesmetano. Na primjer, stvaranje swap datoteke veličine 2048 MB odgovara stroju s 2 GB memorije.
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
Napomena: Ako koristite drugu veličinu poslužitelja, možda ćete morati izmijeniti veličinu swap datoteke.
Korak 2: Nabavite binarne datoteke Leanote 2.6.1
Preuzmite i izdvojite najnovije stabilno izdanje Leanotea za 64-bitni Linux sustav:
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
Kao što zahtijeva Leanote, MongoDB NoSQL DBMS mora biti postavljen prije nego što možete uspješno postaviti Leanote poslužitelj.
Postavite MongoDB 4.0 YUM repo
Napravite MongoDB 4.0 YUM repo na sljedeći način:
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
Instalirajte MongoDB 4.0 pakete koristeći YUM
Instalirajte sve komponente i alate MongoDB koristeći prethodno kreiran MongoDB 4.0 YUM repo:
sudo yum install -y mongodb-org
Konfigurirajte SELinux za MongoDB 4.0
Prema zadanim postavkama, MongoDB bi koristio 27017port za vrijeme rada, što nije dopušteno ako je SELinux u enforcingnačinu rada na CentOS 7 stroju. Upotrijebite sljedeću naredbu da potvrdite trenutni način rada SELinux:
sudo getenforce
Na instanci poslužitelja Vultr CentOS 7, SELinux je onemogućen prema zadanim postavkama. Dakle, izlaz gornje naredbe bi bio:
Disabled
U tom slučaju možete slobodno preskočiti sljedeće upute o konfiguriranju SELinuxa i nastaviti dalje.
Međutim, ako koristite izvornu instancu poslužitelja CentOS 7, izlaz gornje naredbe bi bio Enforcing. Morate izvesti bilo koju od tri opcije u nastavku prije nego što možete pokrenuti i omogućiti MongoDB uslugu.
Opcija 1: dopustite MongoDB-u da koristi 27017port
sudo semanage port -a -t mongod_port_t -p tcp 27017
Opcija 2: Onemogućite SELinux
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
sudo shutdown -r now
Opcija 3: Promijenite SELinux u permissivenačin rada
sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
sudo shutdown -r now
Pokrenite MongoDB uslugu i neka počne nakon ponovnog pokretanja sustava:
sudo systemctl start mongod.service
sudo systemctl enable mongod.service
Korak 4: Uvezite početne Leanote podatke u MongoDB
Upotrijebite naredbe u nastavku za uvoz početnih Leanote podataka u 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/
Korak 5: Omogućite MongoDB autentifikaciju
Iz sigurnosnih razloga, morate omogućiti kontrolu pristupa MongoDB-u odmah nakon što se MongoDB servis pokrene i pokrene. U tu svrhu morate stvoriti najmanje dva MongoDB korisnička računa: korisnički administratorski račun i račun administratora baze podataka. Također ćete morati izmijeniti MongoDB konfiguraciju.
Unesite ljusku MongoDB:
mongo --host 127.0.0.1:27017
Prebacite se na adminbazu podataka:
use admin
Napravite korisničkog administratora s imenom useradminkoji koristi lozinku useradminpassword:
db.createUser({ user: "useradmin", pwd: "useradminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
Napomena: Administrator korisnika useradmintrebao bi upravljati svim MongoDB korisnicima, stoga je pametno odabrati jaku lozinku. Naravno, sigurniji savjet je zamijeniti useradminkorisničkim imenom koje je teško pogoditi.
Prebacite se na leanotebazu podataka:
use leanote
Napravite administratora baze podataka leanoteadminkoji koristi lozinku leanoteadminpassword:
db.createUser({ user: "leanoteadmin", pwd: "leanoteadminpassword", roles: [{ role: "dbOwner", db: "leanote" }] })
Napomena : Opet, preporuča se odabrati manje poznato korisničko ime i lozinku koju je teško pogoditi.
Nakon kreiranja MongoDB korisnika, možete potvrditi rezultate:
use admin
db.auth("useradmin", "useradminpassword")
Potvrdite administratora baze podataka:
use leanote
db.auth("leanoteadmin", "leanoteadminpassword")
Oba će se prikazati 1kao potvrdu.
Izađite iz ljuske MongoDB:
exit
Kako biste omogućili kontrolu pristupa MongoDB-u, također morate dodati dva retka u konfiguracijsku datoteku MongoDB /etc/mongod.conf, kako slijedi:
sudo bash -c "echo 'security:' >> /etc/mongod.conf"
sudo bash -c "echo ' authorization: enabled' >> /etc/mongod.conf"
Ponovno pokrenite MongoDB uslugu kako bi izmjene stupile na snagu:
sudo systemctl restart mongod.service
Od sada možete koristiti samo dva korisnička računa za pristup i upravljanje MongoDB-om, useradminza upravljanje svim MongoDB korisnicima i samo leanoteadminza upravljanje leanotebazom podataka.
Napravite sigurnosnu kopiju konfiguracijske datoteke Leanotea /home/leanote/leanote/conf/app.conf:
cd /home/leanote/leanote/conf/
cp app.conf app.conf.bak
Koristite viuređivač da otvorite konfiguracijsku datoteku Leanote:
vi app.conf
Pronađite sljedeće retke jedan po jedan:
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
Zamijenite ih, odnosno, kao što je prikazano u nastavku:
site.url=http://leanote.example.com:9000
db.username=leanoteadmin
db.password=leanoteadminpassword
app.secret=E52tyCDBRk39HmhdGYJLBS3etXpnz7DymmxkgHBYxd7Y9muWVVJ5QZNdDEaHV2sA
Napomena: Iz sigurnosnih razloga vrijednost app.secretparametra MORA biti 64-bitni nasumični niz koji se razlikuje od izvornog. Obavezno zamijenite vrijednost E52tyCDBRk39HmhdGYJLBS3etXpnz7DymmxkgHBYxd7Y9muWVVJ5QZNdDEaHV2sAsvojom 64-bitnom nasumičnom vrijednošću.
Spremi i zatvori:
:wq!
Korak 7: Pokrenite Leanote
Izmijenite pravila vatrozida kako biste dopustili ulazni TCP promet na portu 9000:
sudo firewall-cmd --permanent --add-port=9000/tcp
sudo systemctl reload firewalld.service
Pokrenite Leanote koristeći službenu skriptu:
cd /home/leanote/leanote/bin
bash run.sh
Kada vidite Listening on.. 0.0.0.0:9000, usmjerite svoj omiljeni web preglednik na http://leanote.example.com:9000kako biste počeli koristiti stranicu Leanote.
Za prijavu koristite zadani Leanote administratorski račun:
- Korisničko ime:
admin
- Zaporka:
abc123
Iz sigurnosnih razloga, trebali biste promijeniti zadanu lozinku odmah nakon prijave.
Korak 8: Omogućite HTTPSpristup
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
Prijavite se za Let's Encrypt SSL certifikat za domenu leanote.example.com:
sudo certbot certonly --standalone --agree-tos --no-eff-email -m admin@example.com -d leanote.example.com
Certifikat i lanac bit će spremljeni na sljedeći način:
/etc/letsencrypt/live/leanote.example.com/fullchain.pem
Datoteka privatnog ključa bit će spremljena na sljedeći način:
/etc/letsencrypt/live/leanote.example.com/privkey.pem
Prema zadanim postavkama, Let's Encrypt SSL certifikat će isteći za tri mjeseca. Možete postaviti cron posao, kao što je prikazano u nastavku, za automatsku obnovu vaših Let's Encrypt certifikata:
sudo crontab -e
Pritisnite Iza ulazak u insertnačin rada, a zatim unesite sljedeći redak:
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
Spremi i zatvori:
:wq!
Ovaj cron posao pokušat će obnoviti certifikat Let's Encrypt svaki dan u podne.
Instalirajte Nginx kao obrnuti proxy
Instalirajte Nginx koristeći EPEL YUM repo:
sudo yum install -y nginx
Napravite konfiguracijsku datoteku za 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
Ponovno pokrenite Nginx kako biste svoje izmjene stavili na snagu:
sudo systemctl daemon-reload
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service
Promijenite site.urlpostavku u konfiguracijskoj datoteci Leanote:
cd /home/leanote/leanote/conf/
vi app.conf
Pronađite sljedeći redak:
site.url=http://leanote.example.com:9000
Zamijenite ga:
site.url=https://leanote.example.com
Spremi i zatvori:
:wq!
Ponovno pokrenite skriptu Leanote:
cd /home/leanote/leanote/bin
bash run.sh
Sada usmjerite svoj omiljeni web preglednik na http://leanote.example.com/, i vidjet ćete da se HTTPSprotokol automatski aktivira. Jednostavno se prijavite kao adminkorisnik s novom lozinkom koju ste ranije postavili ili registrirajte nove korisničke račune za timsku suradnju.
Ponovno pritisnite CTRL+ Cda zaustavite Leanote skriptu. Kasnije ćemo demonizirati ovu skriptu.
Korak 9: Instalirajte wkhtmltopdfprogram
Leanote odlučuje koristiti wkhtmltopdfprogram za izvoz HTML stranica kao PDF datoteka. Instaliraj 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
Nemojte zaboraviti poslati wkhtmltopdfbinarni put /usr/local/bin/wkhtmltopdfu Export PDFodjeljku na nadzornoj ploči Leanote web administratora kada se Leanote ponovno pokrene.
Napomena: Ako pronađete nečitljive znakove u izvezenim PDF datotekama, možete pokušati riješiti problem dodavanjem potrebnih datoteka fontova u /usr/share/fonts/direktorij.
Korak 10: Koristite Supervisor da održite Leanote skriptu u radu
Kako biste zadržali svoju Leanote stranicu online, možete koristiti uslužni program Supervisor za automatsko pokretanje Leanote skripte ako se sruši.
Instalirajte Supervisor koristeći YUM:
sudo yum install -y supervisor
Napravite jednostavnu .inidatoteku Supervisora za 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
Pokrenite uslugu Supervisor, kao i uslugu Leanote:
sudo supervisord -c /etc/supervisord.conf
Potvrdite status usluge Leanote:
sudo supervisorctl status leanote
Izlaz će izgledati sljedeće:
leanote RUNNING pid 3707, uptime 0:02:36