💡 Введение
Solo — это небольшая и красивая система блогов с открытым исходным кодом, разработанная специально для программистов. Solo имеет очень активное сообщество (https://ld246.com), где вы можете публиковать свои статьи в виде сообщений и получать ответы от сообщества в виде комментариев к блогу (подробнее см. B3log Concept — Distributed Community Network (https://ld246.com/article/1546941897596)).
Это новый опыт работы в сообществе, который позволит вам больше не чувствовать себя одиноким!
Добро пожаловать в официальный дискуссионный форум Solo (https://ld246.com/tag/solo). Также приглашаем вас подписаться на официальный аккаунт B3log в WeChat: «B3log Open Source».
🗃 Примеры использования
✨ Функции
Возможности редактора:
На изображении start.png представлен стартовый экран редактора.
Изображение console.png показывает главную страницу администратора.
Рисунок post.png демонстрирует процесс редактирования статьи.
Рисунок skins.png представляет собой изображение окна выбора темы оформления.
Изображения pinghsu.png, Bubble.png, nijigen.png, timeline.png, Casper.png и Jane.png демонстрируют внешний вид сайта при использовании различных тем оформления.
В настоящее время доступны следующие темы оформления: Bubble, Casper, Pinghsu, Jane, nijigen, Medium, 9IPHP, Andrea, Bruce, Community, favourite, Finding, i-nove, metro-hot, NeoEase, next, owmx-3.0, timeline, tree-house, yilia.
Вы можете предложить свои варианты тем оформления на странице https://github.com/88250/solo/issues/2.
Solo может работать как динамический или статический блог:
Видеоинструкции по установке Solo:
Локальная работа используется для тестирования или создания статического сайта. Процесс создания статического сайта описан в статье https://ld246.com/article/1579053576274.
Скачайте последнюю версию Solo с сайта https://github.com/88250/solo/releases, распакуйте архив и перейдите в папку с программой. Запустите программу, выполнив команду:
Windows: java -cp "lib/*;." org.b3log.solo.Server
Unix-like: java -cp "lib/*:." org.b3log.solo.Server
.
Если у вас есть среда разработки Java, вы можете собрать и запустить программу из исходного кода (видеоинструкция доступна по ссылке https://www.bilibili.com/video/BV1jD4y1S7Ez).
Docker используется для запуска динамического блога на сервере.
Выполните команду:
docker pull b3log/solo
Обратите внимание: если вы не уверены, как использовать символ \
для переноса строки, не переносите строку, а напишите всю команду в одной строке.
Для работы с MySQL необходимо выполнить следующие шаги:
create database solo default character set utf8mb4 collate utf8mb4_general_ci;
create user 'root'@'127.0.0.1' identified by '123456';
grant all privileges on *.* to 'root'@'127.0.0.1';
flush privileges;
docker run --detach --name solo --network=host \
--env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="root" \
...
``` **JDBC_PASSWORD="123456"**
**--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver"**
**--env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true"**
b3log/solo --listen_port=8080 --server_scheme=http --server_host=localhost --server_port=
Для упрощения было использовано подключение к MySQL на хост-компьютере.
```shell
docker run --detach --name solo --volume ~/solo_h2/:/opt/solo/h2/ --publish 8080:8080
**--env RUNTIME_DB="H2"**
**--env JDBC_USERNAME="root"**
**--env JDBC_PASSWORD="123456"**
**--env JDBC_DRIVER="org.h2.Driver"**
**--env JDBC_URL="jdbc:h2:/opt/solo/h2/db;MODE=MYSQL"**
b3log/solo --listen_port=8080 --server_scheme=http --server_host=localhost --server_port=
--listen_port
— порт, который слушает процесс.--server_scheme
— конечный протокол доступа, если реверсивный сервис использует HTTPS, здесь также необходимо изменить на https
.--server_host
— конечное доменное имя или публичный IP, не включая порт.--server_port
— конечный порт доступа, можно оставить пустым, если используется браузер по умолчанию (80 или 443).Полное описание параметров запуска можно получить с помощью -h
.
По умолчанию через log4j2 журнал выводится в стандартный поток вывода, его можно просмотреть с помощью команды docker logs solo
. Если требуется переопределить конфигурацию log4j, это можно сделать путём монтирования файла:
--volume ~/log4j2.xml:/opt/solo/log4j2.xml
Если требуется использовать сторонние скины, можно смонтировать каталог skins, структура каталогов должна соответствовать оригинальному каталогу skins:
--volume ~/skins/:/opt/solo/skins/
Можно обратиться к скрипту перезапуска, написанному для crontab, чтобы ежедневно в полночь выполнять автоматическое обновление.
Пожалуйста, обратитесь к здесь, спасибо @liumapp за предоставление.
upstream backend {
server localhost:8080; # Solo слушает порт
}
server {
listen 80;
server_name 88250.b3log.org; # Домен блога
access_log off;
location / {
proxy_pass http://backend$request_uri;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 10m;
}
}
Обязательно настройте:
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
В противном случае при посещении страницы может появиться сообщение «Ошибка конфигурации Latke» или аномалия стиля; статистика онлайн-посетителей будет работать неправильно.
Solo использует лицензию Mulan PSL v2 с открытым исходным кодом.
Многопользовательский режим
Несколько пользователей могут одновременно использовать один блог для публикации статей. В основном это используется в сценариях командных блогов. С точки зрения разрешений была реализована простая изоляция: пользователи, не являющиеся администраторами, могут видеть списки блогов и комментариев других пользователей, но не могут выполнять операции.
RSS/Atom/Sitemap
Предоставляются два типа подписок: Atom 1.0 и RSS 2.0:
Не рекомендуется открывать их непосредственно в браузере, лучше просматривать через программу чтения. Кроме того, Solo также может генерировать sitemap.xml для всех статей.
Переключение тем оформления (скинов)
Выбор темы оформления осуществляется с помощью параметра URL (например, http://88250.b3log.org/?skin=Finding
).
Примеры использования:
/
) будет использоваться параметр skin=xxx
.skin=default
или скин не существует, то Cookie очищается.skin=default
на главной странице.Статьи, связанные с внешними сайтами
«Статьи, связанные с внешними сайтами» — это статьи, опубликованные другими пользователями с использованием Solo, которые имеют те же теги, что и ваши статьи. Эта функция в первую очередь предназначена для усиления взаимодействия между различными блогами Solo и предоставления посетителям блогов более эффективного доступа к соответствующему контенту.
Это часть реализации концепции B3log (https://ld246.com/b3log), и мы приглашаем всех принять активное участие в ней 🙏
FAQ
Почему необходимо «связывать» учётные записи с сообществами Pipe и Log?
Solo и Pipe позиционируются как узлы блогов в распределённом сообществе B3log, а не как независимые блоги, поэтому требуется единая система учётных записей, иначе возникнет множество проблем, и это результат исследований и экспериментов, подробности см. здесь (https://ld246.com/article/1576294445994).
До Solo v3 существовала отдельная система учётных данных, но после длительного тестирования она оказалась не идеальной:
Эти две проблемы противоречат друг другу, поэтому для их решения необходимо сделать учётные записи уникальными в сети B3log. Первоначальный план состоял в том, чтобы использовать пары открытого и закрытого ключей (аналогично принципу кошелька блокчейна), но этот план слишком сложен на данном этапе, и порог входа для пользователей немного высок, поэтому от него временно отказались. План с открытым и закрытым ключами был протестирован и проверен в проекте «Звезда», и технически проблем нет, возможно, он будет принят в будущем проекте «Рыба».
Поэтому ещё раз подчёркиваем, что Solo и Pipe являются узлами блогов в распределённой сети сообщества B3log. Проще говоря, это похоже на некоторые программы некоторых производителей, без учётной записи которых невозможно использовать продукт. Подключение к другим сетям на уровне блога или сообщества заключается в подключении других учётных записей в сети, в настоящее время уже подключена учётная запись GitHub в сообществе Chaindrop (можно связать в настройках учётной записи здесь), и Solo может синхронизировать статьи с собственным репозиторием через токен GitHub (https://ld246.com/article/1589995001682), избегая чрезмерной изоляции всей сети B3log.
Наконец, надеемся, что пользователи, присоединившиеся к B3log в настоящее время, согласятся с этим дизайном, и если они не согласны, то нет необходимости присоединяться, это сэкономит время и защитит B3log. Конечно, нельзя исключать возможность будущих изменений в дизайне, приветствуем участие в обсуждениях и размышлениях, спасибо.
Память сервера слишком мала?
Можно рассмотреть использование статического сайта Solo для написания контента и последующей публикации на GitHub Pages и других сервисах.
Если вы всё ещё хотите использовать динамический блог, вы можете использовать встроенную базу данных H2 вместо MySQL. Однако рекомендуется обновить память, а затем использовать Docker и MySQL для развёртывания, чтобы можно было плавно обновлять с помощью обновления образов и использовать инструменты MySQL для более удобного управления базой данных.
Как создать jar-файл для развёртывания?
Настройте maven-assembly-plugin
в файле pom.xml. Обратите внимание: jar не поддерживает:
Рекомендуется избегать создания jar для развёртывания и использовать Docker для развёртывания на сервере.
Получение ошибки при получении сертификата для хранения файлов в сообществе?
См. здесь для настройки (https://ld246.com/article/1550393688505).
Как включить пользовательские статические ресурсы, такие как .mp3?
Используйте NGINX для обратного прокси статических ресурсов.
Как получить лучший рендеринг Markdown?
По умолчанию Solo использует встроенный flexmark (https://github.com/vsch/flexmark-java) для рендеринга md, который может не подходить для некоторых сценариев. Если вам нужен лучший рендеринг md, см. здесь (https://ld246.com/article/1569240189601).
Онлайн-счётчик посещений всегда равен 1?
Счётчик онлайн-посещений основан на IP посетителя и обновляется каждые 10 минут. Если используется обратный прокси, добавьте заголовок адреса клиента в конфигурацию прокси. Например, NGINX необходимо добавить следующую конфигурацию:
proxy_set_header X-Real-IP $remote_addr;
Как вставить рекламные блоки?
Вы можете вставить HTML и код JavaScript в подпись или раздел объявлений.
Где разместить информацию о регистрации?
Добавьте HTML и JavaScript в нижний колонтитул конфигурации.
Как использовать CDN jsDelivr для ускорения?
Запустите с параметрами командной строки:
--static_server_scheme=https
--static_server_host=cdn.jsdelivr.net
--static_server_port=
--static_path=/gh/88250/solo/src/main/resources
Обратите внимание:
Будет ли Solo продолжать развиваться?
Solo был выпущен в 2010 году и постоянно обновляется.
Solo поддерживает плавное обновление с первого выпуска и поддерживает обновление версий с версии 3.0.0. Мы проделали большую работу в области обновления программ и миграции данных. Кроме того, Solo поддерживает экспорт данных в различных форматах, и все эти усилия направлены на то, чтобы избавить вас от беспокойства и сосредоточиться на творчестве и обмене.
Заключение
Если у вас возникнут проблемы при использовании Solo или у вас есть какие-либо требования, пожалуйста, оставьте комментарий, и мы ответим вам в ближайшее время; если вы заинтересованы в разработке Solo, обратитесь к статье «Разработка и реализация Solo» (https://ld246.com/article/1537690756242).
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.