Настройка на VPS в
В тази статия ще говоря за първите си стъпки в настройката на VPS, който поръчах от .masterhost. Тук ще бъдат описани само първите стъпки за стартиране на вашия уебсайт на VPS. В бъдеще определено ще засегнем въпросите за архивиране на данни и разделяне на правата. Има някои скрити скъпоценни камъни, които се надявам да ви помогна да избегнете.
Поръчка
За да започна, регистрирах домейн за себе си и поръчах VPS (Fedora Core 7, план VPS Standard, без Plesk). Предпочитах да поддържам DNS през .masterhost сървъра, затова отидох в контролния панел в „Лични услуги и настройки“ и активирах услугата „DNS (клиентска) поддръжка“ там. Струва $0,25 независимо от броя на домейн зоните.
Смятах, че е неизгодно да използвам Plesk, тъй като можете да настроите всичко без него и този панел използва много ресурси, което е особено забележимо при по-ниски тарифни планове.
Операционната система Fedora Core 7 е избрана произволно (по подразбиране) и всички следващи стъпки имат смисъл най-вероятно само във връзка с нея.
Инсталиране на необходимия софтуер
Първоначално получаваме доста гол сървър с инсталиран Apache 2.x. Естествено, тази конфигурация е изключително неефективна. Затова ще инсталираме пакета nginx + Apache. Освен това обикновено ще ни трябват PHP и MySQL.
Веднага след като получите сървъра в ръцете си (това се случва много бързо), той все още не е готов за работа, във фонов режим е инсталиран минимален набор от пакети, включително yum. Това може да отнеме до 10-30 минути. Следователно, ако видите съобщение на екрана, че командата yum е неизвестна, просто изчакайте малко.
Отиваме на ssh конзолата (под Windows използвам putty за това, което е описано в товастатия), след което изпълнете командата:
yum инсталирайте nginx
За да инсталираме nginx с настройки по подразбиране, това ни подхожда.
yum инсталирайте php
Инсталирайте MySQL и MySQL разширенията за PHP:
yum install -y mysql-сървър php-mysql
Инсталирайте eAccelerator за PHP (това драстично ще подобри производителността на PHP):
yum инсталирайте php-eaccelerator
Някои сайтове изискват една от библиотеките с изображения. Имах нужда от ImageMagick за един от сайтовете, който се инсталира със следната команда:
yum инсталирайте ImageMagick
Ако не ви трябва, по-добре не го инсталирайте - дърпа много зависимости.
yum инсталирайте httpd-devel cd /usr/local/src/ wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz tar -xzf mod_rpaf-0.6.tar.gz cd mod_rpaf-0.6 apxs -i -c -n mod_rpaf-2.0.so mod_ rp af-2.0.c
Сега имаме необходимия набор от софтуер. Остава да го настроим.
Първоначална настройка
Ще направим настройките въз основа на възможността да поддържате няколко сайта на един VPS.
DNS редактор. Отворете контролния панел .masterhost, потърсете DNS зони в менюто и продължете към редактиране на DNS на успешно регистриран домейн (наричан по-нататък mysite.ru като пример). Създайте набор от записи като този:
Конфигуриране на Apache
Всички настройки се намират в директорията /etc/httpd.
Нека първо спрем Apache:
услуга httpd стоп
Слушащи портове. Сега нека конфигурираме Apache да слуша само за локални заявки, например на порт 8080. За да направите това, намерете реда във файла /etc/httpd/conf/httpd.conf, който започва с Listen, и го заменете с това:
Конфигуриране на mod_rpaf. В директорията /etc/httpd/cond.d/ създайте файла mod_rpaf.conf от следнияТип:
LoadModule rpaf_module modules/mod_rpaf-2.0.so
# Разрешаване на обратен прокси добавяне на пренасочване RPAFproxy_ips YOUR_PROXY_SERVER_IP_LIST_OR_ONE_IP # кои IP препращат заявки към нас
# нека rpaf актуализира настройките на vhost # позволява да има същите имена на хостове като в "истинската" # конфигурация за препращащия Apache
RPAFproxy_ips 127.0.0.1 RPAFheader X-Real-IP
Малка PHP настройка. Във файла /etc/httpd/conf.d/php.conf редът:
AddType текст/html .php
AddType приложение/x-httpd-php .php
Настройка на сайта. За да разрешите именувани сайтове, във файла /etc/httpd/conf/httpd.conf заменете реда:
След това в директорията /etc/httpd/cond.d/ създайте файла mysite.ru.conf със следната форма:
ServerName mysite.ru ServerAlias www.mysite.ru DocumentRoot /home/mysite.ru/www ErrorLog /home/mysite.ru/logs/mysite.ru.error_log AllowOverride All Options +Includes php_admin_value open_basedir /home/mysite.ru / php_admin_value doc_root / home/mysite.ru/www php_value session.save_path /home/mysite.ru/sessions php_admin_value upload_tmp_dir /home/mysite.ru/tmp/ php_value display_errors 1 php_admin_value magic_quotes_gpc 0
Докато не настроим потребители и права, трябва да имаме предвид, че извършваме всички действия като root, докато Apache работи от името на друг потребител. Все още няма да се занимаваме с правата, затова ще създадем сервизни папки за Apache с права за всички:
cd /home mkdir mysite.ru cd mysite.ru/ mkdir www tmp logs сесии chmod 777 logs сесии tmp
Проверете и стартирайте. И накрая, нека проверим конфигурацията:
услуга httpd configtest
услуга httpd стартиране
Настройкаnginx
Конфигурационните файлове на nginx се намират в директорията /etc/nginx/.
Нека създадем следния файл mysite.ru.conf в директорията /etc/nginx/conf.d/:
# # Виртуален хост, използващ комбинация от IP-базирана конфигурация, име и порт #
слушане на сървър mysite.ru:80; име на сървър www.mysite.ru;
местоположение / proxy_pass http://127.0.0.1:8080/; прокси_пренасочване изключено; log_not_found изключен; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Хост $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; > >
Тествайте и стартирайте. Сега ние (ако приемем, че DNS промените, които направихме по-рано, вече са били разпространени на DNS сървърите) можем да тестваме конфигурацията да работи:
услуга nginx configtest
И стартирайте nginx:
стартиране на услугата nginx
Проверка на настройките
На този етап пакетът nginx + Apache + PHP вече трябва да работи правилно. Можете да проверите това, като създадете файл /home/mysite.ru/www/index.php със следното съдържание:
Отиваме на сайта. PHP информация за нашия пакет трябва да се появи.
- В раздела Apache Environment променливата REMOTE_ADDR сочи към вашия IP. Това означава, че nginx и mod_rpaf са конфигурирани правилно.
- Разделът eAccelerator присъства. Това означава, че PHP ще работи с висока производителност.
- Има секции mysql и mysqli. Това означава, че MySQL за PHP е инсталиран правилно.
Настройка на MySQL
Всички настройки на сървъра се намират във файла /etc/my.conf.
Първоначална настройка. Стартирайте MySQL:
стартиране на услугата mysqld
На първо място, трябва да промените администраторската парола за MySQL:
/usr/bin/mysqladmin -u root нова_парола
Вход по подразбиране. BВ бъдеще ще ни бъде полезно да имаме достъп до MySQL конзолата, без да посочваме данни от конзолата, така че ще създадем файл /root/.my.cnf със следното съдържание:
[клиент] user=root password=new_password
Подготовка за настройка. Изтеглете MySQL Performance Tuning Primer Script от http://www.day32.com/MySQL/. Поставете го в /root и направете тестово изпълнение:
cd chmod +x tuning-primer.sh ./tuning-primer.sh
В резултат на това трябва да се появи определен набор от информация. Засега е важно първият ред да е:
mysqld е жив
След като стартираме сайта, след известно време този скрипт ще може да даде добри препоръки за настройка на нашия MySQL сървър.
Създаване на базата данни. Време е да създадете базата данни:
mysql СЪЗДАВАНЕ НА БАЗА ДАННИ mysite; ПРЕДОСТАВЯЙТЕ ВСИЧКИ ПРИВИЛЕГИИ НА mysite.* НА 'mysite_user'@'localhost', ИДЕНТИФИЦИРАН ОТ 'mysite_user_password'; \q
Вече разполагаме с базата данни на mysite, достъпна само от този VPS от потребител mysite_user с парола mysite_user_password.
Можете да започнете работа.
Оптимизация
GZip компресия
Добавяме тези редове след началото на дефиницията на сървъра във файла /etc/nginx/conf.d/mysite.conf:
gzip включен; gzip_min_length 1024; gzip_types текст/html текст/xml текст/css приложение/x-javascript текст/javascript;
Сега изходът от тези типове MIME ще бъде компресиран преди предаване, ако клиентът е в състояние да разбере правилно компресираните данни.
Сервиране на статика чрез nginx
Да предположим, че имаме три опции за статични файлове - периодично променяни, никога не променяни и рядко променяни. Периодично сменя се по-добре да се дава без специални трикове. Да предположим, че искаме да дадем скриптове от съответните връзки/js, /jss и /jsv. Освен това, за рядко променяни файлове, заявката към файла отива например като /jsv/myscript.jsv2 (номерът на версията е зададен в тага на скрипта [@src] и когато файлът се променя, този номер на версията трябва да се увеличи по някакъв начин) и всяка версия се дава като изтича макс. Физически ще поставим тези файлове в следните директории:
/home/mysite.ru/static/js /home/mysite.ru/static/jss /home/mysite.ru/static/jsv0
След това във файла /etc/nginx/conf.d/mysite.conf над блока
поставете следните редове:
местоположение /js/root /home/mysite.ru/static; access_log off; >
местоположение /jss/ root /home/mysite.ru/static; access_log off; изтича максимум; >
местоположение /jsv0/ root /home/mysite.ru/static; access_log off; изтича максимум; вътрешен; >
Естествено, файловете трябва да бъдат физически поставени в тези директории:
cd /home/mysite mkdir static cd static mkdir js jss jsv0
Сега тези файлове ще бъдат обслужвани правилно чрез nginx.
След всяка промяна на конфигурацията трябва да издадете команда за препрочитане:
презареждане на услугата nginx
Увеличаване на ограниченията на Apache
Във файла /etc/httpd/conf/httpd.conf търсим раздел и леко увеличаваме стойностите (MaxRequestsPerChild е по-добре, напротив, да се намали). Например по този начин (по подразбиране настройките са твърде стегнати, но тук ще увеличим лимитите, като използваме повече RAM по пътя):
StartServers 5 MinSpareServers 5 MaxSpareServers 15 ServerLimit 30 MaxClients 30 MaxRequestsPerChild 200 MaxKeepAliveRequests 50 KeepAliveTimeout 5
И, както обикновено, след това трябва да рестартирате:
услуга httpd рестартиране
Оптимизация на MySQL
Няколко дни следЗа да започнете да работите с бази данни, стартирайте горния скрипт за настройка на MySQL и следвайте неговите препоръки. Обикновено това е достатъчно.
Какво следва
Най-важната задача, след като сайтът започне да работи, е създаването на политика за архивиране на данни.
След това ще разгледаме политиката за сигурност, използвайки отделни потребители и групи.
И накрая, създаване на набор от FTP достъп до сайта.