Установка «Курсора» на сервер ручная

Для тех, кто не ищет простых путей и любит во всё вникать.

После того, как Вы оплатили приобретение «Курсора», получили письмо со ссылкой на дистрибутив и скачали его, нужно выполнить ряд несложных действий для установки системы на сервер. Установка может быть произведена двумя способами - полуавтоматический (при помощи инсталлятора), описанный на предыдущей странице, а также ручной, описанный на данной странице. Первый способ рекомендуется для большинства клиентов, второй - подходит для тех, кто знает что делает. Итак, если Вы выбрали второй способ ...

Создание базы данных

В корне архива «Курсора» присутствуют две папки - «Db» и «Files». Что делать со второй папкой (файлами) описано чуть ниже, а пока поговорим о первой папке. В ней находится стандартный SQL-дамп базы данных «Курсора» (файл cursor.sql), который нужно импортировать в созданную в СУБД MySQL базу данных. Импорт может осуществляться любым штатным средством СУБД (MySQL Workbench, phpMyAdmin и т.д.). После импорта необходимо создать пользователя базы данных с полными правами на её использование. При выполнении данной процедуры запишите следующие данные, которые Вам понадобятся на следующем шаге: название хоста СУБД; название БД; имя пользователя БД; пароль пользователя БД.

Настройка HTTP-сервера (при хостинге - пропустить)

Если у Вас Apache:

Добавьте следующее в httpd.conf или в конфигурационный файл виртуального хоста. Не забудьте заменить path/to/cursor/www на корректный путь к cursor/www.

# Устанавливаем корневой директорией "cursor/www"
DocumentRoot "path/to/cursor/www"

<Directory "path/to/cursor/www">
	RewriteEngine on

	# Если запрашиваемая в URL директория или файл существуют обращаемся к ним напрямую
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	# Если нет - перенаправляем запрос на index.php
	RewriteRule . index.php

	# ...прочие настройки...
</Directory>

Если у Вас Nginx:

PHP должен быть установлен как FPM SAPI для Nginx. Используйте следующие параметры Nginx и не забудьте заменить path/to/cursor/www на корректный путь к cursor/www и cursor на ваше имя хоста.

server {
	charset utf-8;
	client_max_body_size 128M;

	listen 80; ## listen for ipv4
	#listen [::]:80 default_server ipv6only=on; ## слушаем ipv6

	server_name cursor;
	root        /path/to/cursor/www;
	index       index.php;

	access_log  /path/to/project/log/access.log;
	error_log   /path/to/project/log/error.log;

	location / {
		# Перенаправляем все запросы к несуществующим директориям и файлам на index.php
		try_files $uri $uri/ /index.php?$args;
	}

	# раскомментируйте строки ниже во избежание обработки Yii обращений к несуществующим статическим файлам
	#location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
	#    try_files $uri =404;
	#}
	#error_page 404 /404.html;

	location ~ \.php$ {
		include fastcgi.conf;
		fastcgi_pass   127.0.0.1:9000;
		#fastcgi_pass unix:/var/run/php5-fpm.sock;
	}

	location ~ /\.(ht|svn|git) {
		deny all;
	}
}

Используя данную конфигурацию установите cgi.fix_pathinfo=0 в php.ini чтобы предотвратить лишние системные вызовы stat().

Учтите, что используя HTTPS необходимо задавать fastcgi_param HTTPS on; чтобы Yii мог корректно определять защищённое соединение.

Размещение файлов на сервере

Возможны два варианта: Вы имеете доступ к каталогу, который является родительским по отношению к DocumentRoot, или не имеете. DocumentRoot - это доступный из сети каталог HTTP-сервера, который может называться «www», «htdocs» или «public_html».

Если доступ к родителю DocumentRoot-а есть:

  1. Извлекаете из архива все файлы системы и копируете их в каталог сервера, который является родительским по отношению к DocumentRoot. При этом не забываете включить видимость скрытых файлов, чтобы скопировалось действительно всё, а не часть.
  2. Если имя каталога DocumentRoot отличается от «www» - то запоминаете его имя и удаляете, а его имя присваиваете входящему в систему каталогу «www». Также необходимо исправить «www» на новое имя в файле /common/config/bootstrap.php.
  3. Для каталогов /frontend/runtime и /www/assets устанавливаете права 0777. Для всех остальных каталогов - 0750, а для файлов - 0640.
  4. Бывает так, что хостинг-провайдер предоставляет доступ к родителю DocumentRoot-а, но запрещает относительную адресацию к его содержимому для скриптов DocumentRoot-а. Проявляется это во время первого запуска системы появлением ошибки PHP - отсутствие доступа к классу Application. Если у Вас получилось именно так, установить «Курсор» можно нижеописанным способом.

Если доступ к родителю DocumentRoot-а отсутствует:

  1. Извлекаете из архива все файлы системы и копируете их в DocumentRoot каталог сервера. При этом не забываете включить видимость скрытых файлов, чтобы скопировалось действительно всё, а не часть.
  2. В корневом каталоге (DocumentRoot) переименовываете файл «.htaccess-alt» в «.htaccess».
  3. В подкаталоге «www» файл «.htaccess» переименовываете в «.htaccess-old», а файл «.htaccess-alt» в «.htaccess»
  4. Открываете в любимом редакторе файл /common/config/main-local.php, а в файле находите и раскомментируете строку //'request' => ['baseUrl' => ''],.
  5. Для каталогов /frontend/runtime и /www/assets устанавливаете права 0777. Для всех остальных каталогов - 0750, а для файлов - 0640.

Проверяем программное окружение и получаем лицензию

Проверяем соответствие программного окружения сервера системным требованиям «Курсора». Для этого открываем в любом браузере URL - http://имя_домена/requirements.php. Видим примерно следующее:

Системные требования Курсора

Страница показывает системные требования Yii2 (PHP-фреймворка на котором построен «Курсор»). Допускается выделение жёлтым фоном следующих строк таблицы:

  • PDO SQLite extension («Курсором» не используется);
  • PDO PostgreSQL extension («Курсором» не используется);
  • Memcache extension (если не планируете использовать);
  • APC extension (если не планируете использовать);
  • ImageMagick PHP extension with PNG support (желательно, но не обязательно).

Если же какие-то из строк таблицы, кроме указанных, выделены жёлтым или красным фоном - принимаем меры по установке и/или настройке недостающего программного обеспечения. Если все необходимые строки таблицы выделены зелёным фоном - значит всё в порядке и движемся дальше...

Первая строка таблицы Details содержит информацию об установленном на сервере ionCube Loader-е, в том числе информацию о Вашем сервере (в столбце Memo), которая необходима для генерации лицензии. Скопируйте всё содержимое данной ячейки таблицы и отправьте в письме на тот же адрес, с которого Вам пришла ссылка на дистрибутив «Курсора» (можно как ответ на это письмо). Важно то, что Вы должны отправить письмо ОБЯЗАТЕЛЬНО с того адреса, который указывали при оплате «Курсора»! Через какое-то время Вы получите ответ с присоединённым к нему файлом лицензии и пояснением как правильно его использовать.

/common/config/main-local.php

Открываем файл в любимом редакторе. Внутри видим примерно следующее:

<?php

return [
	//'catchAll'    => ['out/service'],
	'components'    => [
		//'request' => ['baseUrl' => ''],
		'db'        => [
			'class'               => 'yii\db\Connection',
			'dsn'                 => 'mysql:host=localhost;dbname=cursor',
			'username'            => 'login',
			'password'            => 'pass',
			'charset'             => 'utf8',
			'enableSchemaCache'   => true,
			'schemaCache'         => 'cache',
			'schemaCacheDuration' => 3600,
			'enableQueryCache'    => true,
			'queryCache'          => 'cache',
			'queryCacheDuration'  => 3600
		]
	]
];

В строке 'dsn' => 'mysql:host=localhost;dbname=cursor', прописываем хост базы данных вместо слова "localhost" и название базы данных вместо слова "cursor".

В строке 'username' => 'login', прописываем имя пользователя базы данных вместо слова "login".

В строке 'password' => 'pass', прописываем пароль пользователя базы данных вместо слова "pass".

/common/config/params-local.php

Открываем файл в любимом редакторе. Внутри видим примерно следующее:

<?php

return [
	'emailMailer'                  => 'mailer@domain.com',

	'imageMaxWidth'                => 5000,
	'imageMaxHeight'               => 5000,
	'imageNewsWidth'               => 1200,
	'imageNewsHeight'              => 800,
	'imageAvatarWidth'             => 160,
	'imageAvatarHeight'            => 160,

	'userPasswordResetTokenExpire' => 3600,

	'chartColors'                  => "'#4dc9f6', '#f67019', '#f53794', '#537bc4', '#acc236', '#166a8f', '#00a950', '#58595b', '#8549ba', '#ff0000'",

	'folderRights'                 => 0755,
	'fileRights'                   => 0644,
	'fileExtensions'               => null,

	'editorHeight'                 => 200
];

Тут только одна строчка обязательна для изменения - 'emailMailer' => 'mailer@domain.com',. Это адрес электронной почты, с которого будут уходить сообщения от имени системы. Корректный адрес может понадобиться для обеспечения работы SMTP-сервера.

Назначение остальных строк кратко поясним в таблице:

СтрокаПояснение к значению
imageMaxWidthМаксимальная ширина (в пикселях) загружаемых изображений.
imageMaxHeightМаксимальная высота (в пикселях) загружаемых изображений.
imageNewsWidthШирина (в пикселях) к которой приводятся все загружаемые изображения новостей.
imageNewsHeightВысота (в пикселях) к которой приводятся все загружаемые изображения новостей.
imageAvatarWidthШирина (в пикселях) к которой приводятся все загружаемые изображения аватаров пользователей.
imageAvatarHeightВысота (в пикселях) к которой приводятся все загружаемые изображения аватаров пользователей.
userPasswordResetTokenExpireДлительность (в секундах) актуальности ссылки для сброса пароля пользователя.
chartColorsМассив цветов, который используется диаграммами и графиками.
folderRightsПрава на каталоги, выставляемые системой при их создании.
fileRightsПрава на файлы, выставляемые системой при их создании.
fileExtensionsМассив расширений присоединяемых файлов, которые допустимы для загрузки. Например, "gif, jpg". Значение null означает отсутствие ограничений.
editorHeightВысота (в пикселях) HTML-редактора в интерфейсе.

И после этого...

Если мы всё сделали правильно, то уже пора увидеть стартовый экран «Курсора». Для этого открываем в любом браузере URL - http://имя_домена/. Должны увидеть такое:

Стартовый экран Курсора

Если Вы видите что-то другое, значит ранее что-то было сделано неправильно. Рекомендуем внимательно пройти ещё раз все инструкции данной страницы...


Pran Precision

Навигация