понедельник, 8 февраля 2010 г.

Установка CMS системы TYPO3 на SuSE Linux

Вступление


Данная статья не претендует на оригинальность, т.к. собраный в ней материал уже есть в сети, но он собран воедино, так чтобы админу приходилось минимально гуглить и переводить. Заниматься установкой TYPO3 приходится не каждый день и с течением времени кое-какие вещи забываются, поэтому материал задумывался как "склерозник" для личного пользования, но вполне может быть полезен и другим людям занимающимися CMS-системой TYPO3, особенно новичкам.

Для установки TYPO3 нам понадобится SSH доступ к веб серверу и соответственно SSH клиент. Я рекомендую использовать WinSCP.

Раньше, как только я получал заказ на разработку нового сайта на базе TYPO3, я делал следующее - создавал на веб-сервере папку типа site1.com и устанавливал внутри ее ядро системы и файловый шаблон нового сайта (source и dummy site). Причем, каждый раз, устанавливаемая версия ядра была более свежей, чем предудущая. И выходило так, что весенние сайты работают на версии ядра 4.2.6, а осенние на версии 4.2.10 и т.д. Одним словом - зоопарк, со всеми вытекающими последствиями.

Со временем я поумнел и задался вопросом: "А почему я всегда так делаю? Ведь можно же сделать более изящно и оптимально?". И действительно можно! При этом ядро системы устанавливается всего один раз и на его базе работает сколько угодно сайтов. Таким образом и с версиями ядра порядок, и экономится дисковое пространство, и обновляться затем значительно проще.

При таких раскладах дерево директорий должно выглядеть примерно так:

typo3_src - директория с ядром системы
site1.com - файлы и настройки 1-го сайта
site2.com.ua - файлы и настройки 2-го сайта
site3.biz.ua - файлы и настройки 3-го сайта

А теперь распишу все подробно по шагам...

1. Установка ядра системы TYPO3 4.3.1


а) Логинимся пользователем root и cоздаем директорию для установки ядра (исходников) TYPO3. В моем случае это директория - /usr/www/

б) Скачиваем архив с ядром с сайта http://typo3.org/download/packages/



или с помощью команды:

wget http://prdownloads.sourceforge.net/typo3/typo3_src-4.3.1.tar.gz?download



в) Распаковываем только что полученный архив внутри нашей директории /usr/www/

tar -xzvf typo3_src-4.3.1.tar.gz



После распаковки архива получим следующую файловую структуру:



г) Веб-сервер Apache в SUSE Linux работает под именем пользователя - wwwrun, который является членом группы пользователей - www. Этому пользователю и группе необходимо дать полные права на папку с ядром TYPO3, т.е. - typo3_src-4.3.1. Если мы по-прежнему находимся в папке /usr/www/, то выполняем команду:

chown -R wwwrun:www ./typo3_src-4.3.1

которая делает пользователя wwwrun и группу www собственником (владельцем)
директории typo3_src-4.3.1



д) На папку в которую мы будем устанавливать все наши расширения TYPO3 (плагины, extensions), предоставим веб серверу полный доступ:

chmod -R 775 ./typo3_src-4.3.1/typo3/ext




е) Для нормальной работы системы TYPO3 на сервере должен быть установлен пакет ImageMagick, который отвечает за все манипуляции с картинками. Чтобы проверить стоит ли у вас на сервере ImageMagick, попробуйте выполнить команду identify, если получите, то же, что и у меня на картинке, значить все в порядке. В противном случае займитесь его установкой (для этого зайдите на сайт http://www.imagemagick.org).



Чтобы найти этот файл по имени используйте команду:

find / -name "identify*"



2. Установка нового сайта TYPO3



a) Создаем папку в которой будет находится наш сайт, например - mydomain.com:

mkdir mydomain.com

переходим в нее с помощью команды

cd mydomain.com

б) Скачиваем шаблон сайта с помощью знакомой уже команды:

wget http://prdownloads.sourceforge.net/typo3/dummy-4.3.1.tar.gz?download



и распаковываем этот архив командой:

tar -xzvf dummy-4.3.1.tar.gz



следующей командой:

mv ./dummy-4.3.1/* ./

данные из папки dummy-4.3.1 переносим в папку /usr/www/mydomain.com (на уровень выше)



получаем следующую структуру папок



Теперь можно удалить файл dummy-4.3.1.tar.gz и папку dummy-4.3.1

в) Делаем символическую ссылку typo_src, которая будет "говорить" нашему сайту где находится текущая рабочая версия ядра TYPO3. В дальнейшем, это поможет нам обновлять ядро системы.

Итак, возвращаемся в нашу папку /usr/www/, для этого можно использовать команду:

cd /usr/www/

Для перестраховки удаляем предыдущую символическую ссылку typo_src:

rm -rf ./typo3_src

Создаем новую символическую ссылку:

ln -s /usr/www/typo3_src-4.3.1 typo3_src



Внимание! Не нужно менять имя символической ссылки, оно должно быть именно typo3_src!

В результате получим еще одну папку в нашем дереве каталогов



Все, с ядром мы закончили. Все настройки ядра выполняются только один раз - при создании самого первого сайта!

г) Теперь вернемся к нашему сайту, а точнее к шаблонной структуре директорий, которые за него будут отвечать. Веб серверу нужен полный доступ к следующим папкам:

fileadmin
typo3conf
typo3temp
uploads

Это делается следующими 2-мя командами:

chown -R wwwrun:www fileadmin typo3conf typo3temp uploads
chmod -R 775 fileadmin typo3conf typo3temp uploads





д) Т.к. наш веб каталог (/usr/www/mydomain.com) содержит символьный линк, то для его обслуживания необходимо в настройках Apache прописать:

<Directory "/usr/www/mydomain.com">
Options +FollowSymlinks +Indexes +Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>

e) TYPO3 как и любая CMS система хранит все свои данные и настройки в базе данных MySQL. Желательно создать новую базу данных еще до начала дальнейшего конфигурирования сайта. И хотя установка TYPO3 может это сделать самостоятельно, я это делаю вручную - чтобы перестраховать себя от сюрпризов связанных с кодовыми страницами. Поэтому, заходим в командную строку MySQL:

mysql -u root -p и вводим пароль пользователя root для mysql

и выполняем следующие SQL команды:

CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON db_name.* TO username@localhost IDENTIFIED BY 'password';

Здесь мы создали БД в нужной нам кодировке, создали пользователя и дали ему все права на неё.

ж) Теперь можно перейти к заключительной стадии подготовки нового сайта к работе. Это делается с помощью так называемого режима установки - 1-2-3. Но чтобы этот автоматический режим стал доступен необходимо в директории typo3conf создать специальный файл с именем - ENABLE_INSTALL_TOOL, который является своеобразным флагом (семафором). Создадим этот файл с помощью команд Linux:

cd typo3conf
touch ENABLE_INSTALL_TOOL

Условный флаг взведен, можно пробовать. В строке браузера набираем:

http://www.mydomain.com/typo3

Увидим следующую страницу:



Вводим имя и пароль нашего нового пользователя MySql (username) и жмем кнопку Continue.
Внимание! На данном этапе возможны побочные явления такого рода:
1. Если вводить имя и пароль нового пользователя нашей БД - невозможно сделать конект к базе данных.
2. Если вводить имя и пароль root (mysql)- невозможно выбрать БД (Error: No database selected).
Я не понял, что это такое, возможно какие-то накладки или глюки... Но лечится это довольно просто. В директории typo3conf находится главный конфигурационный файл TYPO3 - localconf.php. В нем нужно прописать следующие строки:
$typo_db_username = 'root'; // Modified or inserted by TYPO3 Install Tool.
$typo_db_password = 'парольрута'; // Modified or inserted by TYPO3 Install Tool.
$typo_db_host = 'localhost'; // Modified or inserted by TYPO3 Install Tool.
$typo_db = 'имя базы'; // Modified or inserted by TYPO3 Install Tool.
После этого в URL браузера можно сменить номер инсталляционного шага на цифру 2, например, http://mydomain.com/typo3/install/index.php?TYPO3_INSTALL[type]=config&mode=123&step=2

Т.е. мы прошли первый шаг установки вручную, указав имя и пароль пользователя под которым наша система будет работать со своей базой данных.

На втором шаге выбираем в выпадающем списке нашу предварительно созданную БД и опять жмем кнопку Continue:



На последнем 3-м этапе нажимаем кнопку Import database:



И хотя фраза "Import database" подразумевает под собой импорт каких-то данных в БД, на самом деле TYPO3 создаст свой репозиторий - набор служебных таблиц со служебными данными.



3. Конфигурация системы TYPO3 4.3.1


Теперь можно смело заходить в админку TYPO3 и делать базовые настройки самой CMS системы.

В строке браузера набираем: http://www.mydomain.com/typo3 и вводим имя пользователя - admin, а в качестве пароля слово - password.



Переходим в раздел Admin Tools\Install и кликаем по пункту 5: All Configuration. В дальнейшем, вход в данный раздел потребует ввода отдельного пароля (не пользователя admin). По умолчанию пароль для All Configuration - joh316.



Здесь можно произвести множество настроек, но самое главное это "заставить" систему нормально работать с кодировкой UTF-8. За что отвечают следующие параметры и их значения:
[setDBinit]
String (textarea): Commands to send to database right after connecting, separated by newline. Ignored by the DBAL extension except for the 'native' type!
[SYS][setDBinit] = SET NAMES utf8 SET SESSION character_set_server=utf8
[forceCharset]
String. Normally the charset of the backend users language selection is used. If you set this value to a charset found in t3lib/csconvtbl/ (or "utf-8") the backend (and database) will ALWAYS use this charset. Always use a lowercase value.
[BE][forceCharset] = utf-8

После этого, по совету Дмитрия Дулепова (для новичков поясню, это известный разработчик сообщества TYPO3) необходимо установить такие параметры системы:

[enable_typo3temp_db_tracking]
Boolean. If set, then all files in typo3temp will be logged in a database table. In addition to being a log of the files with original filenames, it also serves to secure that the same image is not rendered simultaneously by two different processes.
[GFX][enable_typo3temp_db_tracking] = 1

[devIPmask]
Defines a list of IP addresses which will allow development-output to display. The debug() function will use this as a filter. See the function t3lib_div::cmpIP() for details on syntax. Setting this to blank value will deny all. Setting to "*" will allow all.
[SYS][devIPmask] = ВАШ IP АДРЕС,127.0.0.1,::1

[sqlDebug]
Boolean. If set, then database queries that fails are outputted in browser. For development.
[SYS][sqlDebug] = 1

[curlUse]
Boolean: If set, try to use Curl to fetch external URLs
[SYS][curlUse] = 1

[t3lib_cs_convMethod]
String (values: "iconv", "recode", "mbstring", default is homemade PHP-code). Defines which of these PHP-features to use for various charset conversion functions in t3lib_cs. Will speed up charset conversion radically.
[SYS][t3lib_cs_convMethod] = mbstring

[t3lib_cs_utils]
String (values: "iconv", "mbstring", default is homemade PHP-code). Defines which of these PHP-features to use for various charset processing functions in t3lib_cs. Will speed up charset functions radically.
[SYS][t3lib_cs_utils] = mbstring


[no_pconnect]
Boolean: If true, "connect" is used instead of "pconnect" when connecting to the database!
[SYS][no_pconnect] = 1

[multiplyDBfieldSize]
Double: 1-5: Amount used to multiply the DB field size when the install tool is evaluating the database size (eg. "2.5"). This is only useful e.g. if your database is iso-8859-1 encoded but you want to use utf-8 for your site. For Western European sites using utf-8 the need should not be for more than twice the normal single-byte size (2) and for Chinese / Asian languages 3 should suffice. NOTICE: It is recommended to change the native database charset instead! (see http://wiki.typo3.org/index.php/UTF-8_support for more information)
[SYS][multiplyDBfieldSize] = 1

[displayErrors]
Integer: -1,0,1,2. Configures whether PHP errors should be displayed. 0 = Do not display any PHP error messages. Overrides the value of "exceptionalErrors" and sets it to 0 (= no errors are turned into exceptions), the configured "productionExceptionHandler" is used as exception handler, 1 = Display error messages with the registered errorhandler. The configured "debugExceptionHandler" is used as exception handler. 2 = Display errors only if client matches TYPO3_CONF_VARS[SYS][devIPmask]. If devIPmask matches the users IP address the configured "debugExceptionHandler" is used for exceptions, if not "productionExceptionHandler" will be used. -1 = Default setting. With this option, you can override the PHP setting "display_errors". If devIPmask matches the users IP address the configured "debugExceptionHandler" is used for exceptions, if not "productionExceptionHandler" will be used.
[SYS][displayErrors] = 2

[compressionLevel]
Determines output compression of BE output. Makes output smaller but slows down the page generation depending on the compression level. Requires zlib in your PHP installation. Range 1-9, where 1 is least compression and 9 is greatest compression. 'true' as value will set the compression based on the PHP default settings (usually 5). Suggested and most optimal value is 5.
[BE][compressionLevel] = 5

А теперь пройдитесь по следующим разделам админки как показано на скриншотах ниже:






Ну и напоследок необходимо позаботиться о безопасности системы:

1. Сменить пароль пользователя admin, это делается в разделе User settings как показано ниже.



2. Вывести систему из режима настройки, путем удаления семафорного флажка - ENABLE_INSTALL_TOOL

О себе

Моя фотография
Вадим Гиркало
Фрилансер, веб-разработчик сайтов на базе бесплатной, мощнейшей и очень гибкой CMS системы - TYPO3.
Просмотреть профиль

Позвонить мне в Skype

TOP - 3