Προαπαιτούμενα
Βήμα 1: Δημιουργήστε ένα αρχείο ανταλλαγής
Βήμα 2: Αποκτήστε δυαδικά αρχεία Leanote 2.6.1
Βήμα 3: Εγκαταστήστε το MongoDB Community Edition 4.0
Βήμα 4: Εισαγάγετε αρχικά δεδομένα Leanote στο MongoDB
Βήμα 5: Ενεργοποιήστε τον έλεγχο ταυτότητας MongoDB
Βήμα 6: Διαμόρφωση του Leanote
Βήμα 7: Ξεκινήστε το Leanote
Βήμα 8: Ενεργοποιήστε την πρόσβαση HTTPS
Βήμα 9: Εγκαταστήστε το πρόγραμμα wkhtmltopdf
Βήμα 10: Χρησιμοποιήστε το Supervisor για να διατηρήσετε τη δέσμη ενεργειών Leanote σε λειτουργία
Το Leanote είναι μια δωρεάν, ελαφριά και ανοιχτού κώδικα εναλλακτική λύση για το Evernote, η οποία είναι γραμμένη σε Golang. Έχοντας κατά νου την εμπειρία χρήστη, το Leanote παρέχει στους χρήστες πολλές πρακτικές δυνατότητες, όπως υποστήριξη μεταξύ πλατφορμών, γραφή στη σύνταξη MarkDown, δημόσιο ή ιδιωτικό blogging, συλλογή και κοινή χρήση γνώσεων και ομαδική συνεργασία.
Σε αυτό το άρθρο, θα σας καθοδηγήσω στη ρύθμιση ενός διακομιστή 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 για σύστημα 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
Όπως απαιτείται από το 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βάσης δεδομένων.
Δημιουργήστε αντίγραφα ασφαλείας του αρχείου διαμόρφωσης Leanote /home/leanote/leanote/conf/app.conf:
cd /home/leanote/leanote/conf/
cp app.conf app.conf.bak
Χρησιμοποιήστε το viπρόγραμμα επεξεργασίας για να ανοίξετε το αρχείο διαμόρφωσης Leanote:
vi app.conf
Βρείτε τις παρακάτω γραμμές μία προς μία:
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
Αντικαταστήστε τα, αντίστοιχα, όπως φαίνεται παρακάτω:
site.url=http://leanote.example.com:9000
db.username=leanoteadmin
db.password=leanoteadminpassword
app.secret=E52tyCDBRk39HmhdGYJLBS3etXpnz7DymmxkgHBYxd7Y9muWVVJ5QZNdDEaHV2sA
Σημείωση: Για λόγους ασφαλείας, η τιμή της app.secretπαραμέτρου ΠΡΕΠΕΙ να είναι μια τυχαία συμβολοσειρά 64-bit που είναι διαφορετική από την αρχική. Φροντίστε να αντικαταστήσετε την τιμή E52tyCDBRk39HmhdGYJLBS3etXpnz7DymmxkgHBYxd7Y9muWVVJ5QZNdDEaHV2sAμε τη δική σας τυχαία τιμή 64-bit.
Αποθήκευση και έξοδος:
:wq!
Βήμα 7: Ξεκινήστε το Leanote
Τροποποιήστε τους κανόνες του τείχους προστασίας για να επιτρέπεται η εισερχόμενη κυκλοφορία TCP στη θύρα 9000:
sudo firewall-cmd --permanent --add-port=9000/tcp
sudo systemctl reload firewalld.service
Ξεκινήστε το Leanote χρησιμοποιώντας το επίσημο σενάριο:
cd /home/leanote/leanote/bin
bash run.sh
Μόλις δείτε το Listening on.. 0.0.0.0:9000, κατευθύνετε το αγαπημένο σας πρόγραμμα περιήγησης ιστού για http://leanote.example.com:9000να αρχίσετε να χρησιμοποιείτε τον ιστότοπο Leanote.
Χρησιμοποιήστε τον προεπιλεγμένο λογαριασμό διαχειριστή Leanote για να συνδεθείτε:
- Όνομα χρήστη:
admin
- Κωδικός πρόσβασης:
abc123
Για λόγους ασφαλείας, θα πρέπει να αλλάξετε τον προεπιλεγμένο κωδικό πρόσβασης αμέσως μετά τη σύνδεση.
Βήμα 8: Ενεργοποιήστε την HTTPSπρόσβαση
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 online, μπορείτε να χρησιμοποιήσετε το βοηθητικό πρόγραμμα Supervisor για αυτόματη εκκίνηση της δέσμης ενεργειών Leanote σε περίπτωση σφάλματος.
Εγκαταστήστε το Supervisor χρησιμοποιώντας το YUM:
sudo yum install -y supervisor
Δημιουργήστε ένα απλό .iniαρχείο Supervisor για το 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