Статьи

Пересмотр социальных сетей с открытым исходным кодом: установка GNU Social

Конечный продукт
Что вы будете создавать

В первой части этой серии, « Пересмотр альтернативных социальных сетей с открытым исходным кодом», я дал краткий обзор нескольких открытых социальных платформ и клиентов. В этой части я расскажу об установке GNU Social и расскажу о том, что, по моему мнению, будет иметь решающее значение для конкуренции в мире, где доминирует Facebook / Twitter.

Почему GNU Social? Я чувствовал, что это самая простая система для установки и использования. Он также написан на PHP, который я считаю самым доступным языком с открытым исходным кодом. Хотя он ограничен тем, чтобы казаться клоном Twitter, я думаю, что это помогло сохранить все его основные функции и веб-интерфейс пользователя относительно чистыми. Однако сайт GNU Social не работал в течение нескольких дней, пока я работал над этим учебником; состояние мира распределенных сетей с открытым исходным кодом иногда остается нестабильным.

Вы можете установить GNU Social на любую систему на основе LAMP. Я опубликовал мое общее руководство по установке стека Ubuntu LAMP для справки .

Войдите на свой сервер:

1
ssh root@yourserver.com

Установите все необходимые компоненты (Curl и Git также необходимы для этого урока):

1
2
3
4
5
6
sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales
sudo apt-get update -q
sudo apt-get dist-upgrade -y
sudo apt-get install -y pound varnish php5 rsync htop emacs23-nox apache2 php5-mysql dtrx mysql-server exim4
sudo apt-get install php5-curl git

Создайте каталог для сайта и установите разрешения:

1
mkdir /var/www/social -p chown www-data:www-data /var/www/social cd /var/www/social

Клонировать репозиторий:

1
git clone git://gitorious.org/social/mainline.git .

Войдите в MySQL с паролем вашей корневой базы данных:

1
mysql -u root -p

Создайте новую базу данных и установите разрешения:

1
2
3
4
create database social;
grant all privileges on social.* TO «root»@»localhost» identified by «-your-pwd-«;
flush privileges;
exit;

Создайте сайт Apache:

1
nano /etc/apache2/sites-available/social.conf

Вставьте конфигурацию Apache ниже с учетом вашего сервера:

01
02
03
04
05
06
07
08
09
10
<VirtualHost *:80>
 ServerName social.yourdomain.com
 DocumentRoot /var/www/social
 DirectoryIndex index.php
 <Directory /var/www/social/>
 AllowOverride All
 Order Deny,Allow
 Allow from all
 </Directory>
</VirtualHost>

Включите сайт, отключите сайт по умолчанию и перезапустите Apache:

1
2
3
sudo a2ensite social.conf
sudo a2dissite 000-default.conf
sudo service apache2 reload

Вам также необходимо настроить несколько каталогов для доступа на запись:

1
2
3
chmod a+w /var/www/social/avatar/
chmod a+w /var/www/social/background/
chmod a+w /var/www/social/file/

Чтобы активировать красивые строки URL, мы должны переместить пример файла .htaccess и включить mod_rewrite :

1
2
3
mv htaccess.sample .htaccess
sudo a2enmod rewrite
sudo service apache2 restart

Посетите страницу установки и введите свое имя и параметры конфигурации:

1
http://social.yourdomain.com/install.php

Вы должны увидеть что-то вроде этого:

Установить GnuSocial

И:

Настройки социальной установки Gnu продолжение

Процедура установки занимает до минуты, но вы должны увидеть что-то вроде этого, когда она будет завершена:

Установочный скрипт GnuSocial

Вот как выглядит домашняя страница по умолчанию:

Тема по умолчанию для GnuSocial

Давайте установим тему Neo Quitter с открытым исходным кодом, которая напоминает Twitter:

1
2
cd /var/www/social/theme
git clone https://github.com/hannesmannerheim/neo-quitter

Отредактируйте файл конфигурации и добавьте запись для темы Neo Quitter:

1
2
cd /var/www/social
sudo nano config.php

Это должно выглядеть так:

01
02
03
04
05
06
07
08
09
10
<?php
if (!defined(‘GNUSOCIAL’)) { exit(1);
$config[‘site’][‘name’] = ‘Social’;
$config[‘site’][‘server’] = ‘social.lookahead.io’;
$config[‘site’][‘path’] = false;
$config[‘site’][‘ssl’] = ‘never’;
$config[‘site’][‘fancy’] = true;
$config[‘db’][‘database’] = ‘mysqli://root:your-pwd@localhost/social’;
$config[‘db’][‘type’] = ‘mysql’;
$config[‘site’][‘profile’] = ‘public’;

Вставьте в эту строку:

1
$config[‘site’][‘theme’] = ‘neo-quitter’;

Вернитесь на домашнюю страницу, и она должна выглядеть примерно так:

Тема NeoQuitter

Пришло время зарегистрироваться на собственной социальной сети:

Регистрация с темой GnuSocial Neo-Quitter

Как только вы зарегистрируетесь, вы увидите эту полезную начальную страницу:

Страница приветствия в GnuSocial с темой Neo-Quitter

После загрузки моего аватара вот как выглядит обновление статуса с фотографией:

GnuSocial Posting

Я не совсем уверен, что делает нажатие на замок в открытом и закрытом положении, поскольку кажется, что конфиденциальность контролируется выпадающим списком.

Вот моя страница профиля с моим первым сообщением:

Страница профиля пользователя GnuSocial

Похоже на какой-нибудь общий сайт социальной сети, который вы знаете?

Относительная полировка и отделка GNU Social по сравнению с другими сетями, описанными в первой части, является причиной, по которой я решил сосредоточиться на ней для дальнейшего изучения.

Затем я хотел поэкспериментировать с федеративными сетевыми функциями GNU Social. Я перепрыгнул на Quitter.is , социальный сайт GNU, открытый для общественности, и последовал за именем пользователя первого человека, которого я там нашел.

На своем собственном сайте вы должны посетить страницу своего профиля, а затем нажать « Подписка + Удаленный» в правом столбце (это не совсем интуитивно понятно):

Remote Follow на странице профиля - GnuSocial

Чтобы следовать за удаленным пользователем, вы создаете адрес, объединяющий его имя удаленного пользователя с доменом удаленного сетевого сайта, например, username@quitter.is.

Форма удаленной подписки - GnuSocial

Хотя производительность относительно низкая (этот Quitter в Исландии), мы смогли обменяться @replies, и моя учетная запись GNU Social появилась в списке подписчиков Quitter.is. Когда я вошел в систему на следующий день, их обновления появились в моей установке GNU Social:

Мой общедоступный график с удаленными обновлениями GnuSocial

Вот как это выглядело несколько часов спустя, после того, как последовало еще несколько отдаленных людей:

Гну Социальная Интегрированная Хронология Позже

Вот некоторые из качеств, которые, на мой взгляд, важны для системы социальных сетей с открытым исходным кодом, чтобы получить поддержку и усыновление:

  • Простая установка для неопытных разработчиков. Например, любой человек с PHP и базовыми знаниями Linux должен легко установить. Это должно приблизить простоту установки собственного WordPress.
  • Одиночные и многопользовательские опции. В идеале платформа должна поддерживать запуск социальной установки только для одного пользователя (установщика) или в виде сети, которая поддерживает сообщество из множества пользователей.
  • Платный хостинг, позволяющий заинтересованным нетехническим пользователям участвовать. Например, мне нравится, как платформа блогов Ghost предлагает платную опцию SaaS.
  • Элегантный пользовательский интерфейс публикации (текст, фотографии, в конечном итоге видео) и поддержка поиска мета-тегов из URL-адресов. Это одна из наиболее важных и игнорируемых функций в современных предложениях с открытым исходным кодом.
  • Простой опыт конечного пользователя. Интерфейс должен быть таким же простым в использовании, как Facebook и Twitter.
  • Хорошая производительность. Обычные операции, такие как публикация, загрузка фотографий, просмотр, просмотр временной шкалы и получение обновлений временной шкалы, должны быть быстрыми.
  • Публикация в Twitter и Facebook. Платформа должна позволять пользователям отражать свои локальные сообщения в существующих сетях в автоматическом или полуавтоматическом режиме.
  • Поддержка Theming. Пользователи должны иметь возможность персонализировать внешний вид своей сети.
  • Стратегия резервного копирования. Платформа должна включать встроенную функцию резервного копирования, в идеале с некоторыми облачными опциями, такими как S3.
  • Интеграция аналитики. Пользователям должно быть легко получить данные об активности их каналов.
  • Архитектура твердого кода, например архитектура MVC и / или использование общей платформы.
  • Отличная документация по кодовой базе.
  • Полуавтоматические обновления. Важно упростить цикл обновления, чтобы люди постоянно обновляли кодовую базу в сети.

Кроме того, многие аспекты того, что делает Facebook и Twitter успешными и доминирующими, для нас тонки или невидимы. Например, вот несколько важных:

  • Высокая производительность по сети
  • Высокая пропускная способность для загрузки изображений (и, возможно, видео)
  • Отказоустойчивость к использованию
  • Никогда не теряя данных

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

Для ускорения внедрения для этих сетей также может быть важно импортировать каналы из Twitter (и, возможно, Facebook). Например, если вы переключаетесь с Твиттера на свою социальную сеть, вы можете быть первой из вашей группы друзей. Вы, вероятно, захотите продолжать получать обновления и уведомления, получать последующие запросы и отражать ответы из старой сети на своем сайте — без необходимости возвращаться в Twitter.

Текущая технология Twitter API (User Streams) поддерживает это как техническую возможность для отдельных пользователей, но требует их разрешения для поддержки группы пользователей (Site Streams). См. Построение с помощью API Twitter (Tuts +) . Я полагаю, что вряд ли Twitter предоставит разрешение Site Stream для такой совместимости.

GNU Social хорошо работает, но оставляет значительные возможности для совершенствования. Это делает хорошую работу, сохраняя набор функций узким и хорошо реализуя основы.

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

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

Хотя база кода чистая, она явно не использует стандартную среду.

GNU Social может работать как для отдельных пользователей, так и для сообщества. Поддержка OStatus, кажется, работает хорошо. И есть поддержка тем.

Интерфейс публикации чистый, но не предлагает никаких поисков для URL. Кажется, что нет никакой поддержки мета-тегов, тегов Open Graph или карт Twitter.

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

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

У зеркалирования в Twitter и Facebook, резервного копирования и аналитики не так много зрелости, но это может прийти со временем.

GNU Social находится в месте, где энтузиасты PHP могут принять его, запустить свои собственные сайты и внести свой вклад в кодовую базу. Я также считаю, что команда разработчиков открытого кода, стоящая за GNU Social, могла бы добиться больших успехов, сохранив узкий набор функций и сосредоточившись на совершенствовании того, что у них есть. Создание очень надежной, хорошо спроектированной, хорошо документированной кодовой базы, которая может воссоздать Twitter федеративным способом, было бы значительным достижением, и они уже на этом пути.

Хотя GNU Social создан для поддержки OStatus, в W3C Social Web Working Group есть активная рабочая группа; вы можете следить за их работой в Твиттере @socialwebwg .

Пожалуйста, не стесняйтесь оставлять свои вопросы и комментарии ниже. Это широкая тематическая область, и я уверен, что я многое пропустил. Вы также можете связаться со мной в Twitter @reifman или написать мне напрямую. Следуйте за моей страницей инструктора Tuts +, чтобы видеть будущие статьи в этой серии.