GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar Mastodon en CentOS 7

Mastodon es una red social gratuita de código abierto basada en un protocolo web abierto. Usó Ruby on Rails para el back-end y React.js y Redux para el front-end. En este tutorial, le mostraremos cómo instalar Mastodon en un servidor CentOS 7.

1. Actualice su servidor CentOS 7 e instale los paquetes necesarios

Inicie sesión en su VPS a través de SSH como usuario sudo:

ssh userame@IP_Address

Una vez que haya iniciado sesión, emita los siguientes comandos para asegurarse de que todos los paquetes instalados estén actualizados:

sudo yum update

A continuación, instale los paquetes de requisitos previos necesarios para construir Mastodon con el siguiente comando:

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. Instale Node.js y Yarn

Instalaremos Node.js v8 LTS desde el repositorio de NodeSource, que depende de que el repositorio de EPEL esté habilitado.

Para habilitar el repositorio EPEL en su CentOS 7 VPS, emita el siguiente comando:

sudo yum install epel-release curl

Una vez que el repositorio EPEL esté habilitado, ejecute el siguiente comando para agregar el repositorio Node.js v8 LTS:

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

Una vez que el repositorio de NodeSource esté habilitado, instale Node.js con el siguiente comando:

sudo yum install nodejs

Habilite el repositorio de Yarn RPM con:

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

Instale la última versión de Yarn con:

sudo yum install yarn

3. Instalar PostgreSQL

Habilite el repositorio de 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

Para instalar el servidor PostgreSQL ejecute el siguiente comando:

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

Una vez completada la instalación, cree un nuevo clúster de base de datos con:

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

Inicie el servicio PostgreSQL y habilítelo para que se inicie en el arranque:

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

Inicie sesión en el shell de PostgreSQL:

sudo -u postgres psql

Cree un nuevo usuario para la instancia de Mastodon:

CREATE USER mastodon CREATEDB;

4. Instalar Redis

Instalar Redis es bastante sencillo, simplemente ejecute el siguiente comando:

sudo yum install redis

5. Crear un nuevo usuario del sistema

Para crear un nuevo usuario del sistema para Mastodon, ejecute el siguiente comando:

sudo adduser mastodon

6. Instalar Rubí

Instalaremos Ruby usando el script Rbenv.

Antes de clonar el repositorio rbenv cambie al nuevo usuario mastodon:

sudo su - mastodon

Configure rbenv y ruby-build con los siguientes comandos:

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

Una vez que tanto rbenv como ruby-build estén configurados, instale la última versión de Ruby con”

rbenv install 2.5.1
rbenv global 2.5.1

Para verificar que todo se haya hecho correctamente, use el comando ruby --version .

El resultado debe ser similar al siguiente:

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

7. Clone el repositorio git de Mastodon e instale las dependencias

Los siguientes comandos también se ejecutan como usuario mastodon.

Clone el repositorio git de mastodon en el ~/live directorio y salida a la última rama estable de 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)

Instale las dependencias de bundler y ruby ​​con los siguientes comandos:

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

Instale las dependencias de node.js con:

yarn install --pure-lockfile

8. Configurar mastodonte

Los siguientes comandos se ejecutan como usuario mastodon.

Cambie al directorio de instalación de Mastodon y ejecute el siguiente comando para iniciar la instalación:

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

El instalador le hará varias preguntas, generará un nuevo secreto de aplicación, configurará el esquema de la base de datos y compilará los recursos.

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

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 <[email protected]>
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: [email protected]
You can login with the password: 80b4aA233adaeS86d095Scbf79302f81
You can change your password once you login.

9. Crear unidades del sistema Mastodon

Los siguientes comandos se ejecutan como usuario root o sudo.

Abra su editor de texto y cree los siguientes archivos de unidad 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

Habilite e inicie todos los servicios:

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. Instalar y configurar Nginx

Para instalar Nginx, ejecute el siguiente comando:

sudo yum install nginx

Una vez que nginx esté instalado, cree un bloque de servidor para su dominio. No olvide establecer la ruta correcta al certificado SSL y la clave privada.

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

server {
  listen 80;
  listen [::]:80;
  server_name your-domain.com;
  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.com;

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

Guarde el archivo y reinicie el servicio nginx:

sudo systemctl restart nginx

Ahora puede abrir su navegador, escribir su dominio y se le presentará el formulario de inicio de sesión de Mastodon.

Por supuesto, no es necesario que instale Mastodon en CentOS 7 si utiliza uno de nuestros servicios de alojamiento gestionado, en cuyo caso simplemente puede solicitar a nuestros administradores expertos de Linux que instalen Mastodon por usted. Están disponibles las 24 horas del día, los 7 días de la semana y atenderán su solicitud de inmediato.

PD . Si le gustó esta publicación, en Cómo instalar Mastodon en CentOS 7 compártalo con sus amigos en las redes sociales utilizando los botones de la izquierda o simplemente deje una respuesta a continuación. Gracias.


Cent OS
  1. Cómo instalar PHP 7, 7.2 y 7.3 en CentOS 7

  2. Cómo instalar Java 11 y 12 en CentOS 7

  3. Cómo instalar Wine 4.0 en CentOS 7

  4. Cómo instalar Vim 8.2 en CentOS 7

  5. Cómo instalar VirtualBox en CentOS 7

Cómo instalar Ruby en CentOS 7

Cómo instalar PostgreSQL en CentOS 7

Cómo instalar Go en CentOS 7

Cómo instalar Python 3 en CentOS 7

Cómo instalar R en CentOS 7

Cómo instalar R en CentOS 8