Xây dựng social network Diaspora trên Debian

Xây dựng social network Diaspora trên Debian

Những thứ cần chuẩn bị:

  • 1 VPS sử dụng hệ điều hành Debian – có ít nhất 512MB Ram, và 1 CPU.

1. Cài đặt các gói bắt buộc

Đầu tiên, cập nhật hệ thống và cài đặt các gói cần thiết.

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

2. Cài đặt PostgreSQL

Diaspora hỗ trợ MySQL, MariaDB và PostgreSQL. Trong bài viết hướng dẫn này, mình sẽ sử dụng PostgreSQL.

Cài đặt PostgreSQL.

sudo apt-get install PostgreSQL-server

Kết nối với PostgreSQL với postgresngười dùng.

sudo -u postgres psql

Tạo người dùng Diaspora.

CREATE USER diaspora WITH CREATEDB PASSWORD '<password>';

3.Thêm một người dùng Diaspora chuyên dụng

Đây là tài khoản người dùng sẽ chạy Diaspora.

sudo adduser --disabled-login diaspora

Chuyển sang người dùng mới.

sudo  su - diaspora

4. Cài đặt Ruby

Có một số cách để cài đặt Ruby. Chúng tôi sẽ sử dụng rbenvđể quản lý môi trường và các phiên bản.

Đầu tiên, bạn cần cài đặt các gói mà Ruby yêu cầu.

sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev

Cài đặt 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

Kết nối lại để tải lại đường dẫn.

exit
sudo su - diaspora

Cài đặt ruby-buildplugin rbenvđể dịch Ruby:

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

Cài đặt Ruby.

rbenv install 2.4.3
rbenv global 2.4.3

5. Cài đặt Exim4

Cài đặt và cấu hình gói Exim4 để gửi email cho người dùng.

sudo apt-get install exim4
sudo dpkg-reconfigure exim4-config

6. Cài đặt và cấu hình Diaspora

Sao chép mã nguồn cho Diaspora.

cd ~
git clone -b master https://github.com/diaspora/diaspora.git
cd diaspora

Sao chép tệp cấu hình cơ sở dữ liệu mẫu vào vị trí mà Diaspora yêu cầu.

cp config/database.yml.example config/database.yml
cp config/diaspora.yml.example config/diaspora.yml

Mở tệp cấu hình cơ sở dữ liệu trong trình soạn thảo văn bản để chỉnh sửa một số cài đặt.

nano config/database.yml

Thay đổi cài đặt cơ sở dữ liệu để khớp với người dùng và mật khẩu PostgreSQL mà bạn đã tạo trước đó.

postgresql: &postgresql
adapter: postgresql
host: localhost
port: 5432
username: diaspora
password: __password__
encoding: unicode

Mở tệp cấu hình Diaspora.

nano config/diaspora.yml

Bạn sẽ cần cập nhật một vài cài đặt trong tệp này để Diaspora hoạt động bình thường.

  • url: Đặt URL hiển thị công khai cho nhóm của bạn.
  • certificate_authorities: Loại bỏ phần dẫn #đến bỏ ghi chú nó.
  • rails_environment: Bạn phải đặt điều này thành production.
  • require_ssl: Đặt điều này thành falseđể ngăn chuyển hướng từ http://đến https://.

7. Cài đặt Ruby

Cài đặt Bundle, trình quản lý thư viện Ruby.

gem install bundler
script/configure_bundler

Lưu ý: Nếu bạn gặp lỗi liên quan đến phiên bản Ruby của mình, hãy chỉnh sửa .ruby-versionvà đặt của riêng bạn (tại đây 2.4.3thay vì 2.4).

8.Thiết lập cơ sở dữ liệu

Tạo và cấu hình cơ sở dữ liệu.

RAILS_ENV=production bin/rake db:create db:migrate

9. Biên dịch trước nội dung

Lệnh rake này sẽ biên dịch trước các nội dung.

RAILS_ENV=production bin/rake assets:precompile

9. Dịch vụ Diaspora systemd

Có nhiều cách để quản lý Diaspora như một dịch vụ. Trong hướng dẫn này, chúng tôi sẽ sử dụng Systemd.

Đầu tiên, hãy tạo các tệp sau.

  • targettệp systemd :touch /etc/systemd/system/diaspora.target
  • webtệp dịch vụ systemd :touch /etc/systemd/system/diaspora-web.service
  • sidekiqtệp dịch vụ systemd :touch /etc/systemd/system/diaspora-sidekiq.service

Dán vào văn bản cấu hình sau cho mỗi tệp mà bạn đã tạo trước đó.

target tập tin:

[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 tệp dịch vụ:

[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 tệp dịch vụ:

[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

Bật dịch vụ khởi động.

sudo systemctl enable diaspora.target diaspora-sidekiq.service diaspora-web.service

Khởi động lại các dịch vụ.

sudo systemctl restart diaspora.target

Đảm bảo rằng chúng đang chạy chính xác.

sudo systemctl status diaspora-web.service
sudo systemctl status diaspora-sidekiq.service

10. Nginx Reverse Proxy

Chúng ta sẽ sử dụng Nginx làm proxy để phục vụ các tài nguyên tĩnh.

Tải xuống acme.shmã nguồn.

git clone https://github.com/Neilpang/acme.sh.git

Tạo chứng chỉ 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

Cài đặt Nginx.

sudo apt-get install nginx

Tạo tệp cấu hình Nginx mới cho Diaspora.

nano /etc/nginx/conf.d/diaspora.conf

Điền vào tệp với nội dung sau.

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;
  }
}

Lưu ý: đổi example.comsang tên miền đã đăng ký của riêng bạn.

Sau khi tất cả các sửa đổi đã được hoàn thành, hãy kiểm tra tệp cấu hình xem có lỗi nào không.

sudo nginx -t

Khởi động lại Nginx để áp dụng các thay đổi.

sudo systemctl restart nginx

Nếu bây giờ bạn truy cập tên miền trong trình duyệt của mình (ví dụ https://example.com:), bạn sẽ đến trang chào mừng Diaspora.

11. Tạo người dùng Diaspora

Nhấp vào liên kết Start by creating an account.và điền thông tin chi tiết để tạo người dùng Diaspora mới. Sau đó, bạn sẽ có thể xem trang chủ của người dùng của mình và bắt đầu sử dụng mạng xã hội Diaspora.

Sau khi bạn tạo tài khoản, hãy cấp cho nó quyền quản trị:.

Role.add_admin User.where(username: "your_username").first.person

Bây giờ bạn có quyền truy cập vào bảng điều khiển quản trị.

https://example.com/admins/dashboard

12. Sidekiq

Sidekiq, chuyên xử lý các công việc nền, có giao diện web tại https://example.com/sidekiq. Số liệu thống kê về nhóm có sẵn tại https://example.com/statistics.

13. Logrotate

Chúng tôi sẽ sử dụng logrotateđể quản lý nhật ký Diaspora.

Tạo một logrotate cho Diaspora.

nano /etc/logrotate/diaspora

Sau đó, thêm các dòng sau.

/home/diaspora/diaspora/log/*.log {
  notifempty
  copytruncate
  missingok
  compress
  weekly
  rotate 52
}

Thao tác này sẽ xoay các nhật ký hàng tuần, nén chúng và giữ chúng trong 52 tuần.

14. Cập nhật Diaspora

Khi cần cập nhật Diaspora, hãy làm theo các bước sau.

ầu tiên, hãy cập nhật hệ thống.

sudo apt-get update
sudo apt-get dist-upgrade

Cập nhật mã nguồn Diaspora với git.

su - diaspora
cd diaspora
git pull

Cập nhật Ruby.

gem install bundler
bin/bundle --full-index

Di chuyển cơ sở dữ liệu và biên dịch lại nội dung.

RAILS_ENV=production bin/rake db:migrate
RAILS_ENV=production bin/rake assets:precompile

Cuối cùng, khởi động lại Diaspora.

systemctl restart diaspora.target

Be the first to comment

Leave a Reply

Your email address will not be published.


*