Security News
PyPI’s New Archival Feature Closes a Major Security Gap
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
Основной функционал для сайтов сети comunit
.
Нужно заменить config/locales/en.yml
на ru.yml
и добавить туда ключи
shared.meta_texts.site_name
и copyright
для вывода названия сайта
в метаданных и копирайта соответственно.
Также нужно добавить в локаль ключ index.index.title
с заголовком для главной
страницы.
.gitignore
Стоит убрать строки !log/.keep
и !tmp/.keep
, так как log
и tmp
создаются
на сервере как ссылки в любом случае.
/public/uploads
/public/ckeditor
/public/post_illustrations
/spec/examples.txt
/spec/support/uploads/*
.env
После установки (rails new .
) нужно добавить в yarn пакеты из компонентов.
yarn add jquery
yarn add @biovision/biovision
yarn add @biovision/posts
yarn add @biovision/comments
yarn add @biovision/votes
yarn add @biovision/comunit
Добавить в config/webpack/environment.js
со второй строки этот фрагмент:
const webpack = require('webpack')
environment.plugins.prepend('Provide',
new webpack.ProvidePlugin({
$: 'jquery/src/jquery',
jQuery: 'jquery/src/jquery'
})
)
Добавить в app/javascript/pack/application.js
эти строки:
require("jquery")
require("@biovision/biovision")
require("@biovision/posts")
require("@biovision/comments")
require("@biovision/votes")
require("@biovision/comunit")
Gemfile
gem 'autoprefixer-rails', group: :production
gem 'biovision-base', git: 'https://github.com/Biovision/biovision-base'
# gem 'biovision-base', path: '/Users/maxim/Projects/Biovision/gems/biovision-base'
gem 'biovision-post', git: 'https://github.com/Biovision/biovision-post'
# gem 'biovision-post', path: '/Users/maxim/Projects/Biovision/gems/biovision-post'
gem 'biovision-comment', git: 'https://github.com/Biovision/biovision-comment'
# gem 'biovision-comment', path: '/Users/maxim/Projects/Biovision/gems/biovision-comment'
gem 'biovision-vote', git: 'https://github.com/Biovision/biovision-vote'
# gem 'biovision-vote', path: '/Users/maxim/Projects/Biovision/gems/biovision-vote'
gem 'biovision-poll', git: 'https://github.com/Biovision/biovision-poll'
# gem 'biovision-poll', path: '/Users/maxim/Projects/Biovision/gems/biovision-poll'
gem 'comunit-base', git: 'https://github.com/Biovision/comunit-base'
# gem 'comunit-base', path: '/Users/maxim/Projects/Biovision/Comunit/comunit-base'
group :development, :test do
gem 'database_cleaner'
gem 'factory_bot_rails'
gem 'rspec-rails'
end
group :development do
gem 'mina'
end
.env
RAILS_MAX_THREADS=5
DATABASE_PASSWORD=
MAIL_PASSWORD=
SITE_ID=
DATABASE_PASSWORD
создаётся через random.org, MAIL_PASSWORD
— или через
интерфейс внешнего почтовика, или через тот же random.org.
SITE_ID
берётся из админки comunit.
app/assets/
Заменить app/assets/stylesheets/application.css
на application.scss
из
sample/app/assets/stylesheets/
.
Примеры для shared
и layout
можно найти там же (просто скопировать
поверх текущих файлов).
config/*.yml
Для начала нужно убедиться в правильности содержимого database.yml
host: localhost
в разделе production
ENV
в production.password
(DATABASE_PASSWORD
),
такой же, как в .env
В версии рельсов с 5.2
вместо secrets.yml
используется credentials.yml
.
Для работы с ним нужно запустить в консоли EDITOR=vim rails credentials:edit
.
В список необходимо добавить этот параметр:
signature_token: ...
Значение для signature_token
берётся из админки на центральном сайте.
Структура — <site_id>:<token>
.
config/application.rb
Чтобы была нормальная временная зона, нужно её задать в application.rb
в блоке конфигурации:
config.time_zone = 'Moscow'
config/puma.rb
Нужно закомментировать строку с портом (port ENV.fetch('PORT') { 3000 }
),
это 12 строка на момент написания инструкций.
Нужно поменять example.com
на актуальный домен.
if ENV['RAILS_ENV'] == 'production'
shared_path = '/var/www/example.com/shared'
logs_dir = "#{shared_path}/log"
state_path "#{shared_path}/tmp/puma/state"
bind "unix://#{shared_path}/tmp/puma.sock"
stdout_redirect "#{logs_dir}/stdout.log", "#{logs_dir}/stderr.log", true
activate_control_app
end
spec/rails_helper.rb
($ rails generate rspec:install
)Раскомментировать строку 23 (включение содержимого spec/support)
RSpec.configure do |config|
config.include FactoryBot::Syntax::Methods
end
spec/spec_helper.rb
RSpec.configure do |config|
config.after(:all) do
if Rails.env.test?
FileUtils.rm_rf(Dir["#{Rails.root}/spec/support/uploads"])
end
end
end
config/environments/production.rb
Нужно раскомментировать строку config.require_master_key = true
(19 на момент
написания).
Нужно заменить уровень журналирования ошибок с :debug
на :warn
. Это в районе
51 строки (config.log_level
).
Для настройки почты нужно поменять example.com
на актуальный домен ниже.
Вариант для mail.ru
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.mail.ru',
port: 465,
tls: true,
domain: 'example.com',
user_name: 'webmaster@example.com',
password: ENV['MAIL_PASSWORD'],
authentication: :login,
enable_starttls_auto: true
}
config.action_mailer.default_options = {
from: 'example.com <webmaster@example.com>',
reply_to: 'support@example.com'
}
config.action_mailer.default_url_options = { host: 'example.com' }
config/environments/test.rb
Нужно поменять example.com
на актуальный домен
config.action_mailer.default_options = {
from: 'example.com <webmaster@example.com>',
reply_to: 'support@example.com'
}
config.action_mailer.default_url_options = { host: '0.0.0.0:3000' }
config/environments/development.rb
Нужно поменять example.com
на актуальный домен
config.action_mailer.delivery_method = :test
config.action_mailer.default_options = {
from: 'example.com <webmaster@example.com>',
reply_to: 'support@example.com'
}
config.action_mailer.default_url_options = { host: '0.0.0.0:3000' }
bundle binstubs bundler --force
bundle binstub puma
rails db:create
rails railties:install:migrations
rails db:migrate
mina init
После этого нужно отредактировать config/deploy.rb
.
# В самом начале, 3 строка
require 'mina/rbenv'
#...
set :shared_dirs, fetch(:shared_dirs, []).push('log', 'tmp', 'public/uploads', 'public/ckeditor', 'public/post_illustrations')
set :shared_files, fetch(:shared_files, []).push('.env', 'config/master.key')
# В том месте, где task :environment, сразу после
task :remote_environment do
invoke :'rbenv:load'
end
На сервере в рабочей папке (var/www/example.com
):
mkdir -p shared/tmp/puma
mkdir -p shared/tmp/pids
mkdir -p shared/tmp/import
mkdir -p shared/public/uploads/region
mkdir -p shared/config
cd shared/public
ln -s /var/www/shared/post_illustrations
cd uploads/region
ln -s /var/www/shared/uploads/region/image
После этого локально можно запустить mina setup
и настроить остальное
на стороне сервера.
Для начала нужно создать базу данных. Это делается руками через Postgres.
Через random.org (https://www.random.org/passwords/) сгенерировать один пароль длиной около 12 символов.
Этот пароль нужно прописать в файле .env
в отвечающем за БД параметре
(его можно посмотреть в config/database.yml в разделе production, он называется
или DATABASE_PASSWORD
, или с приставкой в начале).
В общем случае там должно быть примерно это:
RAILS_MAX_THREADS=5
DATABASE_PASSWORD=<сюда вписать пароль>
MAIL_PASSWORD=<сюда вписать пароль>
Далее манипуляции с базой данных.
sudo su postgres
Дальше нужно создать пользователя и БД для проекта. Данные берутся
из config/database.yml
из раздела production (пароль был сгенерирован
и скопирован в .env
, его стоит взять оттуда). Для примера указан пользователь
example и база тоже example
createuser -d -P example
Далее заходим под этим пользователем в постгрес:
psql -h localhost -U example postgres
создаем базу с правильными параметрами (внимательно с кавычками):
create database example template template0 encoding='UTF8' LC_COLLATE='ru_RU.UTF-8' LC_CTYPE='ru_RU.UTF-8';
Выходим из базы (^D
). Возвращаемся в предыдущего пользователя (^D
).
В папке проекта разместить файл конфигурации nginx host.conf
Далее:
cd /etc/nginx/sites-enabled
sudo ln -s /var/www/example.com/host.conf example.com
cd /etc/logrotate.d
Нужно скопировать ротацию логов любого соседнего проекта на новый и внести соответствующие правки:
cp example.org example.com
vim example.com
:%s/example\.org/example.com/g
:wq
Проверяем конфиг nginx:
sudo /etc/init.d/nginx configtest
Если есть ошибки, они дописываются в /var/log/nginx/error.log
Если всё хорошо, то:
sudo /etc/init.d/nginx reload
Дальше снова локально.
Нужно убедиться, что в репозитории всё актуально, и выполнить:
mina setup
mina deploy
Если всё прошло хорошо, то снова зайти по ssh как developer и запустить пуму.
Добавить параметры для запуска пумы при перезагрузке сервера
(sudo /etc/puma.conf
) по аналогии с тем, что там указано.
В папке tmp/import
:
ln -s /var/www/shared/import/regions
ln -s /var/www/shared/import/regions.yml
В папке проекта (current
):
bin/rails regions:import
В консоли comunit.online
.
site = Site.find(site_id)
Site.where(active: true).each { |s| NetworkManager.new(s).push_site(site) }
m = NetworkManager.new(site)
Site.order('id asc').each { |s| m.push_site(s) }
h = NetworkManager::RegionHandler.new(site)
Region.order('id asc').each { |r| print "\r#{r.id} "; h.create_remote(r) }; puts
h = NetworkManager::UserHandler.new(site)
User.order('id asc').each { |u| puts "#{u.id} #{u.slug}"; h.create_remote(u) }
The gem is available as open source under the terms of the MIT License.
FAQs
Unknown package
We found that comunit-base demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
Research
Security News
Malicious npm package postcss-optimizer delivers BeaverTail malware, targeting developer systems; similarities to past campaigns suggest a North Korean connection.
Security News
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.