Προαπαιτούμενα
Εγκαταστήστε προαπαιτούμενα πακέτα
Εγκαταστήστε το PostgreSQL
Προσθέστε έναν αποκλειστικό χρήστη της Διασποράς
Εγκαταστήστε το Ruby
Εγκαταστήστε το Exim4
Εγκαταστήστε και διαμορφώστε το Diaspora
Εγκαταστήστε το Required Gems
Ρύθμιση βάσης δεδομένων
Προκατασκευάστε τα στοιχεία ενεργητικού
Diaspora systemd Services
Nginx Reverse Proxy
Δημιουργήστε έναν χρήστη της Διασποράς
Sidekiq
Logrotate
Ενημέρωση Diaspora
Το Diaspora είναι ένα κοινωνικό δίκτυο ανοιχτού κώδικα με επίγνωση της ιδιωτικής ζωής. Σε αυτό το σεμινάριο, θα μάθετε πώς να ρυθμίζετε και να ρυθμίζετε ένα Diaspora pod στο Debian 9.
Προαπαιτούμενα
- Μια παρουσία διακομιστή Debian 9.
- Εκτελώντας ένα pod μεσαίου μεγέθους, ο διακομιστής σας θα πρέπει να διαθέτει, τουλάχιστον, 512 MB μνήμης RAM (+1 GB χώρος ανταλλαγής) και μια αξιοπρεπή CPU πολλαπλών πυρήνων.
- Ένας χρήστης sudo .
Εγκαταστήστε προαπαιτούμενα πακέτα
Πρώτα, ενημερώστε το σύστημα και εγκαταστήστε τα απαραίτητα πακέτα.
sudo apt-get update
sudo apt-get install build-essential libssl-dev libcurl4-openssl-dev libxml2-dev libxslt-dev imagemagick ghostscript curl libmagickwand-dev git libpq-dev redis-server nodejs
Εγκαταστήστε το PostgreSQL
Το Diaspora υποστηρίζει MySQL, MariaDB και PostgreSQL. Σε αυτόν τον οδηγό, θα χρησιμοποιήσουμε την PostgreSQL.
Εγκαταστήστε το PostgreSQL.
sudo apt-get install PostgreSQL-server
Συνδεθείτε στο PostgreSQL με τον postgres
χρήστη.
sudo -u postgres psql
Δημιουργήστε έναν χρήστη της Διασποράς.
CREATE USER diaspora WITH CREATEDB PASSWORD '<password>';
Προσθέστε έναν αποκλειστικό χρήστη της Διασποράς
Αυτός είναι ο λογαριασμός χρήστη που θα εκτελεί το Diaspora.
sudo adduser --disabled-login diaspora
Μετάβαση στον νέο χρήστη.
sudo su - diaspora
Εγκαταστήστε το Ruby
Υπάρχουν διάφοροι τρόποι εγκατάστασης του Ruby. Θα χρησιμοποιήσουμε rbenv
για τη διαχείριση του περιβάλλοντος και των εκδόσεων.
Αρχικά, θα χρειαστεί να εγκαταστήσετε τα πακέτα που απαιτεί η Ruby.
sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
Εγκαταστήστε rbenv
.
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
Επανασυνδεθείτε για να φορτώσετε ξανά τη διαδρομή.
exit
sudo su - diaspora
Εγκαταστήστε το ruby-build
πρόσθετο για rbenv
μεταγλώττιση του Ruby:
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
Εγκαταστήστε το Ruby.
rbenv install 2.4.3
rbenv global 2.4.3
Εγκαταστήστε το Exim4
Θα χρησιμοποιήσουμε το Exim4 ως αναμετάδοση SMTP για την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου στους χρήστες.
Εγκαταστήστε και διαμορφώστε το πακέτο.
sudo apt-get install exim4
sudo dpkg-reconfigure exim4-config
Κλωνοποιήστε τον πηγαίο κώδικα για τη Διασπορά.
cd ~
git clone -b master https://github.com/diaspora/diaspora.git
cd diaspora
Αντιγράψτε το παράδειγμα αρχείου διαμόρφωσης βάσης δεδομένων στη θέση που απαιτείται από το Diaspora.
cp config/database.yml.example config/database.yml
cp config/diaspora.yml.example config/diaspora.yml
Ανοίξτε το αρχείο διαμόρφωσης της βάσης δεδομένων σε ένα πρόγραμμα επεξεργασίας κειμένου για να επεξεργαστείτε ορισμένες από τις ρυθμίσεις.
nano config/database.yml
Αλλάξτε τις ρυθμίσεις της βάσης δεδομένων ώστε να ταιριάζουν με τον χρήστη PostgreSQL και τον κωδικό πρόσβασης που δημιουργήσατε νωρίτερα.
postgresql: &postgresql
adapter: postgresql
host: localhost
port: 5432
username: diaspora
password: __password__
encoding: unicode
Ανοίξτε το αρχείο διαμόρφωσης Diaspora.
nano config/diaspora.yml
Θα χρειαστεί να ενημερώσετε μερικές ρυθμίσεις σε αυτό το αρχείο για να λειτουργήσει σωστά το Diaspora.
url
: Ορίστε τη δημόσια διεύθυνση URL στο pod σας εδώ.
certificate_authorities
: Αφαιρέστε το #
lead για να το αποσχολιάσετε.
rails_environment
: Πρέπει να το ρυθμίσετε σε production
.
require_ssl
: Ρυθμίστε το σε για false
να αποτρέψετε μια ανακατεύθυνση από http://
σε https://
.
Εγκαταστήστε το Required Gems
Εγκαταστήστε το Bundle, τον διαχειριστή βιβλιοθήκης Ruby.
gem install bundler
script/configure_bundler
Σημείωση: Εάν έχετε σφάλματα σχετικά με την έκδοση Ruby, επεξεργαστείτε .ruby-version
και βάλτε τη δική σας (εδώ 2.4.3
αντί για 2.4
).
Ρύθμιση βάσης δεδομένων
Δημιουργήστε και διαμορφώστε τη βάση δεδομένων.
RAILS_ENV=production bin/rake db:create db:migrate
Προκατασκευάστε τα στοιχεία ενεργητικού
Αυτή η εντολή rake θα προμεταγλωττίσει τα στοιχεία.
RAILS_ENV=production bin/rake assets:precompile
Diaspora systemd Services
Υπάρχουν πολλοί τρόποι διαχείρισης της Διασποράς ως υπηρεσίας. Σε αυτό το σεμινάριο, θα χρησιμοποιήσουμε το Systemd.
Αρχικά, δημιουργήστε τα ακόλουθα αρχεία.
target
αρχείο systemd :touch /etc/systemd/system/diaspora.target
web
αρχείο υπηρεσίας systemd :touch /etc/systemd/system/diaspora-web.service
sidekiq
αρχείο υπηρεσίας systemd :touch /etc/systemd/system/diaspora-sidekiq.service
Επικολλήστε το ακόλουθο κείμενο διαμόρφωσης για κάθε αρχείο που δημιουργήσατε νωρίτερα.
target
αρχείο:
[Unit]
Description=Diaspora social network
Wants=postgresql.service
Wants=redis-server.service
After=redis-server.service
After=postgresql.service
[Install]
WantedBy=multi-user.target
web
αρχείο υπηρεσίας:
[Unit]
Description=Diaspora social network (unicorn)
PartOf=diaspora.target
StopWhenUnneeded=true
[Service]
User=diaspora
Environment=RAILS_ENV=production
WorkingDirectory=/home/diaspora/diaspora
ExecStart=/bin/bash -lc "bin/bundle exec unicorn -c config/unicorn.rb -E production"
Restart=always
[Install]
WantedBy=diaspora.target
sidekiq
αρχείο υπηρεσίας:
[Unit]
Description=Diaspora social network (sidekiq)
PartOf=diaspora.target
StopWhenUnneeded=true
[Service]
User=diaspora
Environment=RAILS_ENV=production
WorkingDirectory=/home/diaspora/diaspora
ExecStart=/bin/bash -lc "bin/bundle exec sidekiq"
Restart=always
[Install]
WantedBy=diaspora.target
Ενεργοποίηση υπηρεσιών εκκίνησης.
sudo systemctl enable diaspora.target diaspora-sidekiq.service diaspora-web.service
Επανεκκινήστε τις υπηρεσίες.
sudo systemctl restart diaspora.target
Βεβαιωθείτε ότι λειτουργούν σωστά.
sudo systemctl status diaspora-web.service
sudo systemctl status diaspora-sidekiq.service
Nginx Reverse Proxy
Θα χρησιμοποιήσουμε το Nginx ως αντίστροφο διακομιστή μεσολάβησης για την εξυπηρέτηση στατικών πόρων.
Θα χρησιμοποιήσουμε το acme.sh για να λάβουμε ένα πιστοποιητικό Let's Encrypt.
Κατεβάστε τον acme.sh
πηγαίο κώδικα.
git clone https://github.com/Neilpang/acme.sh.git
Δημιουργήστε ένα πιστοποιητικό Let's Encrypt.
./.acme.sh/acme.sh --issue --log \
--dns \
--keylength ec-256 \
--cert-file /etc/nginx/https/cert.pem \
--key-file /etc/nginx/https/key.pem \
--fullchain-file /etc/nginx/https/fullchain.pem \
-d example.com \
-d www.example.com
Εγκαταστήστε το Nginx.
sudo apt-get install nginx
Δημιουργήστε ένα νέο αρχείο διαμόρφωσης Nginx για το Diaspora pod μας.
nano /etc/nginx/conf.d/diaspora.conf
Συμπληρώστε το αρχείο με το ακόλουθο περιεχόμενο.
upstream diaspora_server {
server unix:/home/diaspora/diaspora/tmp/diaspora.sock;
}
server {
listen 80;
listen [::]:80;
server_name www.example.com example.com;
return 301 https://example.com$request_uri;
access_log /dev/null;
error_log /dev/null;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.example.com example.com;
if ($host = www.example.com) {
return 301 https://example.com$request_uri;
}
access_log /var/log/nginx/dspr-access.log;
error_log /var/log/nginx/dspr-error.log;
ssl_certificate /etc/nginx/https/fullchain.pem;
ssl_certificate_key /etc/nginx/https/key.pem;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+CHACHA20:EECDH+AESGCM:EECDH+AES;
ssl_ecdh_curve X25519:P-521:P-384:P-256;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
resolver 80.67.169.40 80.67.169.12 valid=300s;
resolver_timeout 5s;
ssl_session_cache shared:SSL:10m;
root /home/diaspora/diaspora/public;
client_max_body_size 5M;
client_body_buffer_size 256K;
try_files $uri @diaspora;
location /assets/ {
expires max;
add_header Cache-Control public;
}
location @diaspora {
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 Host $http_host;
proxy_redirect off;
proxy_pass http://diaspora_server;
}
}
Σημείωση: αλλάξτε example.com
στο δικό σας καταχωρημένο όνομα τομέα.
Αφού ολοκληρωθούν όλες οι τροποποιήσεις, ελέγξτε το αρχείο διαμόρφωσης για τυχόν σφάλματα.
sudo nginx -t
Επανεκκινήστε το Nginx για να εφαρμόσετε τις αλλαγές.
sudo systemctl restart nginx
Εάν τώρα επισκεφτείτε το όνομα τομέα του Diaspora pod στο πρόγραμμα περιήγησής σας (παράδειγμα: https://example.com
), θα μεταβείτε στη σελίδα υποδοχής της Diaspora.
Δημιουργήστε έναν χρήστη της Διασποράς
Κάντε κλικ στον σύνδεσμο στο Start by creating an account.
, και συμπληρώστε τα στοιχεία για να δημιουργήσετε έναν νέο χρήστη της Diaspora. Στη συνέχεια, θα μπορείτε να δείτε την αρχική σελίδα του χρήστη σας και να αρχίσετε να χρησιμοποιείτε το κοινωνικό δίκτυο Diaspora.
Αφού δημιουργήσετε έναν λογαριασμό, δώστε του δικαιώματα διαχειριστή:.
Role.add_admin User.where(username: "your_username").first.person
Τώρα έχετε πρόσβαση στον πίνακα ελέγχου διαχειριστή.
https://example.com/admins/dashboard
Sidekiq
Η Sidekiq, η οποία χειρίζεται την επεξεργασία εργασιών στο παρασκήνιο, διαθέτει μια διεπαφή ιστού διαθέσιμη στη διεύθυνση https://example.com/sidekiq
. Τα στατιστικά του pod είναι διαθέσιμα στο https://example.com/statistics
.
Logrotate
Θα χρησιμοποιήσουμε logrotate
για τη διαχείριση των αρχείων καταγραφής της Διασποράς.
Δημιουργία νέου logrotate
αρχείου για τη Διασπορά.
nano /etc/logrotate/diaspora
Στη συνέχεια, προσθέστε τις ακόλουθες γραμμές.
/home/diaspora/diaspora/log/*.log {
notifempty
copytruncate
missingok
compress
weekly
rotate 52
}
Αυτό θα περιστρέφει τα κούτσουρα κάθε εβδομάδα, θα τα συμπιέζει και θα τα διατηρεί για 52 εβδομάδες.
Ενημέρωση Diaspora
Όταν έρθει η ώρα να ενημερώσετε το Diaspora, ακολουθήστε αυτά τα βήματα.
Πρώτα, ενημερώστε το σύστημα.
sudo apt-get update
sudo apt-get dist-upgrade
Ενημερώστε τον πηγαίο κώδικα της Διασποράς με git
.
su - diaspora
cd diaspora
git pull
Ενημερώστε τους πολύτιμους λίθους.
gem install bundler
bin/bundle --full-index
Μεταφέρετε τη βάση δεδομένων και μεταγλωττίστε ξανά τα στοιχεία.
RAILS_ENV=production bin/rake db:migrate
RAILS_ENV=production bin/rake assets:precompile
Επιτέλους, επανεκκινήστε το Diaspora.
systemctl restart diaspora.target