Для того, чтобы изменить мир, нужно прежде изменить себя (Авессалом Подводный).

Как установить Mastodon на CentOS 7

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
2 октября 2018
Как установить Mastodon на CentOS 7
Mastodon – бесплатная социальная сеть с открытым исходным кодом на основе открытого веб-протокола. Он использует Ruby on Rails для back-end и React.js и Redux для front-end. В этой статье мы покажем вам, как установить Mastodon на сервер CentOS 7.

1. Обновите свой сервер CentOS 7 и установите необходимые пакеты.

Войдите в свой VPS через SSH в качестве пользователя sudo:

ssh userame@IP_Address

 

После входа в систему выполните следующие команды, чтобы убедиться, что все установленные пакеты обновлены:

sudo yum update

 

Затем установите установочные пакеты, необходимые для сборки Mastodon, с помощью следующей команды:

sudo yum install curl git gpg gcc git-core zlib zlib-devel gcc-c++ patch readline readline-devel libyaml-devel libffi-devel openssl-devel make autoconf automake libtool bison curl sqlite-devel ImageMagick libxml2-devel libxslt-devel gdbm-devel ncurses-devel glibc-headers glibc-devel libicu-devel libidn-devel protobuf-devel protobuf

 

2. Установите Node.js и Yarn

Мы установим Node.js v8 LTS из репозитория NodeSource, который зависит от включенного репозитория EPEL.

Чтобы включить репозиторий EPEL на вашем CentOS 7 VPS, выполните следующую команду:

sudo yum install epel-release curl

 

После включения репозитория EPEL, запустите следующую команду, чтобы добавить репозиторий Node.js v8 LTS:

curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -

 

После включения репозитория NodeSource установите Node.js с помощью следующей команды:

sudo yum install nodejs

 

Включите репозиторий RPM Yarn:

curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo

 

Установите последнюю версию Yarn с помощью:

sudo yum install yarn

 

3. Установите PostgreSQL

Включите репозиторий PostgreSQL:

sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

 

Для установки сервера PostgreSQL выполните следующую команду:

sudo yum install postgresql96-server postgresql96-contrib postgresql96-devel

 

По завершении установки создайте новый кластер базы данных:

sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb

 

Запустите службу PostgreSQL и включите ее при запуске:

sudo systemctl enable postgresql-9.6
sudo systemctl start postgresql-9.6

 

Войдите в оболочку PostgreSQL:

sudo -u postgres psql

 

Создайте нового пользователя для экземпляра Mastodon:

CREATE USER mastodon CREATEDB;

 

4. Установите Redis

Установка Redis довольно проста, просто запустите следующую команду:

sudo yum install redis

 

5. Создайте нового пользователя системы

Чтобы создать нового пользователя системы для Mastodon, выполните следующую команду:

sudo adduser mastodon

 

6. Установите Ruby

Мы установим Ruby с помощью скрипта Rbenv.

Перед клонированием репозитория rbenv переключитесь на нового пользователя mastodon:

sudo su - mastodon

 

Настройте rbenv и ruby-build с помощью следующих команд:

cd
git clone git://github.com/sstephenson/rbenv.git .rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
exec $SHELL

git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bash_profile
exec $SHELL

 

Как только настройки rbenv и ruby-build будут установлены, установите последнюю версию Ruby с:

rbenv install 2.5.1
rbenv global 2.5.1

 

Чтобы убедиться, что все сделано правильно, используйте команду ruby --version.

Результат должен быть похож на следующий:

ruby --version
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

 

7. Клонировать хранилище git репозитория Mastodon и установить зависимости

Следующие команды также запускаются как пользователь mastodon.

Скройте хранилище gast-хранилища mastodon в каталог ~/live и выйдите в последнюю стабильную ветку Mastodon:

cd
git clone https://github.com/tootsuite/mastodon.git live
cd ~/live
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)

 

Установите зависимости  bundler and ruby  со следующими командами:

gem install bundler
bundle install -j$(getconf _NPROCESSORS_ONLN) --deployment --without development test

 

Установите зависимости node.js с помощью:

yarn install --pure-lockfile

8. Настроить Mastodon

Следующие команды запускаются как пользователь mastodon.

Перейдите в каталог установки Mastodon и выполните следующую команду, чтобы начать настройку:

cd ~/live
RAILS_ENV=production bundle exec rake mastodon:setup

 

Установщик задаст вам несколько вопросов, создаст новый секрет приложения, настроит схему базы данных и скомпилирует активы.

Your instance is identified by its domain name. Changing it afterward will break things.
Domain name: your-domain.ru

Single user mode disables registrations and redirects the landing page to your public profile.
Do you want to enable single user mode? No

Are you using Docker to run Mastodon? no

PostgreSQL host: /var/run/postgresql
PostgreSQL port: 5432
Name of PostgreSQL database: mastodon_production
Name of PostgreSQL user: mastodon
Password of PostgreSQL user:
Database configuration works! 

Redis host: localhost
Redis port: 6379
Redis password:
Redis configuration works! 

Do you want to store uploaded files on the cloud? No

Do you want to send e-mails from localhost? yes
E-mail address to send e-mails "from": Mastodon <notifications@your-domain.ru>
Send a test e-mail with this configuration right now? no

This configuration will be written to .env.production
Save configuration? Yes

Now that configuration is saved, the database schema must be loaded.
If the database already exists, this will erase its contents.
Prepare the database now? Yes
Running `RAILS_ENV=production rails db:setup` ...


Created database 'mastodon_production'

...

Done!

The final step is compiling CSS/JS assets.
This may take a while and consume a lot of RAM.
Compile the assets now? Yes
Running `RAILS_ENV=production rails assets:precompile` ...


yarn install v1.9.4

...

Using /home/mastodon/live/config/webpacker.yml file for setting up webpack paths
Compiling…
  Compiled all packs in /home/mastodon/live/public/packs
  Rendering errors/500.html.haml within layouts/error
  Rendered errors/500.html.haml within layouts/error (2596.9ms)
Done!

All done! You can now power on the Mastodon server 

Do you want to create an admin user straight away? Yes
Username: admin
E-mail: admin@your-domain.ru
You can login with the password: 80b4aA233adaeS86d095Scbf79302f81
You can change your password once you login.

9. Создайте модули Mastodon systemd

Следующие команды запускаются как пользователь root или sudo.

Откройте текстовый редактор и создайте следующие файлы systemd:

sudo nano /etc/systemd/system/mastodon-web.service
[Unit]
Description=mastodon-web
After=network.target

[Service]
Type=simple
User=mastodon
WorkingDirectory=/home/mastodon/live
Environment="RAILS_ENV=production"
Environment="PORT=3000"
ExecStart=/home/mastodon/.rbenv/shims/bundle exec puma -C config/puma.rb
ExecReload=/bin/kill -SIGUSR1 $MAINPID
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target
sudo nano /etc/systemd/system/mastodon-sidekiq.service
[Unit]
Description=mastodon-sidekiq
After=network.target

[Service]
Type=simple
User=mastodon
WorkingDirectory=/home/mastodon/live
Environment="RAILS_ENV=production"
Environment="DB_POOL=5"
ExecStart=/home/mastodon/.rbenv/shims/bundle exec sidekiq -c 5 -q default -q push -q mailers -q pull
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target
sudo nano /etc/systemd/system/mastodon-streaming.service
[Unit]
Description=mastodon-streaming
After=network.target

[Service]
Type=simple
User=mastodon
WorkingDirectory=/home/mastodon/live
Environment="NODE_ENV=production"
Environment="PORT=4000"
ExecStart=/usr/bin/npm run start
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

 

Включите и запустите все службы:

sudo systemctl enable mastodon-web.service
sudo systemctl enable mastodon-sidekiq.service
sudo systemctl enable mastodon-streaming.service

sudo systemctl start mastodon-web.service
sudo systemctl start mastodon-sidekiq.service
sudo systemctl start mastodon-streaming.service

 

10. Установите и настройте Nginx

Чтобы установить Nginx, выполните следующую команду:

sudo yum install nginx

 

После установки nginx создайте серверный блок для своего домена. Не забудьте установить правильный путь к сертификату SSL и закрытому ключу.

sudo nano /etc/nginx/conf.d/your-domain.ru.conf
map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

server {
  listen 80;
  listen [::]:80;
  server_name your-domain.ru;
  root /home/mastodon/live/public;
  # Useful for Let's Encrypt
  location /.well-known/acme-challenge/ { allow all; }
  location / { return 301 https://$host$request_uri; }
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name your-domain.ru;

  ssl_protocols TLSv1.2;
  ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;

  ssl_certificate     /etc/ssl/certs/certificate.crt;
  ssl_certificate_key /etc/ssl/private/certificate.key;

  keepalive_timeout    70;
  sendfile             on;
  client_max_body_size 80m;

  root /home/mastodon/live/public;

  gzip on;
  gzip_disable "msie6";
  gzip_vary on;
  gzip_proxied any;
  gzip_comp_level 6;
  gzip_buffers 16 8k;
  gzip_http_version 1.1;
  gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

  add_header Strict-Transport-Security "max-age=31536000";

  location / {
    try_files $uri @proxy;
  }

  location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) {
    add_header Cache-Control "public, max-age=31536000, immutable";
    try_files $uri @proxy;
  }
  
  location /sw.js {
    add_header Cache-Control "public, max-age=0";
    try_files $uri @proxy;
  }

  location @proxy {
    proxy_set_header Host $host;
    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 Proxy "";
    proxy_pass_header Server;

    proxy_pass http://127.0.0.1:3000;
    proxy_buffering off;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    tcp_nodelay on;
  }

  location /api/v1/streaming {
    proxy_set_header Host $host;
    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 Proxy "";

    proxy_pass http://127.0.0.1:4000;
    proxy_buffering off;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    tcp_nodelay on;
  }

  error_page 500 501 502 503 504 /500.html;
}

Сохраните файл и перезапустите службу nginx:

sudo systemctl restart nginx

 

Теперь вы можете открыть свой браузер, ввести свой домен, и вам будет представлена ​​форма входа в Mastodon.

Просмотров: 63

Если статья понравилась, то поделитесь ей в социальных сетях:

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close