Установка Diaspora на сервер CentOS 6 x86

Diaspora – это распределённая социальная сеть с открытым исходным кодом. Вместо одной компании, которая контролирует и владеет пользовательским контентом, так называемые «поды» Diaspora могут размещаться кем угодно. Поды обычно настроены таким образом, чтобы пользователь мог взаимодействовать с другими публичными подами.

1. Настройка операционной системы

Добавление Swapпространства

Если в данный момент используется VPS с оперативной памятью менее 2GB, нужно активировать swap. Если этого не сделать, то некоторые основные шаги установки могут потерпеть неудачу.

Данное руководство предоставляет инструкции по активации swap на CentOS 6. Для меньшего VPS нужно добавить, по крайней мере, 1GB swap-пространства.

Создание нового пользователя (клиента)

Большинство действий нужно выполнять с помощью пользователя, имеющего доступ sudo. Данное руководство поможет создать учетную запись нового пользователя и передать ему sudo-привилегии.

Создание репозитория EPEL

EPEL расшифровывается как Extra Packages for Enterprise Linux и содержит некоторые пакеты, которые могут понадобиться и которых нет в основном репозитории CentOS.

Войдите в систему как клиент и запустите:

sudo su -c 'rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm'

Установка необходимых пакетов

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

sudo yum install tar make automake gcc gcc-c++ git net-tools libcurl-devel libxml2-devel libffi-devel libxslt-devel tcl ImageMagick npm mysql-server mysql-devel nginx libyaml libyaml-devel patch readline-devel libtool bison

Установка Redis

Redis – это хранилище данных с открытым исходным кодом, необходимое для работы Diaspora. Установите и сконфигурируйте его:

sudo yum install redis.x86_64
sudo chkconfig --add redis
sudo chkconfig --level 345 redis on
sudo /etc/init.d/redis start

Создание пользователя Diaspora

Теперь нужно создать учетную запись пользователя для запуска Diaspora. Для этой записи можно установить любое имя, но в данном руководстве используется имя diaspora.

sudo useradd diaspora

2. Запуск и конфигурирование MySQL

Следующий шаг – конфигурирование MySQL для Diaspora.

Запуск MySQL

Если MySQL уже  установлен, но еще не был запущен, используйте следующее:

sudo /etc/init.d/mysqld start

Создание базы данных Diaspora и пользователя MySQL

Для начала откройте MySQL как root.

sudo mysql

Теперь создайте пользователя diaspora и базу данных, которую он будет использовать.

CREATE USER 'diaspora'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE diaspora_production;

Теперь откройте новому пользователю доступ к этой базе данных:

GRANT ALL PRIVILEGES ON diaspora_production.* TO 'diaspora'@'localhost';
FLUSH PRIVILEGES;

Чтобы покинуть MySQL, введите exit.

Автоматизация запуска MySQL

Нужно сказать CentOS запускать MySQL daemon после перезагрузки сервера.

sudo chkconfig --level 345 mysqld on

3. Установка и настройка Diaspora

Далее нужно использовать исходный код Diaspora и сконфигурировать его работу с VPS.  Эти команды должны выполняться созданным ранее пользователем Diaspora.

sudo su - diaspora

Установка привилегий на домашний каталог Diaspora

Чтобы обслуживать некоторые нужные Diaspora файлы, привилегии домашнего каталога сети нужно смягчить, позволяя доступ на чтение и запуск.

chmod ugo+rx ~diaspora

Установка rvm

Убедитесь, что вы вошли в сеть как пользователь Diaspora, и установите стабильную ветку rvm:

\curl -s -S -L https://get.rvm.io | bash -s stable

rvm добавит некоторые настройки среды входного сценария для пользователя diaspora; чтобы убедиться, что данные настройки появились, проще всего выйти и снова войти в сеть.

exit
sudo su - diaspora

Установка Ruby

Используйте rvm для установки нужной Diaspora версии Ruby. Новые версии Ruby могут не полностью поддерживаться.

rvm autolibs read-only
rvm install 1.9.3-p448

Извлечение исходного кода Diaspora

Теперь клонируйте  исходный код Diaspora.

git clone git://github.com/diaspora/diaspora.git

Войдите в папку diaspora, созданную git.

cd diaspora

Сразу после внесения изменений в каталог diaspora появится предупреждение:

********************************************************************************
* NOTICE                                                                       *
********************************************************************************
* RVM has encountered a new or modified .rvmrc file in the current directory,  *
* this is a shell script and therefore may contain any shell commands.         *
*                                                                              *
* Examine the contents of this file carefully to be sure the contents are      *
* safe before trusting it!                                                     *
* Do you wish to trust '/home/diaspora/diaspora/.rvmrc'?                       *
* Choose v[iew] below to view the contents                                     *
********************************************************************************
y[es], n[o], v[iew], c[ancel]>

Чтобы подтвердить, что .rvmrc можно доверять, нажмите y.

Настройка базы данных Diaspora

Скопируйте экземпляр конфигурационного файла базы данных в необходимую Diaspora локацию:

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

Измените настройки database.yml таким образом, чтобы они соответствовали ранее созданной базе данных.

emacs config/database.yml

Первые несколько строк показывают конфигурации MySQL. Замените имя пользователя и пароль учетной записью MySQL, созданной ранее при настройке базы данных MySQL. Данная часть вместе с паролем, установленным ранее, должна, в конечном итоге, выглядеть примерно так:

mysql: &mysql
adapter: mysql2
host: "localhost"
port: 3306
username: "diaspora"
password: "password"
charset: utf8
collation: utf8_bin

Конфигурирование Diaspora

Скопируйте экземпляр конфигурационного файла в нужную Diaspora локацию:

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

Откройте данный файл в текстовом редакторе, чтобы отредактировать некоторые значения.

emacs config/diaspora.yml

Нужно обновить несколько параметров:

  • Найдите строку, начинающуюся с url: и внесите в нее имя хоста сервера, а также раскомментируйте строку, убрав все символы #.
  • Несколькими строками ниже найдите строку #certificate_authorities: ‘/etc/pki/tls/certs/ca-bundle.crt’и уберите символ #, чтобы раскомментировать ее.
  • Несколькими строками ниже найдите строку, которая начинается require_ssl. Удалите # и задайте ей значение «false».

Установка необходимых Gem-ов и настройка базы данных

Ruby нужно извлечь и установить несколько gem-ов для Diaspora.

RAILS_ENV=production bundle install --without test development

Затем постройте схему базы данных.

RAILS_ENV=production bundle exec rake db:schema:load

В завершение предварительно скомпилируйте Diaspora.

RAILS_ENV=production bundle exec rake assets:precompile

4. Запуск Diaspora

Создайте init-скрипт, который поможет запустить Diaspora:

sudo emacs /etc/init.d/diaspora

Вставьте следующие строки:

#! /bin/sh
# chkconfig: - 86 30
# Author: FABIAN Tamas Laszlo <giganetom@gmail.com>
# Source: https://github.com/netom/diaspora-init/blob/master/init/diaspora
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Diaspora application server"
NAME=diaspora
DIASPORA_HOME="/home/diaspora/diaspora"
STARTSCRIPT="RAILS_ENV=production ./script/server"
LOGFILE=$DIASPORA_HOME/log/startscript.log
SCRIPTNAME=$0
USER=diaspora
STARTUP_TIMEOUT=100
check_unicorn() {
pgrep -f "unicorn_rails master"
}
check_sidekiq() {
pgrep -f "sidekiq 2"
}
do_start()
{
if ! touch $LOGFILE; then
echo "Could not touch logfile"
return 2
fi
if ! chown $USER $LOGFILE; then
echo "Could not chown logfile"
return 2
fi
if check_unicorn && check_sidekiq; then
echo "Diaspora is already running"
return 1
fi
if ! su -l $USER -c "cd $DIASPORA_HOME; $STARTSCRIPT >> $LOGFILE 2>&1 &"; then
echo "Could not run start script"
return 2
fi
[ "$VERBOSE" != no ] && echo "Waiting for Diaspora processes... "
c=0
while ! check_unicorn > /dev/null || ! check_sidekiq > /dev/null; do
if [ $c -gt $STARTUP_TIMEOUT ]; then
echo "Timeout waiting for Diaspora processes"
return 2
fi
c=`expr $c + 1`
sleep 1
[ "$VERBOSE" != no ] && echo -n "."
done
[ "$VERBOSE" != no ] && echo 0
}
do_stop()
{
for i in `check_unicorn`; do
[ "$VERBOSE" != no ] && echo "Killing unicorn master with PID $i"
kill -TERM $i
[ "$VERBOSE" != no ] && echo $?
done
for i in `check_sidekiq`; do
[ "$VERBOSE" != no ] && echo "Killing sidekiq with PID $i"
kill -TERM $i
[ "$VERBOSE" != no ] && echo $?
done
return 0
}
case "$1" in
start)
[ "$VERBOSE" != no ] && echo "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && echo 0 ;;
*) [ "$VERBOSE" != no ] && echo 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && echo "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && echo 0 ;;
2) [ "$VERBOSE" != no ] && echo 1 ;;
esac
;;
status)
echo 'Checking for running Diaspora processes'
unicorn_running=false
for i in `check_unicorn`; do
echo "Found unicorn master qith PID $i"
unicorn_running=true
done
sidekiq_running=false
for i in `check_sidekiq`; do
echo "Found sidekiq with PID $i"
sidekiq_running=true
done
if $unicorn_running && $sidekiq_running; then
echo "Diaspora health is OK"
echo 0
else
if $unicorn_running; then
echo "Unicorn is RUNNING, but sidekiq is DOWN!"
echo 1
return 1
fi
if $sidekiq_running; then
echo "Sidekiq is RUNNING, but unicorn is DOWN!"
echo 1
return 1
fi
echo "All Diaspora processes are DOWN"
echo 0
fi
;;
restart|force-reload)
[ "$VERBOSE" != no ] && echo "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) [ "$VERBOSE" != no ] && echo 0 ;;
1) [ "$VERBOSE" != no ] && echo "old process is still running" && echo 1 ;;
*) [ "$VERBOSE" != no ] && echo "failed to start" && echo 1 ;;
esac
;;
*)
[ "$VERBOSE" != no ] && echo "failed to stop"
[ "$VERBOSE" != no ] && echo 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
exit 3
;;
esac
:

Также нужно предоставить ему право на запуск:

sudo chmod u+x /etc/init.d/diaspora

Теперь скажите CentOS запускать его вместе с загрузкой и запустите его на сервере.

sudo chkconfig --add diaspora
sudo chkconfig --level 345 diaspora on
sudo /etc/init.d/diaspora start

Это действие запустит сервер Diaspora, прослушивающий IP данного VPS на порту 3000 и оставит его работать в фоновом режиме.

5. Настройка nginx

Nginx перенаправит прокси-соединения с веб-сервера на сервер Diaspora.

Подстройка основных конфигураций nginx

sudo emacs /etc/nginx/nginx.conf

Под сессией http внесите строку:

server_names_hash_bucket_size       128;

Создание конфигураций Diaspora nginx

Теперь откройте новый файл, чтобы создать конфигурации  nginx для Diaspora.

sudo emacs /etc/nginx/conf.d/diaspora.conf

Внесите в него следующие строки. Не забудьте указать путь к имени хоста вместо server_name.

upstream diaspora {
server          localhost:3000;
}
server {
server_name YOURSERVER.COM;
listen 80;
gzip on;
gzip_min_length 1000;
gzip_types application/json text/css application/x-javascript;
root /home/diaspora/diaspora/public;
try_files $uri @diaspora;
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;
}
}

Перезапуск nginx

Теперь, когда конфигурационный файл был создан, перезагрузите Nginx, чтобы изменения вступили в силу.

sudo /etc/init.d/nginx stop
sudo /etc/init.d/nginx start

Команда stop может не сработать в случае если ngnix в данный момент не запущен, но команда start должна запуститься в любом случае.

Установка запуска nginx при перезагрузке

Скажите CentOS запускать демон nginx автоматически после каждой перезагрузки VPS.

sudo chkconfig --level 345 nginx on

6. Использование Diaspora

Теперь, когда nginx и Diaspora запущены и работают, можно перейти к Diaspora и начать использовать ее. Получить доступ к ней можно, перейдя к имени хоста с помощью веб-браузера. Появится начальная страница Diaspora, где можно создать свою ​​первую локальную учетную запись Diaspora.

Tags: , , , , , , , , , , ,

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