PHP: Почта — Manual

PHP: Почта - Manual Хостинг
Содержание
  1. Что это такое
  2. Установка
  3. Проверка
  4. Создание локальной учетной записи
  5. Конфигурация Apache-сервера
  6. Mysql
  7. Php: почта — manual
  8. Автор
  9. Внесение настроек в файл php.ini
  10. Выбор хостинг-провайдера
  11. Где находятся настройки версий php в ispmanager
  12. Грамотная настройка сервера отправки почты для скриптов php, настройка функции mail()
  13. Добавление сайтов
  14. Есть ли возможность редактирования файла php.ini?
  15. Изменения конфигурации php с помощью php.ini и phpinfo()
  16. Как включить/выключить глобальные переменные?
  17. Как запустить задание в crontab, используя определенную версию php?
  18. Как это будет работать
  19. Меняем часовой пояс и имя пк
  20. Настройка sftp
  21. Настройка vds сервера
  22. Настройка загрузки файлов
  23. Настройка резервного копирования и ротации логов
  24. Отправка вложений по электронной почте
  25. Отправка обычного текстового сообщения
  26. Подготовка файловой системы
  27. Преамбула
  28. Приступим
  29. Проблемы с кодировкой
  30. Создание ‘аккаунтов’ и системных пользователей
  31. Тюнинг ssh: ключи и интерактивный вход
  32. Вместо заключения

Что это такое

Mail применяется для отправки сообщений при условии что будут выполняться некоторые правила. Самое главное — эта функция не подходит для пересылки большого числа писем. Потому что после каждой отправки она закрывает, а потом опять открывает соединение с почтовым сервером. Это приведет к перерасходу мощностей на хостинге.

Настройка функции происходит в конфигурационном файле php.ini. В нем прописывают путь к лог-файлам, задают значение порта и так далее.

Mail принимает пять аргументов из которых три — обязательные:

Например, напишем такие строки кода

Установка

Устанавливаем MariaDB и PHP-модуль для работы с MySQL, после завершения установки перезагружаем Apache

apt install mariadb-server php-mysqlsystemctl restart apache2

Для проверки обновим тестовую страницу и в таблице с конфигурацией PHP и перейдем к разделу PDO. Наличие секции “PDO_mysql” говорит о корректной установке драйвера для работой с базой данных Mysql.

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

mysql_secure_installation

На первом шаге необходимо ввести пароль пользователя «root» для входа в СУБД или нажать Enter, если пароль не задан. Так как после установки учетная запись «root» не имеет пароля, нажимаем “Enter”.

Обратите внимание, что в MariaDB существуют собственные учетные записи, которые не имеют отношения к учетным записям операционной системы. Речь идет о пользователе «root» в MariaDB.

Далее конфигуратор предложит задать пароль для пользователя root, нажимаем “y” для подтверждения и вводим новый пароль, в нашем случае “Qwe123”

На все последующие запросы просто нажимаем “y” до окончания настройки.

Настройка завершена.

Данные для входа в MariaDB:

Проверка

Для того, чтобы PHP код мог быть исполнен, файл веб страницы должен иметь расширение “.php”. Переименовываем тестовою страницу

cd /var/www/sites/site1/mv index.html index.php

Добавляем в файл “/var/www/sites/site1/index.php” строку php-кода. В результате содержимое файла будет таким:

Сохраняем изменения и проверяем результат в браузере.

Если вы видите результат работы функции “phpinfo()”, значит интерпретатор PHP работает корректно. Приступаем к следующему этапу.

Создание локальной учетной записи

Сервер vsftpd позволяет очень гибко настраивать права доступа. Для решения наших задач ftp-пользователям необходимо обеспечить следующие возможности:

  • полный доступ к содержимому директории “/var/www/sites/”;
  • невозможность выхода за пределы директории “/var/www/”;
  • подключение с использованием виртуальной учетной записи;

Создадим локальную учетную запись “virtual” без возможности входа в систему, с домашней директорией “/var/www/”. Эта учетная запись будет использоваться для подключения виртуальных ftp-пользователей.

Конфигурация Apache-сервера

Конфигурационные файлы сайтов находятся в каталоге “/etc/apache2/sites-available/”. Создадим конфигурационный файл для нового виртуального хоста взяв за основу конфигурацию по умолчанию из файла “000-default.conf”

cd /etc/apache2/sites-available/cp 000-default.conf site1.conf

Откроем файл “site1.conf” и изменим параметр “DocumentRoot”. В качестве значения нужно указать путь к новому сайту, в нашем случае это “/var/www/sites/site1”

На данном этапе нам не требуется настройка одновременной работы нескольких сайтов, поэтому отключим сайт по умолчанию и включим новый сайт. Для применения изменений перезагружаем конфигурацию сервера.

a2dissite 000-defaulta2ensite site1systemctl reload apache2

Mysql

Установка MySQL довольная проста. Несколько раз установщик запросит у вас пароль для root’а сервера баз данных, можете смело оставлять его пустым — мы сменим его позже, с помощью утилиты mysql_secure_installation. При ее запуске ответьте, что хотите сменить пароль root’a, удалить тестовую БД и тестовых пользователей и обновить права на таблицы службной БД.

sudo aptitude install mysql-server
sudo mysql_secure_installation

Подробно почитать о настройке mysql-сервера можно

. Статья отлично написана, поэтому не вижу смысла дублировать сюда информацию.

Php: почта — manual

As mentioned earlier, for Windows users there is a fake sendmail option. A bit more detailed description how to do this is:

If you have a test server in use running Windows and some kind of WAMP combo (XXAMP, WAMP Server, etc) then you’ll notice that the PHP sendmail command (mail()) does not work. Windows simply does not provide the sendmail statement …

There is a simple trick to get this to work though;

1) Download (or use the attached file) sendmail.zip from http://glob.com.au/sendmail/

2) Unzip this in a folder on your c: drive (preferably use a simple path, for example c:wampsendmail — long filenames could cause problems)

3) Edit your PHP.INI file (note: WAMP users should access their php.ini file from the WAMP menu). Go to the [mail function] section and modify it as such:

[mail function]
; For Win32 only.
;SMTP =

; For Win32 only.
;sendmail_from =

; For Unix only.  You may supply arguments as well (default: «sendmail -t -i»).
sendmail_path = «C:wampsendmailsendmail.exe -t»

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_paramaters =

.. and save the changes.

4) Open the sendmail.ini and modify the settings to:

[sendmail]

; you must change mail.mydomain.com to your smtp server,
; or to IIS’s «pickup» directory.  (generally C:InetpubmailrootPickup)
; emails delivered via IIS’s pickup directory cause sendmail to
; run quicker, but you won’t get error messages back to the calling
; application.

smtp_server=mail.yourdomain.com

; smtp port (normally 25)

smtp_port=25

; the default domain for this server will be read from the registry
; this will be appended to email addresses when one isn’t provided
; if you want to override the value in the registry, uncomment and modify

default_domain=yourdomain.com

; log smtp errors to error.log (defaults to same directory as sendmail.exe)
; uncomment to enable logging
; error_logfile=sendmail_error.log

; create debug log as debug.log (defaults to same directory as sendmail.exe)
; uncomment to enable debugging
; debug_logfile=sendmail_debug.log

; if your smtp server requires authentication, modify the following two lines

;auth_username=
;auth_password=

; if your smtp server uses pop3 before smtp authentication, modify the
; following three lines

pop3_server=mail.yourdomain.com
pop3_username=you@yourdomain.com
pop3_password=mysecretpassword

; to force the sender to always be the following email address, uncomment and
; populate with a valid email address.  this will only affect the «MAIL FROM»
; command, it won’t modify the «From: » header of the message content

force_sender=you@yourdomain.com

; sendmail will use your hostname and your default_domain in the ehlo/helo
; smtp greeting.  you can manually set the ehlo/helo name if required

hostname=

The optional error and debug logging is recommended when trying this the first time, so you have a clue what goes wrong in case it doesn’t work.
Force_sender is also optional, but recommended to avoid confusion on the server end.
Obviously mail.yourdomain.com, you@yourdomain.com, and mysecretpassword should be the relevant info for your SMTP server.
Now restart the WAMP services (mainly Apache so PHP re-reads it’s config).

Now you’re good to go and use the PHP mail() statement as if you’re a Unix user …

Автор

Елена имеет профессиональное техническое образование в области информационных технологий и опыт программирования на разных языках под разные платформы и системы. Более 10 лет посвятила сфере веб, работая с разными CMS, такими как: Drupal, Joomla, Magento и конечно же наиболее популярной в наши дни системой управления контентом – WordPress. Её статьи всегда технически выверены и точны, будь то обзор для WordPress или инструкции по настройке вашего VPS сервера.

источник

Внесение настроек в файл php.ini

После создания файла php.ini в директории ./domains/domain.tld/phpXX-bin можно приступить к его редактированию. Если Вам требуется внести какие-либо параметры, то их следует прописать в следующем формате:

параметр_1 = Xпараметр_2 = Y

Например:

memory_limit = 64Mmagic_quotes_gpc = off

Отключение одной из настроек можно выполнить знаком «;» перед строкой с параметром (например: ;magic_quotes_gpc=off), либо удалением этой строки.

Зачастую в CMS уже внесены параметры в файл .htaccess в виде опций php_value и php_flag. Например:

php_value memory_limit 64M

Внесение параметра в php.ini нужно производить в указанном выше формате этого файла, т.е. для данного примера формат записи изменится на:

memory_limit = 64M

Если у Вас еще остались вопросы по использованию файла php.ini у нас на хостинге, то мы всегда готовы ответить на них.

Выбор хостинг-провайдера

Итак, вы решили купить услугу VDS. Как же следует выбирать провайдера. Начать следует с географии — где территориально будет располагаться ваш сервер.

Германия — плюсы: дешевые тарифы, быстрые каналы, безлимитный трафик, минусы — достаточно большая задержка до России — примерно 80мс, очень серьезно относятся к торрент трекерам, торрент клиентам, варезу и т.п.Голландия, Канада — то же самое то и Германия, но немного дороже, но основной плюс — законодательство которое лояльнее относится к различным видам хранимой и передаваемой информации, за которую у нас по голове не гладят.

США — в большинстве своем считают трафик, большие пинги до России — в общем, не самый лучший вариант.Россия, Украина — минимальные задержки до Российской аудитории, в большинстве случаев псевдобезлимитный трафик (снижение скорости после определенного порога или необходимость соблюдать пропорции входящегоисходящего Российскогозарубежного трафика), не самые надежные дата центры — практически в каждом периодически случаются массовые отключения сервиса на несколько часов, несмотря на три независимых электроввода, резервирование каналов интернет и дизель-генераторы.

Выбор типа виртуализацииЕсли позволяют ресурсы, то это однозначно KVM или XEN. Но не у всех провайдеров доступны эти типы виртуальных машин, да и денег оно стоит немного больших, нежели OpenVZ. Поэтому если ваш проект это некий сайтдвадесять с невысокой посещаемостью (примерно до 10000 уникальных хостов в день) иили какой-нибудь ICQ чат, то OpenVZ для вас будет вполне достаточно.

Ну а если требуется выполнять какие-либо более ресурсоемкие задачи, такие как размещение игровых серверов или видеочаты лучше выбрать XEN | KVM, также эти типы виртуализации стоит выбирать, если есть необходимость создания VPN-туннелей. Здесь VPN поднять проще, чем на OpenVZ.

Где находятся настройки версий php в ispmanager

Если на вашей услуге хостинга установлена панель управления ISPmanager, вы можете хранить настройки PHP отдельно для каждого домена, даже если эти домены используют одну и ту же версию PHP. Либо вы можете использовать общую версию PHP и её настройки для всех доменов.

Когда вы добавляете домен в панели управления ISPmanager, по умолчанию включается опция php.ini для домена. Если эта опция включена, настройки PHP будут храниться для каждого нового домена отдельно по пути /var/www/php-bin/имя-домена/php.ini.

Чтобы настройки общей версии PHP действовали сразу для всех доменов, при добавлении домена в панель ISPmanagerНЕ отмечайте галочку php.ini для домена. Настройки будут храниться по пути /var/www/php-bin-php(номер-версии-PHP)/php.ini.

Грамотная настройка сервера отправки почты для скриптов php, настройка функции mail()

В этом топике вы узнаете, как грамотно настроить, сервер исходящей почты и в частности функцию mail() в PHP. Сам являюсь жутким педантом. Люблю, что бы везде было все на своих местах, не терплю халтуры. Увидев один раз полную чушь в заголовках письма со своего сервера я разобрался с этим кардинально и безоговорочно. Под грамотной настройкой я подразумеваю такую, которая удовлетворяет потребности спам фильтров крупных почтовых систем, и просто выглядело красиво и осмысленно.
PHP: Почта - Manual

Как известно протокол SMTP не подразумевает никаких средств защиты от спама и аутентификации пользователя, поэтому крупными и не очень компаниями были придуманы «фиксы» безопасности протокола.

Если вы устанавливаете выделенный сервер с доменом размещенным на нем, очень рекомендуется выполнить данные настройки, что бы все было как надо.

На изучение этого вопроса я потратил немало времени, разобравшись в каждом заголовке. Начал с базовой настройки из пакетов, при этом из предоставляемых пакетов выбрал, то что понравилось, а закончил тонким феншуем, который я так до конца не воплотил, ибо это уже было совсем изыск.

Название заголовка выбрал именно такое, так как вначале своего пути я искал что-то вроде этого. Настраивать будем postfix, php, dns (ptr, spf), и другое.

Эта статья будет интересная людям, настраивающим выделеные сервера, но не менее интересна для обычных программистов.

Добавление сайтов

Для добавления сайтов на ваш хостинг нужно сделать две вещи — во-первых, разместить файлы сайта с нужными правами на вашем сервере, а во-вторых создать конфиг апача для сайта. Кроме этого чаще всего потребуется создать БД и настроить права доступа к ней — но это тривиальная операция, поэтому рассматривать её не будем.

Для размещения файлов нужно из-под root создать каталог сайта в папке нужного ‘аккаунта’. Например:

mkdir /var/www/42/sites/deep-thought.net

Дальше выставить желаемые права. Как минимум у SFTP пользователя, который будет работать с этим каталогом, должны быть права на запись. К примеру, можно сделать так:

chown marvin:www-data /var/www/42/sites/deep-thought.net
chmod 0750 /var/www/42/sites/deep-thought.net


Ок, теперь пользователь может зайти и залить файлы сайта. Осталось настроить апач. Для этого, как всегда, создаём файл настроек в директории

/etc/apache2/sites-available

. Содержимое этого файла для сайта

deep-thought.net

с данными в каталоге

/var/www/42/sites/deep-thought.net

должно быть примерно таким:

Есть ли возможность редактирования файла php.ini?

PHP исполняется как модуль apache, при этом php.ini один для всех клиентов виртуального хостинга на определённом сервере. Большинство необходимых параметров можно изменять через .htaccess. Более подробно об этом можно прочитать здесь. 

При необходимости можно перевести работу сайта в режим CGI. Сделать это можно в разделе «Сайты», кликнув по значку PHP справа от нужного сайта. Там же можно указать нужные директивы PHP — они будут добавлены в виртуальный хост вашего домена.

Изменения конфигурации php с помощью php.ini и phpinfo()

Если вы занимаетесь разработкой на WordPress, то столкнетесь с необходимостью внести изменения в PHP-среду. Поэтому нужно иметь некоторое представление о файле php.ini, чтобы справиться с ней.

Есть еще один замечательный инструмент, который должен быть у вас под рукой — это функция php info(). Например, чтобы найти файл php.ini, который нужно изменить.

Функция phpinfo() проста в использовании. Создайте PHP-файл на своем сервере и разместите в нем вызов этой функции:

Затем заходите на эту страницу через браузер. И все.

На приведенном выше скриншоте показан первый блок данных, который выводится при вызове функции localhost info php. Большинство из этих данных для меня, если честно — шум. Но пятая строка очень важна: она сообщает, какой файл конфигурации PHP загружен — в нашем случае это /etc/php5/fpm/php.ini. Строка помечена как “Loaded Configuration File”. Если нужно изменить настройки сервера, предоставившего эту страницу, нужно редактировать этот файл.

PHP имеет ряд настраиваемых параметров. Он также имеет расширения или «плагины», которые имеют отдельные параметры. Большинство из них содержится в «конфигурационных файлах» с расширениями .ini. Википедия сообщает нам, что префикс был получен от сокращенной версии “initialization” . В любом случае эта конвенция распространяется и на PHP.

Подобные файлы очень похожи. Они включают в себя ряд значений, установленных в строках. Например:

Что отличает хороший INI-файл от плохого, так это то, насколько полезны и понятны комментарии. В этом отношении php.ini отличается в лучшую сторону. В нем содержится множество комментариев, которые помогут разобраться, прежде чем устанавливать значения:

Все, что размещено в php.ini после точки с запятой (;), не обрабатывается, а рассматривается как комментарий. Объявления, похожие на строку memory_limit, закомментированы. Если значение не указано, удалено или закомментировано, то PHP использует значение по умолчанию.

Лично мне регулярно приходится сталкиваться со значениями php info файла для max_execution_time, memory_limit, upload_max_filesize и post_max_size. Существуют сотни значений, которые устанавливаются в файле php.ini и файлах различных расширений, с которыми работает PHP. Но только с этими четырьмя параметрами мне регулярно приходится иметь дело. Краткое описание каждого из них:

  • max_execution_time — определяет, как долго PHP-скрипт будет исполняться до того, как он будет принудительно остановлен. По умолчанию, это примерно 30 секунд, поэтому один плохой скрипт не может заблокировать весь сервер. Я увеличиваю это значение, чтобы скрипты могли выполняться немного дольше тридцати секунд. Просто имейте в виду, что при этом увеличивается риск случайного или злонамеренно запуска продолжительного скрипта;
  • memory_limit – с помощью этого параметра php info file можно разрешить процессу потреблять больше памяти сервера. Это опасно, если один из запросов пользователей начинает использовать больше ресурсов, чем следует. Но это бывает полезно при использовании специализированных плагинов для кэширования страниц;
  • upload_max_filesize и post_max_size настолько похожи, что я объединил их в один пункт. Если необходимо обеспечить возможность принимать файлы размером в сотни мегабайт, вам придется повозиться с этими значениями. Увеличение этих значений может повысить потребление ресурсов сервера. post_max_size влияет на общий допустимый размер HTTP-запросаPOST, а upload_max_filesize – на максимальный размер любого отдельного файла, который должен принять PHP. Мне часто приходится менять значение этих параметров, чтобы разрешить отправку большого файла в одном POST-запросе. Я всегда задаю для них одинаковые значения.

php.ini — это файл конфигурации, и поскольку он часто размещается на сервере, можно столкнуться с несколькими проблемами. Например, отсутствие доступа к файлу с помощью обычных удобных инструментов или возможности сохранить внесенные изменения:

Открытие без sudo приводит к выводу предупреждения о запрете на запись и невозможности сохранить изменения
Для редактирования nano — лучший текстовый редактор. Все его горячие сочетания клавиш прописаны на экране. Поэтому я часто редактирую файл php.ini на удаленном сервере с помощью команды:

Я использую nano, чтобы открыть файл php info по адресу /etc/php5/fpm/php.ini.

Что такое sudo? На хорошо настроенном сервере обычные пользователи не могут изменять файлы конфигурации. sudo — это способ, с помощью которого можно временно запрашивать права доступа уровня «администратор» или «супер пользователь» (sudo — это сокращение от «super user do».) Таким образом можно будет сохранить файл php.ini из nano. Без этого вы, вероятно, не сможете изменить этот файл.

В файле php.ini содержится много других параметров. Вы можете увидеть почти все из них, запустив команду phpinfo(). Но в основном требуется изменить только небольшой набор значений. Все остальное я оставляю на усмотрение мудрых разработчиков PHP и других экспертов по конфигурации промежуточного сервера. Но мне нравится понимать то, как они работают и как работать с ними. Надеюсь, это руководство оказалось полезным для вас. Всего наилучшего!

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

Как включить/выключить глобальные переменные?

В корне Вашего аккаунта есть файл .htaccess – файл дополнительной конфигурации веб-сервера Apache. Если такого файла нет, Вы можете создать его. Для включения глобальных переменных в него надо добавить строку:

php_flag register_globals on

Для выключения глобальных переменных:

php_flag register_globals off

Подробнее о файле .htaccess читайте здесь.

Как запустить задание в crontab, используя определенную версию php?

В задании необходимо прописать путь до интерпретатора PHP нужной версии. Например, для версии PHP 5.2 путь на сервере будет такой:

/usr/local/php-cgi/5.2/bin/php

Остальные версии:

/usr/local/php-cgi/5.3/bin/php
/usr/local/php-cgi/5.4/bin/php
/usr/local/php-cgi/5.5/bin/php
/usr/local/php-cgi/5.6/bin/php

В разделе «Crontab» задание должно выглядеть примерно так:

Как это будет работать

Все пользователи, которым нужно получить доступ к файлам на сервере, будут иметь локальную учётную запись с возможностью захода только по

SFTP

и только в папку с принадлежащими им сайтами. При этом будет поддерживаться авторизация как по паролю, так и по ключу. Интерактивный же вход по SSH будет невозможен, хотя если очень надо — его можно будет включить, причём тоже с закрытым доступом к системным файлам.

Никакого FTP не будет, хотя его и возможно легко прикрутить. SFTP надёжней (шифрование, возможность авторизации по ключу), а FTP в данном случае элементарно избыточен и является достаточно большой потенциальной дырой в безопасности.

Каждый сайт будет принадлежать некоему ‘аккаунту’, т.е. под одним ‘аккаунтом’ может быть несколько сайтов. К этим ‘аккаунтам’ привязываются SFTP пользователи, причём никто не мешает к одному ‘аккаунту’ привязать несколько пользователей. Дальше, внутри ‘аккаунта’, всё можно будет разрулить стандартными механизмами прав доступа в Linux.

Меняем часовой пояс и имя пк

Если вы устанавливаете Ubuntu на выделенный сервер сами, то языковые и географические параметры системы вы задаете в ходе установки, но в случае с VDS у провайдера есть уже готовый образ системы, который он раскатывает на ваш сервер. И всем нам приятней видеть правильное для нашего часового пояса время на сервере.• Итак, установим часовой пояс, для этого в консоли выполним команду

dpkg-reconfigure tzdata

• Появится псевдографический интерфейс в котором мы выберем наше расположение.

• Если вдруг (ни разу еще такого не видел) есть расхождения по датевремени, то выполним следующую команду, в которую подставим текущие дату и время

hwclock --set --date=”11/24/2022 16:19:55"

• Чтобы изменить имя сервера, откроем файл /etc/hostname и заменим содержимое на желаемое имя сервера.

Настройка sftp


Настройка

SFTP

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

www-data

мы сделаем так, чтобы при заходе по SFTP они попадали сразу в папку

sites

‘аккаунта’, в котором находится их HOME директория, без возможности выбраться выше по дереву каталогов.

Делается это просто. Достаточно в конец файла /etc/ssh/sshd_config дописать код

# Специальный доступ для пользователей из www-data: chroot в их HOME,
# установленный umask 007, соответствующий 0660 для файлов и 0770 для каталогов
Match Group www-data
        AllowTCPForwarding no
        X11Forwarding no
        ChrootDirectory %h/../../sites
        ForceCommand internal-sftp -u 0007

И ткнуть sshd для обновления конфигурации:

service ssh reload

Этот кусочек кода для всех пользователей из группы www-data, во-первых, отключает TCP и X11 форвадинг (им незачем иметь доступ в вашу локалку). Во-вторых делает для них при заходе chroot в sites папку их ‘аккаунта’ (именно для этого нам нужно было делать sites папки доступными для записи только для root — иначе не работает chroot).

umask007

. То есть права по умолчанию на новые файлы будут

0660

, а на каталоги —

0770

Настройка vds сервера

Используя виртуальный хостинг, соответственно Вы попадаете в определенные ограничения по использованию ресурсов, при превышении которых выставляются предупреждения об ограничении работы и предлагается повысить тариф или начать работу по оптимизации сайта. Но как компенсация этого, в Вашем распоряжении есть административная панель, с помощью которой вы можете реализовать все функции по управлению сайтами.

Альтернативой виртуального хостинга является использование VDSVPS (Virtual DedicatedPrivate Server) — это, виртуальный выделенный или приватный сервер, который предоставляется хостинг провайдером в аренду заказчику.Чтобы не вводить в заблуждение, сразу отмечу, что разницы между аббревиатурами VPS и VDS нет никакой. Дело в том, что два этих понятия появились практически одновременно и параллельно развивались.

Что же такое VDS? Говоря простым языком, поставщик услуг на своем оборудовании, с помощью средств виртуализации разворачивает несколько виртуальных (программных) серверов. С точки зрения функциональности такой сервер ничем не отличается от физического, на него также устанавливаются операционная система и программное обеспечение, он также расположен в сети и управляется, как и остальные ПК, средствами удаленного администрирования. При этом данный сервер находится на удаленной площадке провайдера, которая защищена от сбоев и оптимизирована под работу 24/7/365. В свою очередь хостинг провайдер берет на себя все обязательства по обслуживанию и сопровождению оборудования и системы виртуализации. Но соответственно цену на эту услугу несколько выше чем на виртуальный хостинг.

Настройка загрузки файлов


В качестве протокола передачи файлов я предлагаю использовать

SSH FTP (SFTP)

. Во-первых, он безопаснее обычного ftp, так как данные будут передаваться в зашифрованном виде. Во-вторых, не придется устанавливать дополнительное ПО: все что нужно — ssh-сервер — у нас уже есть. А минусов практически никаких — все современные IDE и клиенты загрузки данных умеют работать с этим протоколом.

Чтобы определить, кому можно подключаться по sftp, создадим дополнительную группу пользователей, например,

sftp

sudo groupadd sftp

И активируем передачу данных, добавив в конец файла

/etc/ssh/sshd_config

строки:

Match Group sftp
	ChrootDirectory    %h
	ForceCommand       internal-sftp
	AllowTcpForwarding no

Настройка резервного копирования и ротации логов

Если вы всё сделали правильно, то у вас уже должно быть полностью настроенное окружение для запуска вашего проекта. Остаются два последних по списку, но не по значимости, шага — настройка резервного копирования и ротации логов. В качестве инструмента для создания бэкапов я рекомендую использовать backup-manager. На хабре есть

про него, поэтому подробно останавливаться на нём не будем.

Для осуществления ротации логов нам нужно всего лишь создать правильный конфиг для утилиты logrotate.

Отправка вложений по электронной почте

Чтобы отправить электронное письмо со смешанным контентом, необходимо установить для заголовка Content-type — multipart/mixed. Затем разделы текста и вложения могут быть указаны в пределах ограничителей.

Начальный ограничитель указывается двумя дефисами, за которыми следует уникальный номер, он не будет отображаться в электронном письме. Для создания уникального номера используется функция PHP md5(), которая генерирует 32-значное шестнадцатеричное число. Конечный ограничитель задает конец раздела электронного письма, он также указывается двумя дефисами.

Отправка обычного текстового сообщения

PHP использует функцию mail() для отправки электронной почты. Для этой функции необходимы три обязательных аргумента, в которых указывают адрес электронной почты получателя, тема электронного письма и само письмо, кроме того, имеются два других необязательных параметра.

Ниже приводится описание каждого аргумента.

После вызова функции mail, она попытается отправить электронное письмо, после этого она возвращает значение true, если письмо отправлено успешно, или false, если письмо не было отправлено. В качестве первого аргумента функции mail() могут быть указаны несколько получателей, их адреса указываются списком через запятую.

Подготовка файловой системы

Традиционно, файлы, относящиеся к веб-сайтам, размещаются в каталоге

/var/www/

. И мы не будем отступать от этого негласного правила. Создадим папку для виртуальных хостов и будущую точку монтирования быстрого кэша:

sudo mkdir -p -m 755 /var/www/data
sudo mkdir -m 777 /var/www/tmp

Затем укажем, что при следующей загрузке, в эту папку будет смонтирована tmpfs. Добавим в

/etc/fstab

tmpfs	/var/www/tmp/	tmpfs	defaults,noatime,nosuid,nodev,noexec,mode=1777,size=128M	0	0


Стоит заметить, что некоторые редакции HostCMS имеют встроенный алгоритм кеширования ответов в файлы. Если вы используете одну из таких редакций имеет смысл примонтировать tmpfs к директории кеша самой CMS.

Преамбула

Кто-то пользуется либами, которые заменяют функцию mail (например phpmailer), они могут общаться с SMTP напрямую, а могут отправлять и на локальный сервер. Но лучше использовать стандартную встроенную и настроенную функцию PHP mail() которая будет отправлять почту на локальный сервер исходящей почты, который в свою очередь будет с ней сам разбираться.

Статья отформатирована не самым лучшим образом. Извиняюсь, время поджимает, а рассказать хочется пока вспомнил, а то потом не времени будет.

Приступим

— СоветГоспода, я люблю ставить все пакетами и новичкам не советую заниматься самодеятельностью, во многих пакетах уже есть скрипты автоматической настройки, результаты которых надо только чутка подправить и все будет хорошо. Кроме того, из репозиториев оно само обновляется и вообще меньше запары просто потому что её меньше.

— Настройка PHPСтавим как хотим php, это вы как-нибудь без меня.

Идем в настройки php, заменяем эквивалентно:

Этим мы указали заголовок Return-Path:

Кстати 1: это будет таковым для всех виртуальных доменов сервера, что бы это исправить и настроить под текущий, то требуется передать 5-й параметр в функцию mail().

Кстати 2: если вы поставите 5-й параметр на обычном виртуальном хостинге, то вам тоже рекомендуется проводить настройку вашего домена, как это описано ниже. Обращаю внимание, что операцию с PTR записями сделать невозможно, так как 1 IP = Домен, ну или по крайней мере не рекомендуется делать их 2, не помню уже.

— Настройка MTA, он же локальный сервер исходящей почты Я вам искренне советую postfix, далее идем в настройки /etc/postfix/main.cf для тех, кто уже нарвался на sendmail, и понял как они трудно выпиливаются из системы, советую команду:

Проблемы с кодировкой

Иногда сообщения приходят в виде вопросов «?» или непонятных символов. От того насколько правильно оно будет перекодировано, зависит прочтет ли его получатель. При стандартных способах отправки php не учитывает кодировку. На эту тему на моем блоге уже была статья «UTF-8 и Windows 1251».

Сам контент сообщения может быть любой кодировки. Вся сложность заключается в заголовке From. По стандарту они должны быть в US-ASCII. Есть две формы кодирования —BASE64 и Quoted-Printable. Первая — более универсальная и работает с UTF-8, поэтому используете ее. Например,

источник

Создание ‘аккаунтов’ и системных пользователей

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

/var/www/ACCOUNT/

. В качестве ACCOUNT задействуем для примера

42

. Просто

42

. Ок, создаём папку:

mkdir /var/www/42


Кроме этого внутри аккаунта нам нужны каталоги

Тюнинг ssh: ключи и интерактивный вход

Для доступа пользователей SFTP по ключам нужно сделать всё тоже, что делается всегда: внутри HOME каталога создать директорию

.ssh/

, в ней файлик

authorized_keys

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

Кроме этого, можно некоторым пользователям открыть интерактивный доступ на сервер. Для этого нужно, во-первых, подготовить в корневой папке соответствующего ‘аккаунта’ нужное chroot окружение, как минимум с интерпретатором и всеми необходимыми виртуальными ФС. Делается это стандартно и ничего сложно в этом нет.

Дальше можно создать дополнительную группу для интерактивного входа. Например, ssh-interactive:

addgroup --gid 900 ssh-interactive

Добавить в неё нужных пользователей, попутно сменив им SHELL на полноценный bash:

Вместо заключения

Пожалуй, это всё, что я хотел сказать.

Возможно, кто-то сочтёт статью не слишком актуальной ввиду засилия панелей управления хостингом. Хотя, на мой взгляд, они хороши для массового предоставления услуг и совершенно не годятся, когда речь заходит о затачивании настроек сервера под конкретный проект.

Другие посчитают её немного сумбурной. Не исключено, что это и так: в статье я только попытался отразить свой путанный опыт в области серверного администрирования.

В любом случае, буду рад, если этот материал поможет кому-то. Замечания и дополнения приветствуются.

Оцените статью
Хостинги