Для переносного середовища розробки я розгортав вебсервер у віртуальній машині VirtualBox з Ubuntu. У нотатці використано старі пакунки PHP 5 та відповідні шляхи конфігурації.
Це історія тієї інсталяції. Для нового сервера потрібні підтримувані версії та актуальні пакунки. Ліцензійні умови VirtualBox і його додаткових компонентів слід перевіряти окремо: загальне твердження про безкоштовність усього набору було надто широким.
Офіційні джерела: VirtualBox та Ubuntu.
Початкове встановлення Nginx і PHP
apt-get install nginx
apt-get install php5-cli php5-common php5-mysql php5-gd php5-fpm php5-cgi \
php5-fpm php-pear php5-mcryptУ файлі /etc/php5/fpm/php.ini було задано:
cgi.fix_pathinfo = 0У /etc/php5/fpm/pool.d/www.conf налаштовувалися розширення й Unix-сокет:
security.limit_extensions = .php .php3 .php4 .php5
listen = /var/run/php5-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
service php5-fpm restartРядок service php5-fpm restart у наведеному фрагменті — команда для термінала після збереження налаштувань, а не директива файлу www.conf.
Широкий перелік розширень збережено як частину старого прикладу. Документація PHP-FPM рекомендує обмежувати виконання потрібними PHP-розширеннями для зменшення ризику помилок конфігурації. Доступ до сокета також має відповідати фактичному користувачеві вебсервера.
Допоміжні засоби та DNS
У старій нотатці була команда з зайвою комою:
apt-get install mc, htopІмена пакунків відокремлюються пробілами, тому відповідний варіант:
apt-get install mc htop
apt-get install bind9
apt-get install whoismc — файловий менеджер; htop показує процеси й навантаження; whois використовується для запитів відомостей про домени. bind9 додавався для власного DNS-сервера, а не як обов'язкова частина кожного вебсервера. Збережені діагностичні шаблони:
dig название домена
nslookup название доменаЗамість слів «название домена» потрібно вказати реальне доменне ім'я.
Apache, PHP-модулі та база даних
У моєму середовищі також встановлювалися Apache та модулі:
apt-get install apache2
a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include
apt-get install libapache2-mod-php5
apt-get install php5-curlApache обрано для потреб конкретних сайтів. Саме використання rewrite не вимагає Apache: Nginx має власні механізми маршрутизації й переписування адрес.
Для передавання IP клієнта в тодішній схемі використовувався RPAF:
apt-get install libapache2-mod-rpaf
a2enmod rpafMySQL і Memcached встановлювалися такими командами:
apt-get install mysql-server mysql-client mysql-common
apt-get install memcached php5-memcachedДля роботи з сервером я використовував PuTTY як термінальний клієнт, а FileZilla — для передавання файлів. Передавання через SSH у FileZilla означає SFTP; FTP і SFTP — різні протоколи.
Збережений приклад Nginx перед Apache
server {
listen *:80;
server_name НАЗВАНИЕ_ДОМЕНА;
access_log /var/log/nginx/access.log;
# Перенаправление на back-end
location / {
proxy_pass НАЗВАНИЕ_ДОМЕНА:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;
}
# Статическиое наполнение отдает сам nginx
# back-end этим заниматься не должен
location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js|html|txt|exe|7z|rar|pdf)$ {
root КОРНЕВОЙ_КАТАЛОГ;
}
}У цьому прикладі Nginx віддає статичні файли й передає інші запити backend на порт 8080. Значення-заповнювачі потрібно замінити; зокрема, proxy_pass потребує коректної адреси з протоколом. Це схема HTTP-проксіювання до Apache, яку слід відрізняти від прямого FastCGI-з'єднання Nginx із PHP-FPM.
Перевіряйте довірені проксі та обробку клієнтських заголовків. Синтаксис: офіційний модуль proxy Nginx.
Перегляд трафіку
apt-get install iptraf
iptraf
apt-get install darkstatПочатковий приклад /etc/darkstat/init.cfg:
# Turn this to yes when you have configured the options below.
START_DARKSTAT=yes
# Don't forget to read the man page.
# You must set this option, else darkstat may not listen to
# the interface you want
INTERFACE="-i eth0"
#DIR="/var/lib/darkstat"
PORT="-p 666"
#BINDIP="-b 127.0.0.1"
#LOCAL="-l 192.168.0.0/255.255.255.0"
# File will be relative to $DIR:
#DAYLOG="--daylog darkstat.log"
# Don't reverse resolve IPs to host names
#DNS="--no-dns"
#FILTER="not (src net 192.168.0 and dst net 192.168.0)"
# Additional command line Arguments:
# OPTIONS="--syslog --no-macs"Запуск із тієї нотатки:
service darkstat start
http://ip-адрес_Вашего_сервера:666Вебстатистика може розкривати відомості про мережу. Адресу прослуховування та доступ до неї потрібно обмежити відповідно до призначення сервера.
Немає коментарів:
Дописати коментар