Προαπαιτούμενα
Εγκαταστήστε προαπαιτούμενα πακέτα
Εγκαταστήστε το PostgreSQL
Προσθέστε έναν αποκλειστικό χρήστη της Διασποράς
Εγκαταστήστε το Ruby
Ρύθμιση διακομιστή αλληλογραφίας
Εγκαταστήστε και διαμορφώστε το Diaspora
Εγκαταστήστε το Required Gems
Ρύθμιση βάσης δεδομένων
Προκατασκευάστε τα στοιχεία ενεργητικού
Diaspora systemd Services
Nginx Reverse Proxy
Δημιουργήστε έναν χρήστη της Διασποράς
Sidekiq
Logrotate
Ενημέρωση Diaspora
Το Diaspora είναι ένα κοινωνικό δίκτυο ανοιχτού κώδικα με επίγνωση της ιδιωτικής ζωής. Σε αυτό το σεμινάριο, θα μάθετε πώς να ρυθμίζετε και να διαμορφώνετε ένα Diaspora pod στο CentOS 7.
Προαπαιτούμενα
- Μια παρουσία διακομιστή CentOS 7.
- Εκτελώντας ένα pod μεσαίου μεγέθους, ο διακομιστής σας θα πρέπει να διαθέτει, τουλάχιστον, 512 MB μνήμης RAM (+1 GB χώρος ανταλλαγής) και μια αξιοπρεπή CPU πολλαπλών πυρήνων.
- Ένας χρήστης sudo .
Εγκαταστήστε προαπαιτούμενα πακέτα
Πρώτα, κατεβάστε και εγκαταστήστε την πιο πρόσφατη έκδοση του EPEL.
sudo yum install epel-release
Εγκαταστήστε τα απαραίτητα πακέτα.
sudo yum install tar make automake gcc gcc-c++ git net-tools cmake libcurl-devel libxml2-devel libffi-devel libxslt-devel wget redis ImageMagick nodejs postgresql-devel
Ενεργοποιήστε redisτην έναρξη κατά την εκκίνηση του συστήματός σας.
sudo systemctl enable redis
sudo systemctl start redis
Εγκαταστήστε το PostgreSQL
Το Diaspora υποστηρίζει MySQL, MariaDB και PostgreSQL. Σε αυτόν τον οδηγό, θα χρησιμοποιήσουμε την PostgreSQL.
Εγκαταστήστε το PostgreSQL.
sudo yum install postgresql-server postgresql-contrib postgresql-setup initdb
Ενεργοποιήστε την PostgreSQL για να ξεκινήσει κατά την εκκίνηση του συστήματός σας.
sudo systemctl enable postgresql
sudo systemctl start postgresql
Συνδεθείτε στο 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 yum install -y git-core zlib zlib-devel gcc-c++ patch readline readline-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison curl sqlite-devel
Εγκαταστήστε 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
Ρύθμιση διακομιστή αλληλογραφίας
Θα χρησιμοποιήσουμε το Postfix ως αναμετάδοση SMTP για την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου στους χρήστες. Ανατρέξτε σε αυτό το άρθρο για να μάθετε πώς να εγκαταστήσετε έναν απλό διακομιστή αλληλογραφίας, με Postfix ως MTA, Dovecot ως MDA και Sieve για ταξινόμηση αλληλογραφίας.
Κλωνοποιήστε τον πηγαίο κώδικα για τη Διασπορά.
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: Αφαιρέστε το αρχικό # για να το αποσχολιάσετε.
rails_environment: Πρέπει να το ρυθμίσετε στην παραγωγή.
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 yum 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
Εάν εκτελείτε ένα τείχος προστασίας, εκτελέστε τις ακόλουθες εντολές για να επιτρέψετε HTTPκαι να HTTPSκυκλοφορήσετε.
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
Εάν τώρα επισκεφτείτε το όνομα τομέα του 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 yum update
Ενημερώστε τον πηγαίο κώδικα της Διασποράς με το 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