Установка утилиты для управления запуском и остановом фоновых сервисов:
sudo apt-get install sysvutils
Установка языка программирования Python:
sudo apt-get install python2.6 python-setuptools
Установка фреймворка Django и библиотеки TreeBeard (последние версии с официальных сайтов):
sudo easy_install django django-treebeard
Установка библиотеки MySQLdb для подключения к СУБД MySQL из языка Python:
sudo apt-get install python-mysqldb
Установка библиотеки flup реализующей протокол FastCGI для Django:
sudo apt-get install python-flup
Установка библиотеки pylzma для работы с архивми
sudo apt-get install python-lzma
Установка СУБД MySQL:
sudo apt-get install mysql-common mysql-client mysql-server
sudo service mysql start
Установка веб-сервера nginx:
sudo apt-get install nginx
Настройка установленного ПО
Описывается только настройка того ПО для которого она требуется. Нам потребуется настроить MySQL и nginx.
Настройка MySQL
Для настройки MySQL необходимо открыть в любом текстовом редакторе файл /etc/mysq/my.cnf и в блок [mysqld] добавить следующие опции:
default-storage-engine=InnoDB
bind-address=127.0.0.1
Данные настройки включают использование в MySQL хранилища InnoDB по умолчанию, как наиболее надежного и возможность подключаться к серверу БД только с локальной машины для большей безопасности (напрямую с сервером БД будет работать только АСИОУ).
Теперь необходимо изменить пароль для привилегированного пользователя root и создать нового пользователя для подключения к СУБД MySQL и собственно саму базу данных. Делается это следующими командами (NEWPASSWORD — это ваш новый пароль для суперпользователя СУБД root, запишите его!!!):
mysqladmin -u root password NEWPASSWORD
mysql -u root -p
Password:
mysql> CREATE USER 'asiou'@'localhost' IDENTIFIED BY 'PASSWORD';
mysql> GRANT ALL PRIVILEGES ON asiou.* TO 'asiou'@'localhost';
mysql> CREATE DATABASE IF NOT EXISTS asiou CHARACTER SET utf8;
PASSWORD — это ваш пароль для пользователя MySQL asiou, запомните или запишите его, он будет использоваться при установке АСИОУ!
Настройка nginx
В каталоге /etc/nginx создайте файл fastcgi_params_django содержания представленного на рисунке ниже
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param SERVER_PROTOCOL $server_protocol;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
В каталоге /etc/nginx/sites-available создайте файл asiou содержания указанного на рисунке ниже:
# Виртуальный хост для АСИОУ
server {
listen 80;
server_name asiou.local;
location / {
fastcgi_pass unix:/var/tmp/django-fcgi-asiou.sock;
include fastcgi_params_django;
}
location /static {
root /home/asiou/www;
}
location /media {
alias /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media;
}
}
Опция server_name может содержать список доменных имен или IP адресов разделенных пробелом. Если в вашей сети используется система DNS, то вы можете указать здесь доменное имя, если нет, то необходимо указать IP адрес сервера в локальной сети.
АСИОУ будет доступно либо по адресу
http://<ваше_доменное_имя>, либо по
http://<IP_адрес_сервера>
После этого необходимо выполнить следующие команды для применения конфигурации и запуска nginx:
sudo ln -s /etc/nginx/sites-available/asiou asiou
sudo service nginx start
Настройка и запуск программного комплекса АСИОУ 7.0
Создадим пользователя asiou в системе и зададим ему пароль. Это пользователь от имени которого будет работать программный комплекс АСИОУ 7.0.
sudo useradd -d /home/asiou -m asiou
sudo passwd asiou
Введите новый пароль UNIX:
Повторите ввод нового пароля UNIX:
passwd: пароль успешно обновлён
sudo mkdir /home/asiou/logs
sudo mkdir /home/asiou/www
sudo chown asiou:asiou /home/asiou/logs /home/asiou/www
sudo usermod -G asiou www-data
Для работы АСИОУ 7.0, требуется запуск FastCGI сервера через библиотеку flup, которую мы устанавливали ранее. Протокол FastCGI является связующим звеном между программным комплексом АСИОУ 7.0 и веб-сервером nginx.
Для запуска сервера нам потребуется специально оформленный bash-скрипт. Содержимое необходимо сохранить в файл /usr/local/sbin/django_fcgi
#!/bin/bash
##################################################
# Script for automate runnong FastCGI servers
# for any Django project.
# Author: Sergey V. Sokolov <sokol@zavolga.net>
# Config: /etc/djfcgi.conf
##################################################
# Vars
CONFIG="/etc/djfcgi.conf"
# Check config
if [ ! -f "$CONFIG" ]; then
echo "Cconfig file '$CONFIG' not found!"
exit 1
fi
# Include config
. $CONFIG
if [ "$PROJECTS" = "" ]; then
echo "No configured projects!"
exit 1
fi
# For all projects
for proj in $PROJECTS; do
if [ "$2" != "" -a "$2" != "$proj" ]; then
continue;
fi
path=$(eval "echo \$${proj}_path");
user=$(eval "echo \$${proj}_user");
if [ "$path" = "" ]; then
echo "Empty path for project '$proj'!"
exit 1
fi
if [ ! -d "$path" ]; then
echo "Not directory '$path'!"
exit 1
fi
if [ ! -f "$path/manage.py" ]; then
echo "It not Django project '$path'!"
exit 1
fi
# Set variables
pid="$PID_DIR/$proj.pid"
socket="$SOCKET_DIR/django-fcgi-$proj.sock"
maxrequests=$(eval "echo \$${proj}_maxrequests");
maxrequests=${maxrequests:-$D_MAX_REQUESTS}
minspare=$(eval "echo \$${proj}_minspare");
minspare=${minspare:-$D_MIN_SPARE}
maxspare=$(eval "echo \$${proj}_maxspare");
maxspare=${maxspare:-$D_MAX_SPARE}
maxchildren=$(eval "echo \$${proj}_maxchildren");
maxchildren=${maxchildren:-$D_MAX_CHILD}
debug=$(eval "echo \$${proj}_debug");
debug=${debug:-$D_DEBUG}
outlog=$(eval "echo \$${proj}_outlog");
outlog=${outlog}
errlog=$(eval "echo \$${proj}_errlog");
errlog=${errlog}
# Start or stop
if [ "$1" = "start" ]; then
echo -n "Start FastCGI server for '$proj': "
# Generate command
CMD="$PYTHON $path/manage.py runfcgi workdir='$path' socket='$socket' pidfile='$pid' debug=$debug"
CMD="$CMD maxrequests=$maxrequests minspare=$minspare maxspare=$maxspare maxchildren=$maxchildren"
if [ "$outlog" != "" ]; then
CMD="$CMD outlog='$outlog'"
fi
if [ "$errlog" != "" ]; then
CMD="$CMD errlog='$errlog'"
fi
# Run
su --command="$CMD" "$user"
if [ "$?" = "0" ]; then
sleep 1
chmod 666 $socket
echo "OK"
else
echo "FAIL"
fi
elif [ "$1" = "stop" ]; then
echo -n "Stop FastCGI server for '$proj': "
if [ -f "$pid" ]; then
kill `cat $pid`
sleep 3
if [ "$?" = "0" ]; then
rm $socket >/dev/null 2>&1
rm $pid >/dev/null 2>&1
echo "OK"
else
echo "FAIL"
fi
else
echo "NOT RUNNING"
fi
else
echo "Usage: $0 (start|stop) [<project>]"
exit 1
fi
done
exit 0
Далее необходимо создать служебный каталог и назначить для него права на запись
sudo mkdir /var/run/django-fcgi
sudo chmod 777 /var/run/django-fcgi
Для работы скрипта описанного выше необходимо создать конфигурационный файл /etc/djfcgi.conf содержания указанного на рисунке ниже:
# Config file for django FastCGI server
# Common vars
PYTHON="python"
PID_DIR="/var/run/django-fcgi"
SOCKET_DIR="/var/tmp"
# Default values
D_MAX_REQUESTS=0
D_MIN_SPARE=3
D_MAX_SPARE=5
D_MAX_CHILD=10
D_DEBUG=false
# Project names
PROJECTS="asiou"
# Project asiou
asiou_path="/home/asiou/www/asiou"
asiou_user="asiou"
asiou_maxchildren=25
asiou_debug=true
asiou_outlog="/home/asiou/logs/asiou.outlog.log"
asiou_errlog="/home/asiou/logs/asiou.errlog.log"
Распаковка архива с программным комплексом АСИОУ 7.0.
Архив asiou-7.0.tar.gz необходимо распаковать в каталог /home/asiou/www следующей командой (предполагается что архив находится в текущем каталоге):
sudo tar zxvf asiou-7.0.tar.gz -C /home/asiou/www
sudo chown -R asiou:asiou /home/asiou/www
Следует обратить внимание, что на данном этапе потребуется пароль пользователя MySQL asiou, который был указан на предыдущих этапах.
Зайдем в терминал и выполним команду sudo gedit /home/asiou/www/asiou/db.ini
Откроется файл и правим в нем файл:
[database]
DATABASE_ENGINE: django.db.backends.mysql
DATABASE_HOST: localhost
DATABASE_NAME: asiou
DATABASE_USER: asiou
DATABASE_PASSWORD: asiou
DATABASE_PORT:
Далее необходимо инициализировать базу данных и заполнить ее начальными значениями, для этого необходимо выполнить следующие команды:
cd /home/asiou/www/sql/properties
mysql -u asiou -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5987
Server version: 5.1.41-3ubuntu12.10 (Ubuntu)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>use asiou;
mysql>set names utf8;
mysql>\. dump.sql
mysql>\. ../institute.sql
mysql>\. ../kladr.sql
mysql>exit
Bye
Далее: в окне терминала набрать sudo gedit /etc/hosts
и добавить туда
127.0.0.1 asiou.local
После этого можно запустить ПО АСИОУ 7.0, создать административного пользователя АСИОУ и выполнить первый вход в систему. Для этого выполним команду запуска сервера АСИОУ:
sudo django_fcgi start asiou
Start FastCGI server for 'asiou': OK