Установка Diaspora на сервер CentOS 6 x86
Centos, Linux, VPS | Комментировать запись
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: CentOS, CentOS 6, Diaspora, EPEL, Linux, MySQL, NGINX, Redis, Ruby, RVM, SWAP, VPS