Parakushtet
Hapi 1: Krijoni një skedar shkëmbimi
Hapi 2: Merrni skedarët binare Leanote 2.6.1
Hapi 3: Instaloni MongoDB Community Edition 4.0
Hapi 4: Importoni të dhënat fillestare të Leanote në MongoDB
Hapi 5: Aktivizo vërtetimin e MongoDB
Hapi 6: Konfiguro Leanote
Hapi 7: Filloni Leanote
Hapi 8: Aktivizo qasjen HTTPS
Hapi 9: Instaloni programin wkhtmltopdf
Hapi 10: Përdorni Mbikëqyrësin për të mbajtur skriptin Leanote në funksionim dhe funksionim
Leanote është një alternativë falas, e lehtë dhe me burim të hapur për Evernote, e cila është shkruar në Golang. Duke pasur parasysh përvojën e përdoruesit, Leanote u ofron përdoruesve shumë veçori praktike, duke përfshirë mbështetjen ndër-platformë, shkrimin në sintaksën MarkDown, blogimin publik ose privat, mbledhjen dhe ndarjen e njohurive dhe bashkëpunimin në ekip.
Në këtë artikull, unë do t'ju udhëzoj përmes konfigurimit të një serveri Leanote në një shembull të serverit CentOS 7. Për qëllime sigurie, HTTPS supportdo të mbulohet edhe aktivizimi i përdorimit të një certifikate Let's Encrypt SSL dhe Nginx.
Parakushtet
- Një shembull i serverit Vultr CentOS 7 i sapo vendosur. Thuaj se adresa e tij IPv4 është
203.0.113.1.
- Një përdorues sudo i quajtur
leanote.
- Të gjitha paketat e softuerit në makinë janë përditësuar në statusin më të fundit të qëndrueshëm duke përdorur repon EPEL YUM. Shikoni detajet këtu .
- Një domen
leanote.example.comqë drejtohet në shembullin e serverit të përmendur më sipër.
Hapi 1: Krijoni një skedar shkëmbimi
Kur hapni një shembull të ri të serverit Vultr CentOS 7, rekomandohet gjithmonë të vendosni një skedar shkëmbimi në mënyrë që të siguroheni që sistemi të funksionojë pa probleme. Për shembull, krijimi i një skedari shkëmbimi me madhësi 2048 MB është i përshtatshëm për një makinë me 2 GB memorie.
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
Shënim: Nëse jeni duke përdorur një madhësi të ndryshme të serverit, mund t'ju duhet të modifikoni madhësinë e skedarit të shkëmbimit.
Hapi 2: Merrni skedarët binare Leanote 2.6.1
Shkarkoni dhe nxirrni versionin më të fundit të qëndrueshëm të Leanote për sistemin Linux 64-bit:
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
Siç kërkohet nga Leanote, MongoDB NoSQL DBMS duhet të jetë në vend përpara se të mund të konfiguroni me sukses një server Leanote.
Konfiguro repon MongoDB 4.0 YUM
Krijo repon MongoDB 4.0 YUM si më poshtë:
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
Instaloni paketat MongoDB 4.0 duke përdorur YUM
Instaloni të gjithë përbërësit dhe mjetet e MongoDB duke përdorur repon MongoDB 4.0 YUM të krijuar më parë:
sudo yum install -y mongodb-org
Konfiguro SELinux për MongoDB 4.0
Si parazgjedhje, MongoDB do të përdorte 27017portin kur punonte, gjë që nuk lejohet nëse SELinux është në enforcingmodalitetin në makinën CentOS 7. Përdorni komandën e mëposhtme për të konfirmuar modalitetin aktual SELinux:
sudo getenforce
Në një shembull të serverit Vultr CentOS 7, SELinux është i çaktivizuar si parazgjedhje. Pra, dalja e komandës së mësipërme do të ishte:
Disabled
Në këtë rast, mund të ndiheni të lirë të kaloni udhëzimet e mëposhtme për konfigurimin e SELinux dhe të vazhdoni përpara.
Sidoqoftë, nëse po ekzekutoni një shembull origjinal të serverit CentOS 7, dalja e komandës së mësipërme do të ishte Enforcing. Ju duhet të kryeni një nga tre opsionet e mëposhtme përpara se të filloni dhe aktivizoni shërbimin MongoDB.
Opsioni 1: Lejo MongoDB të përdorë 27017portin
sudo semanage port -a -t mongod_port_t -p tcp 27017
Opsioni 2: Çaktivizo SELinux
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
sudo shutdown -r now
Opsioni 3: Ndrysho SELinux në permissivemodalitet
sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
sudo shutdown -r now
Nisni shërbimin MongoDB dhe bëni që të fillojë pas një rindezjeje të sistemit:
sudo systemctl start mongod.service
sudo systemctl enable mongod.service
Hapi 4: Importoni të dhënat fillestare të Leanote në MongoDB
Përdorni komandat e mëposhtme për të importuar të dhënat fillestare Leanote në 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/
Hapi 5: Aktivizo vërtetimin e MongoDB
Për qëllime sigurie, ju duhet të aktivizoni kontrollin e aksesit në MongoDB menjëherë pasi shërbimi MongoDB të funksionojë. Për këtë qëllim, ju duhet të krijoni të paktën dy llogari përdoruesish MongoDB: një llogari administratori të përdoruesit dhe një llogari administratori të bazës së të dhënave. Ju gjithashtu do të duhet të modifikoni konfigurimin e MongoDB.
Futni guaskën MongoDB:
mongo --host 127.0.0.1:27017
Kaloni në adminbazën e të dhënave:
use admin
Krijoni një administrator përdoruesi të quajtur useradminqë përdor një fjalëkalim useradminpassword:
db.createUser({ user: "useradmin", pwd: "useradminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
Shënim: Administratori i përdoruesit useradminsupozohet të menaxhojë të gjithë përdoruesit e MongoDB, kështu që është e mençur të zgjidhni një fjalëkalim të fortë. Sigurisht, një këshillë më e sigurt është zëvendësimi useradminme një emër përdoruesi që vështirë të merret me mend.
Kaloni në leanotebazën e të dhënave:
use leanote
Krijoni një administrator të bazës së të dhënave të quajtur leanoteadminqë përdor një fjalëkalim leanoteadminpassword:
db.createUser({ user: "leanoteadmin", pwd: "leanoteadminpassword", roles: [{ role: "dbOwner", db: "leanote" }] })
Shënim : Përsëri, rekomandohet të zgjidhni një emër përdoruesi më pak të njohur dhe një fjalëkalim të vështirë për t'u gjetur.
Duke krijuar përdoruesit e MongoDB, mund të konfirmoni rezultatet:
use admin
db.auth("useradmin", "useradminpassword")
Konfirmoni administratorin e bazës së të dhënave:
use leanote
db.auth("leanoteadmin", "leanoteadminpassword")
Të dyja do të dalin 1si konfirmim.
Dilni nga guaska MongoDB:
exit
Për të mundësuar kontrollin e aksesit në MongoDB, duhet gjithashtu të bashkëngjitni dy rreshta në skedarin e konfigurimit MongoDB /etc/mongod.conf, si më poshtë:
sudo bash -c "echo 'security:' >> /etc/mongod.conf"
sudo bash -c "echo ' authorization: enabled' >> /etc/mongod.conf"
Rinisni shërbimin MongoDB në mënyrë që modifikimet të hyjnë në fuqi:
sudo systemctl restart mongod.service
Tani e tutje, ju mund të përdorni vetëm dy llogaritë e përdoruesve për të hyrë dhe menaxhuar MongoDB, useradminpër menaxhimin e të gjithë përdoruesve të MongoDB dhe vetëm leanoteadminpër menaxhimin e leanotebazës së të dhënave.
Bëni kopje rezervë të skedarit të konfigurimit Leanote /home/leanote/leanote/conf/app.conf:
cd /home/leanote/leanote/conf/
cp app.conf app.conf.bak
Përdorni viredaktorin për të hapur skedarin e konfigurimit 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
Aplikoni për një certifikatë Let's Encrypt SSL për domenin leanote.example.com:
sudo certbot certonly --standalone --agree-tos --no-eff-email -m admin@example.com -d leanote.example.com
Certifikata dhe zinxhiri do të ruhen si më poshtë:
/etc/letsencrypt/live/leanote.example.com/fullchain.pem
Skedari i çelësit privat do të ruhet si më poshtë:
/etc/letsencrypt/live/leanote.example.com/privkey.pem
Si parazgjedhje, certifikata Let's Encrypt SSL do të skadojë për tre muaj. Mund të konfiguroni një punë cron, siç tregohet më poshtë, për të rinovuar automatikisht certifikatat tuaja Let's Encrypt:
sudo crontab -e
Shtypni Ipër të hyrë në insertmodalitetin dhe më pas futni rreshtin e mëposhtëm:
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
Ruani dhe hiqni dorë:
:wq!
Kjo punë cron do të përpiqet të rinovojë certifikatën Let's Encrypt çdo ditë në mesditë.
Instaloni Nginx si një përfaqësues të kundërt
Instaloni Nginx duke përdorur repon EPEL YUM:
sudo yum install -y nginx
Krijo një skedar konfigurimi për 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
Rinisni Nginx për të vënë në fuqi modifikimet tuaja:
sudo systemctl daemon-reload
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service
Ndryshoni site.urlcilësimin në skedarin e konfigurimit Leanote:
cd /home/leanote/leanote/conf/
vi app.conf
Gjeni rreshtin e mëposhtëm:
site.url=http://leanote.example.com:9000
Zëvendësojeni:
site.url=https://leanote.example.com
Ruani dhe hiqni dorë:
:wq!
Ekzekutoni përsëri skriptin Leanote:
cd /home/leanote/leanote/bin
bash run.sh
Tani drejtojeni shfletuesin tuaj të preferuar të internetit në http://leanote.example.com/, dhe do të zbuloni se HTTPSprotokolli aktivizohet automatikisht. Thjesht hyni si adminpërdorues me fjalëkalimin e ri që keni vendosur më herët ose regjistroni llogari të reja përdoruesish për bashkëpunim ekipor.
Përsëri, shtypni CTRL+ Cpër të ndaluar skriptin Leanote. Ne do ta përpunojmë këtë skenar më vonë.
Hapi 9: Instaloni wkhtmltopdfprogramin
Leanote zgjedh të përdorë wkhtmltopdfprogramin për të eksportuar faqet HTML si skedarë PDF. Instaloni 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
Mos harroni të paraqisni wkhtmltopdfshtegun binare /usr/local/bin/wkhtmltopdfnë Export PDFseksionin në panelin e administratorit të uebit të Leanote kur Leanote të funksionojë përsëri.
Shënim: Nëse gjeni karaktere të palexueshme në skedarët PDF të eksportuar, mund të përpiqeni ta rregulloni problemin duke shtuar skedarët e kërkuar të shkronjave në /usr/share/fonts/drejtori.
Hapi 10: Përdorni Mbikëqyrësin për të mbajtur skriptin Leanote në funksionim dhe funksionim
Për ta mbajtur faqen tuaj të Leanote në linjë, mund të përdorni programin Mbikëqyrës për të nisur automatikisht skriptin Leanote nëse ai rrëzohet.
Instaloni Supervisor duke përdorur YUM:
sudo yum install -y supervisor
Krijoni një .iniskedar të thjeshtë mbikëqyrës për 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
Nisni shërbimin Supervisor, si dhe shërbimin Leanote:
sudo supervisord -c /etc/supervisord.conf
Konfirmoni statusin e shërbimit Leanote:
sudo supervisorctl status leanote
Prodhimi do të jetë i ngjashëm me sa vijon:
leanote RUNNING pid 3707, uptime 0:02:36