пятница, 31 мая 2013 г.

Настройка Debian linux с Нуля Apache+PHP+MySQl

Настройка Debian linux с Нуля Apache+PHP+MySQl, итак вы заказали сервер без администрирования и на нем ничего не установлено. На с колько это важно, если вам не нужны лишние демоны то вы можете проконтролировать и добавить именно то, что вам надо.

первым делом обновим пакеты
apt-get update
apt-get-upgrade
после нам понадобится редактор, я предпочитаю mc мне как далекому от linuxa Человека, удобнее работать в нормальном редакторе, чемто он напоминает старый добрый нортон, также есть алтернатива mc это deco он намного легче в памяти.
apt-get install mc
mc
в меню Options->Configuration выставляем галочку use Internal Editor
нам понадобится SSL, скорее всего админы вам это уже поставили если вы в консоли, но всеже если это ваш домашний сервер то вам надо сделать так
apt-get install ssh openssh-server
прописываем имя хоста:
mcedit /etc/hosts
и тут
/etc/hostname
чтобы изменения вступили в силу:
/etc/init.d/hostname.sh
чтобы linux автоматически синхронизировал время:
apt-get install ntp ntpdate
после этого практически можете забыть об установке в ручную время все будет делаться само :)
Возможно вам захочется большей безопасности, для этого ставим пакет sudo
apt-get install sudo
после чего любую операцию от имени root можно быдет выполните только через su
или так:
sudo su
теперь ваша консоль под админом. Для чего это делается, предположим консоль осталась открытой вы отошли, любой присевший за компьютер не сможет ничего сделать без пароля :) Я лично ставлю данный пакет в инсключительных случаях, для сервер считаю оно немного излишне, потомучто, консоль оставить очень сложно, на консоль можно попасть только через пити и только зная пароль, а если знаеш пароль то и смысл в sudo? а если злоумышлиник попал на сервер через дырку в php ему тоже не поможет sudo. Вобщем несколько бесмыслено для удаленого сервера ИХМО. Если вы иного мнения высказывайтесь.
Устанавливаем MySql
apt-get install mysql-client mysql-server
если при установке не спросило какой пароль задать делаем так:
mysqladmin -u root password “newpass”
либо так:
mysql -uroot
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD(‘newpass’) WHERE User = ‘root’;
mysql> FLUSH PRIVILEGES;
UPDATE: 2012.05.04 решаем проблемы с root в MySql тут подробности root в MySql
нужен ли phpmyadmin? естественно нужен, но ставить его из дистрибутива большая дикость, либо надо ставить скопировать в любое доступное для вас место и потому деинсталировать. С чем это связано, зачем вам phpmyadmin котоый по умолчанию, ведь все знают как его найти. А так вы можете обознать папку как угодно раместить на любом сайте превязаном к вашему серверу тем самым увеличить пусть не на много но всеже вашу спокойную жизнь.
apt-get install phpmyadmin
копируем в любое вам нравящееся место, после чего:
apt-get autoremove phpmyadmin
лично я качаю его с офф сайта разработчиков. например тут php-myadmin.ru после переносим его на сервер. Качаю обычно 7z значит его надо тоже поставить на сервер.
apt-get install p7zip
обычно в зависимости от дистрибутива 7z может оказать обозван и 7zr и 7za , чтобы было все привычно
ln -s /usr/bin/7zr /usr/bin/7z
после чего можно будте всегда вызывать 7z намного удобнее и более быстро чем tar+bz2 или gz хотя дело привычки. Но переносить сайты зажатые 7z быстрее ибо жмется лучше. На некоторых мало мощных серверах 7z может не запуститься учитывайте это.
Забыл упомянуть, пароль MySQL это вобще самая главная проблема всей безопасности, потомучто всегда хранится в открытом виде… исходя из этого не надо его делать сверх мощным, при условии что он будет использоваться только для localhost. Любой попавший на сайт через дыру, может просто его посмотреть в конфиге :) А вам головная боль его помнить. Поэтому для Сайтов делайте отдельного юзера с минимальными правами. которые необходимы сайту! никогда не прописывайте в конфигах пороль root. Самые опасные привелегии это FILE OUT и FILE IN. кто предупрежден тот обезопасен.
Вот и пришло время для установки Apache + PHP
apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libapache2-mod-ruby php5-curl
Я установил модули которые счел нужными, любой модуль который мы считаете лишним просто убирите из строки. в последствии это можно сделать и по отдельности.
включаем модули
a2enmod suexec rewrite ssl actions include
a2enmod dav_fs dav auth_digest
и перезапускаем апач
/etc/init.d/apache2 restart
если видите какието ошибки решаете их. Частая ошибка, это
Restarting web server: apache2apache2: Could not reliably determine the server’s fully qualified domain name, using ******.com for ServerName
… waiting .apache2: Could not reliably determine the server’s fully qualified domain name, using ******.com for ServerName
связано это с тем что данный сайт еще не привязан к серверу что само по себе естественно вы же его еще только настраиваете решается эта проблема так:
в файл /etc/apache2/apache2.conf:
mcedit /etc/apache2/apache2.conf
добавляем строку:
ServerName ******.com
С этого момента сервер готов чтобы на нем размещали сайты. FTP я не ставлю поскольку есть замечательная программа. winscp.net, она умеет по SSH протоколу делать все операции с файлами на сервере в разы удобнее фтп.
лишним не будет nginx и bind9, но это уже совсем другая история.

ставим Zend Optimizer
идем сюда: http://www.zend.com/en/products/guard/downloads на вкладочке Linux выбираем вашу версию и разрядность, скачиваем.

разворачиваем необходимую вам библиотеку в
/usr/lib/php5/zend/
в /etc/php5/conf.d
создаем файл
zend.ini
с таким содержимым:
zend_extension=/usr/lib/php5/zend/ZendOptimizer.so
zend_optimizer.optimization_level = 15
делаем рестарт апачу
/etc/init.d/apache2 restart
все Zend должен работать.

ставим IonCube
скачиваем необходимую версию тут: http://downloads2.ioncube.com/loader_downloads/
Но скорее всего это можно сделать сейчас тут:
http://www.ioncube.com/loaders.php
для меня подошла на сегодня: ioncube_loaders_lin_x86-64.zip объясняю почему,
lin = Linux :) 64 – разрядность ОС.
далее разархивируем в
/usr/lib/php5/ioncube
файл ioncube_loader_lin_5.2.so
5.2 – это версия PHP, тоесть если у вас другая версия PHP то и файл должен быть с соответсвующими цыфрами.
создаем в /etc/php5/conf.d
файл ioncube.ini
содержимым
zend_extension = /usr/lib/php5/ioncube/ioncube_loader_lin_5.2.so
делаем рестарт апачу
/etc/init.d/apache2 restart
все IonCube должен работать.

Устанавливаем bind9
apt-get install bind9

как им пользоваться:
в файл
/etc/bind/named.conf
в самый конец файла,
прописываем информацию о домене:
zone “domain.com” in { type master; file “/etc/bind/named/domain.com.db”; };
соотвественно создаем папку
/etc/bind/named
в нем создаем файл
domain.com.db
содержимое:
@ IN SOA domain.com. root.domain.com. (
201012243<----->;serial-nom
28800<-><------>; refressh second
7200<--><------>; retry
604800<><------>; expiry
86400 )><------>; TTL
;
domain.com. IN A 173.192.***.**
ns1.domain.com. IN A 173.192.***.**
ns2.domain.com. IN A 173.192.***.**
*.domain.com. IN A 173.192.***.**
domain.com. IN MX 10 mail
@ NS ns1.domain.com.
@ NS ns2.domain.com.
;
конец содержимого. domain.com меняете на свое значение
делаете рестарт binda
/etc/init.d/bind9 restart
прописываем NS1 и NS2 на домене, через некоторое время домен будет обрабатываться вашим сервером вашим bind9.
тоесть все дополнительные записи для домены вы можете делать на сервере, не заходя к регистратору домена

Комментариев нет:

Отправить комментарий