Примерно так меня обрадовал мой хостёр Fornex, получив очередную порцию бредовых “абузов” от немецких “антиспамеров” clean-mx (Герхард, кстати (шеф этой лавки), потом объявился – мы с ним и раньше общались – извинился за долгий ответ и рапортовал, что логично включил сайты в whitelist).
Оба повели себя, как неадекваты: немцам плевать на отправляемые им false positive заявки, а хостёру плевать на бредовость полученной писанины.
Валить, так валить.
В результате я успешно переехал с сервера в Германии на говносервер во Франции от БитВеб (эти – ещё одни неадекваты) к отличным пацанам SinaroHost. Стало дешевле и вроде, в среднем по больнице, чуток быстрее (пингомерялки раз и дваз).
Попутно пришлось пройтись по всем граблям, по которым ходил в прошлый свой переезд три года назад. Опишу для себя будущего, где они лежат. Мало ли чего…
1. Копирование файлов с сервера на сервер
Я тащил все объемы данных через пару zip -r denglad ./ в Германии -> свой комп -> unzip denglad.zip во Франции. Мне сказали, что я не прав и лучше вот так:
rsync -avux root@<fornex_ip>:/path/to/your/data/on/remote/server/SITENAME /path/on/the/local/server/
После чего на серваке во Франции будет копия данных из Германии.
Два момента:
- для источника SITENAME указываем, для получателя – нет
- фигачить надо из под настоящего SSH клиента (в FAR’е оно опять не взлетает)
2. Запуск скрипта по приходу письма на определенный email
На старом сервере было сделано по описанию отсюда. Сейчас таблицы виртуальных юзеров не обнаружилось. Но по адресу /etc/exim/aliases обнаружилась таблица реальных email, прописанных на сервере.
Залепил в описании действий для нужного ящика заказдеся@:
[email protected]:”|/var/www/scriptus/order2database.php”,[email protected]
А скрипту выставил права
chmod a+x /var/www/sriptus/order2database.php
Теперь письма с ордерами проскакивают к счастливому мне по ходу парсятся скриптом, данные из них добавляются в базу, а я млею над статистикой покупок и могу отправлять покупателям письма.
3. Апачевский Alias на директорию и символьная ссылка aka symlink
Суть в том, что для .ru сайта не существует целого набора папок и их содержимого. Они – точная копия .com папок. Нафига?
Тут два пути: для статики и для скриптов.
Со статикой рецепт более очевидный и делается на Apache. Он на поверхности и виден сразу в конфиге к .ru сайту:
Alias /images/ “/var/www/USERNAME/data/www/SITECOM/images/”
php_admin_value open_basedir “/var/www/USERNAME/data:.:/var/www/USERNAME/data/www/SITECOM/:.”
То есть сам алиас и права на доступ к паке .com сайта.
С динамикой (со скриптами и вызовами из них других скриптов) облом. Пришлось задействовать symlink и создавать “призрака” для каждой нужной папки:
ln -s /var/www/USERNAME/data/www/SITECOM/comrufolder ./comrufolder
Не очевидно – раз. Я, например, забыл, что использовал symlink на прошлом сервере и недоумевал, чего прописанные через Alias скрипты не работают (когда память вернулась, вспомнил что на рабочей Windows7 у меня тоже реализованы символьные ссылки – через mklink). 😉
Ну и второй момент: символьная ссылка – она на уровне системы и если, например будет SITE2COM, то папку /comrufolder/ там уже не создашь – линка на SITECOM ведёт. Придётся папку иначе называть.
4. Выгоняю пуделя и делаю SSL A-класса
Чтобы https-сайт засветился зелёненькой буковкой A при тестировании на SSLLabs надо отключить протокол SSL3 и слабые алгоритмы шифрования (у меня это был RC4).
У меня вебсервер крутится на Apache и правки нужно вносить в /etc/httpd/conf.d/ssl.conf (был бы nginx – правил бы его конфиг). Добавил две строки:
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK
И перезапустил Apache:
service httpd restart
Похожий подъём с переворотом для Nginx.
5. Убираю версию Nginx и PHP из ответа сервера
Добавляю в файл настроек Nginx или в подключаемом /etc/letsencrypt/options-ssl-nginx.conf (только для https)
server_tokens off;
Но можно и в /etc/nginx/nginx.conf, в раздел http {}, конечно же… 😉
И реложу Nginx
service nginx reload
Добавляю в основной /etc/php.ini, если в системе один нативный php или в php.ini для каждого юзера в папке /user/data/php-alt/
expose_php = off
и реложу либо php
service php-fpm reload
либо апач оптом, если есть альтернативные версии php
service httpd reload
Полезные CLI-команды для *nix
df -h
– информация о свободном месте на дискеyum repolist
– просмотр всех установленных репозитариевgrep -r 'letsencrypt' /etc/httpd
– поиск файлов с вхождением текста, начиная с папкиuname -a
– просмотр полной информации о версии ядраrm -r testfldr
– удаление файла или папкиls -l testfldr
– просмотр, куда ведёт symlinkyum list installed | grep geo
– показывает установленные пакеты, с вхождением ‘geo’ в имяrpm -ql GeoIP
– покажет все установленные пакеты с вхождением ‘GeoIP’ в имяrpm -qa | grep kernel
– покажет все установленные ядра системыyum remove [kernel_version]
– удалит ядро с этим именемshutdown -r now
илиreboot
– перезагрузка системыcp -R folderFROM folderTO
– копирование папки ИЗ В
Вот, Денисик, что помнил записал, что вспомню – допишу.
Питайся правильно, дорогой! 😀