Далее написано как установить ЧХГ на свой сервер с Ubuntu 12.04. Разумеется, установка возможна на любой современный Linux, а также на Windows и OS X, но процесс установки будет так или иначе отличаться. Версия Python должна быть 2.6 или 2.7.
Важно, чтобы системная кодировка была UTF-8. Этого можно добиться, например, следующим образом:
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8
Чтобы изменения вступили в силу, потребуется перезайти.
Начнём с установки нужных пакетов. Часть нужных пакетов берётся из PPA ubuntugis. Для Ubuntu версий до 13.10 потребуется выполнить
sudo apt-get install python-software-properties
sudo apt-add-repository ppa:ubuntugis/ppa
sudo apt-get update
Для 13.10:
sudo apt-get install python-software-properties
sudo apt-add-repository ppa:ubuntugis/ubuntugis-unstable
sudo apt-get update
Для 14.04 не требуется подключения PPA.
Далее (для 14.04 замените 9.1
на 9.3
):
sudo apt-get install binutils build-essential gdal-bin gettext git libgeos-c1 libproj-dev libyaml-dev nginx postgis postgresql-9.1 postgresql-9.1-postgis* postgresql-server-dev-9.1 python-dev python-pip python-virtualenv redis-server uwsgi uwsgi-plugin-python virtualenvwrapper
После установки нужно перезайти в систему. А теперь скачаем ЧХГ:
git clone https://github.com/whitescape/chg.git
И установим необходимые питоновские пакеты:
mkvirtualenv chg
pip install -r chg/requirements.txt
Создадим файл chg/src/chg/settings/local.py
с таким содержимым:
from .base import *
COMPRESS_ENABLED = True
DEBUG = TEMPLATE_DEBUG = False
SOCIAL_AUTH_RAISE_EXCEPTIONS = False
ALLOWED_HOSTS = (
'.example.com',
)
SECRET_KEY = '^9%d=brsx-wcymgl3rdgo!jqp&qtf@j%m43vk0sf+0b=#s4#$q'
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': 'chg',
'USER': 'chg',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
UPLOADCARE = {
'pub_key': '',
'secret': '',
'widget_version': '0.18.0',
}
GOOGLE_API_KEY = ''
GOOGLE_ANALYTICS_KEY = ''
RECAPTCHA_PUBLIC_KEY = ''
RECAPTCHA_PRIVATE_KEY = ''
VK_APP_ID = ''
VK_API_SECRET = ''
FACEBOOK_APP_ID = FB_APP_ID = ''
FACEBOOK_API_SECRET = ''
TWITTER_CONSUMER_KEY = ''
TWITTER_CONSUMER_SECRET = ''
В ALLOWED_HOSTS
помещаем доменное имя сайта. SECRET_KEY
рекомендуется вписать другой (сгенерировать новый можно, например, тут). Остальные настройки:
UPLOADCARE
— ключи от UploadcareGOOGLE_API_KEY
— Google Maps JavaScript API v3GOOGLE_ANALYTICS_KEY
— Google AnalyticsRECAPTCHA_PUBLIC_KEY
,RECAPTCHA_PRIVATE_KEY
— reCAPTCHAVK_APP_ID
,VK_API_SECRET
— ВКонтактеFACEBOOK_APP_ID
,FACEBOOK_API_SECRET
— FacebookTWITTER_CONSUMER_KEY
,TWITTER_CONSUMER_SECRET
— Twitter
Теперь настроим PostgreSQL. Для начала отредактируем файл /etc/postgresql/9.1/main/pg_hba.conf
и в строке "local" is for Unix domain socket connections only
заменим peer
на md5
или trust
. Перезапустим сервер БД:
sudo service postgresql restart
Создадим базу данных:
sudo -u postgres createuser -SDRP chg
sudo -u postgres createdb -O chg chg
sudo -u postgres psql -c 'create extension postgis;' -d chg
sudo -u postgres psql -c 'create extension postgis_topology;' -d chg
Когда попросят ввести пароль, введите любой пароль. Потом снова откройте chg/src/chg/settings/local.py
и впишите этот пароль туда.
Пора создать таблицы в базе:
cd chg/src
./manage.py syncdb --all
./manage.py migrate --fake
В какой-то момент вас попросят создать пользователя-администратора сайта: не упустите эту возможность.
Если при выполнении manage.py
возникает ошибка ImportError: No module named django.core.management
, делаем workon chg
.
Теперь надо собрать CSS и прочие статические файлы:
./manage.py collectstatic
./manage.py compilemessages
Время настроить веб-сервер. Создадим файл для uWSGI:
sudo tee -a /etc/uwsgi/apps-available/chg.ini << EOL
[uwsgi]
chdir=$HOME/chg/src
module=wsgi:application
home=$HOME/.virtualenvs/chg
env="DJANGO_SETTINGS_MODULE=chg.settings"
plugins=python
touch-reload=$HOME/chg/reload
EOL
sudo ln -s /etc/uwsgi/apps-{available,enabled}/chg.ini
sudo service uwsgi restart
И для nginx:
sudo tee -a /etc/nginx/sites-available/chg.conf << EOL
server {
listen 80;
# server_name example.com;
location / {
uwsgi_pass unix:///run/uwsgi/app/chg/socket;
include uwsgi_params;
}
location /static {
alias $HOME/chg/src/static_serve;
}
}
EOL
sudo ln -s /etc/nginx/sites-{available,enabled}/chg.conf
sudo rm /etc/nginx/sites-enabled/default
sudo service nginx restart
Теперь сайт должен работать. Осталась ещё пара мелочей:
(crontab -l ; echo "*/20 * * * * $HOME/.virtualenvs/chg/bin/python $HOME/chg/src/manage.py update_index --remove > /dev/null") | crontab -
Основные настройки можно настроить в админ-панели. Она находится по адресу /admin/
Разделы, на которые нужно обратить внимание в первую очередь — это Настройки и Сайты. Там можно поменять название сайта, название города и сроки проведения этапов.
Ещё пара важных разделов — это Идеи горожан и Решения. Присланные пользователями идеи и решения появляются на сайте не сразу, а только после проверки модератором. Модератор пользуется именно этими разделами.
В этом файле можно менять большое количество различных настроек. За подробным списком доступных параметров следует обратиться к документации Django.
Все шаблоны находятся в директории src/templates
, их можно редакторовать.
Часть строк находится в файле src/locale/ru_RU/LC_MESSAGES/django.po
. После редактирования этого файла следует выполнить:
./manage.py compilemessages
sudo service uwsgi reload
После замены фотографий, которые лежат в src/static/img
, требуется сделать:
./manage.py collectstatic