![]() |
Здравствуйте, гость ( Авторизация | Регистрация )
![]() |
![]() Сообщение
#1
|
|
![]() Почетный ![]() ![]() ![]() ![]() ![]() ![]() ![]() Текущее настроение: ![]() Вст. ник | Цитата Группа: Супер Стар Сообщений: 3097 Регистрация: 29.12.2009 Пользователь №: 33839 Награды: 15 Подарки: 41 Пол: М Репутация: ![]() ![]() ![]() |
Ни думал, ни гадал, что когда-нибудь возьмусь за такое занятие. Во-первых, у меня не было идеи, о чём должен быть сайт. Во-вторых, я никогда не делал сайты, и у меня нет соответствующих навыков. Но тут у друга появилась идея для сайта, которая мне понравилась. А у меня начало появляться свободное время, которое нужно было использовать. Начинать что-то новое я никогда не боялся, поэтому решил начать. Тем более, что общие навыки программирования у меня есть. Сразу скажу: Идею сайта пока рассказывать не буду, не просите! Даже если просто поржать
![]() Честно говоря, я уже начал делать сайт, и есть кое-какие наработки. Можно было, конечно, не создавать эту тему, а просто продолжать делать своё дело. Но я человек ленивый, и если не с кем пообщаться на эту тему, то работоспособность у меня почему-то снижается. А если на форуме в теме будет с кем поговорить, то это дело должно стать более захватывающим для меня и пойти веселее ![]() Обычно я веду беседы совсем на другие темы, не связанные с техникой, что может стать неожиданностью для участников, знакомых со мной на форуме. В связи с этим я считаю необходимым сделать следующее предупреждение. ПРЕДУПРЕЖДЕНИЕ: В данной теме предполагается углубленное рассмотрение информационно-алгоритмических подробностей с использованием сложных и неоднозначных для обычных людей понятий, применяемых в этой области. Это способно вызвать у неподготовленного читателя состояние трудно-идентифицируемой дезориентации, во избежание чего, во время прочтения данной темы рекомендуется не пытаться осознать сразу всё, что написано, а также рекомендуется делать перерывы и пить больше жидкости. За психическое состояние читателей автор ответственности не несёт. Продолжение следует... -------------------- -------------------- Подарки: (Всего подарков: 41 ) |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
|
|
![]() |
![]() Сообщение
#2
|
|
![]() Почетный ![]() ![]() ![]() ![]() ![]() ![]() ![]() Текущее настроение: ![]() Вст. ник | Цитата Группа: Супер Стар Сообщений: 3097 Регистрация: 29.12.2009 Пользователь №: 33839 Награды: 15 Подарки: 41 Пол: М Репутация: ![]() ![]() ![]() |
Выяснилось, что не работают некоторые функции сайта. Оказалось, это потому, что сайт использует функции языка PHP, расположенные в отдельных модулях, и эти модули нужно установить. Я не стал разбираться, в каких модулях какие функции, а установил сразу несколько модулей, названия которых нашёл в Интернете.
Цитата php-mbstring php-curl php-gd php-memcache php-cli php-mcrypt То есть, установка выглядит следующим образом: Код apt install php-mbstring php-curl php-gd php-memcache php-cli php-mcrypt После чего перезапустил PHP:Код systemctl restart php7.0-fpm И все функции на сайте сразу же заработали.Кроме одной функции mail(), отправляющей электронное письмо. Вообще, отправкой электронных писем занимается почтовый сервер. Этот почтовый сервер может быть реальным сервером, а может быть программой, установленной на нашем сервере. Почитав советы по установке разных программ почтового сервера, решил попробовать обойтись без них. Как обойтись? Например, почтовый сервис Yandex предлагает абсолютно бесплатно подключить наши домены к их серверу. То есть, к своему уже имеющемуся аккаунту на yandex (например, ivan@yandex.ru) подключаете свой домен, например, site1.ru, настраиваете его, заводите там почтовые ящики, например: admin@site1.ru, support@site1.ru, ivan@site1.ru. И все письма, направленные на эти ящики, будут приходить на серверы yandex. Отправлять свои письма тоже можно будет с сервиса yandex, но от имени почтовых ящиков своего домена: ivan@site1.ru, support@site1.ru и т.д. И создать таких ящиков на Яндексе я могу до тысячи штук. Очень удобно. И самое главное — не нужно запускать на своём сервере программу почтового сервера. Получается, что сайты site1.ru, site2.ru, расположены на нашем сервере, а почтовые ящики ...@site1.ru, ...@site2.ru расположены на серверах yandex. Такой подход удобен тем, что если вдруг наш сервер по каким-то причинам перестал работать, то независимо от этого, наша почта будет работать, т.к. она расположена на Яндексе. И всем нашим клиентам, написавшим нам письма с беспокойством о сайте, мы сможем ответить, успокоив их, что скоро всё будет. Рассказывать подробно о подключении доменов к Яндексу я не буду, т.к. Яндекс об этом уже рассказал вот здесь: https://yandex.ru/support/pdd/about.html. А сам сервис "Почта для домена" находится здесь: https://pdd.yandex.ru/ После того, как домены к Яндексу подключены и почтовые ящики созданы, нужно установить на наш сервер программу, которая будет подключаться к почтовому серверу Яндекс, чтобы отправлять письма. Для этого есть разные программы, но я выбрал программу ssmtp. Устанавливаем её: Код apt install ssmtp Теперь настраиваем файл /etc/ssmtp/ssmtp.conf. Удаляем оттуда всё полностью и добавляем следующие строки:Код root=support@site1.ru Сохраняем изменения. Теперь редактируем второй файл /etc/ssmtp/revaliases. Тоже удаляем оттуда всё и вставляем строки:mailhub=smtp.yandex.ru:465 UseTLS=Yes AuthUser=support@site1.ru AuthPass=MyPassword1234 hostname=localhost FromLineOverride=Yes Код root:support@site1.ru:smtp.yandex.ru:465 Сохраняем изменения. Теперь нужно сделать так, чтобы PHP знал, что для отправки письма нужно запускать именно программу ssmtp. Открываем файл /etc/php/7.0/fpm/php.ini, находим там строку:kamikadze9705:support@site1.ru:smtp.yandex.ru:465 www-data:support@site1.ru:smtp.yandex.ru:465 Код sendmail_path = И исправляем её так, чтобы получилось:Код sendmail_path = /usr/sbin/ssmtp -t Сохраняем изменения. Перезапускаем PHP:Код systemctl restart php7.0-fpm И пробуем отправить тестовое письмо через PHP. Для этого в корне сайта site1.ru (в каталоге /var/www/site1.ru) создаём файл sendmail.php, и пишем в нём:Код <?php То есть, мы пытаемся с ящика support@site1.ru отправить письмо на ящик support@site2.ru.if (mail("support@site2.ru", "Тема письма", "Текст письма", "support@site1.ru")) echo "Письмо отправлено" else echo "Ошибка при отправке письма. Письмо не отправлено"; ?> Сохраняем файл. И запускаем его через браузер, введя в адресной строке: Код https://site1.ru/sendmail.php Если в браузере на странице появилась надпись "Письмо отправлено", то проверяем ящик support@site2.ru на наличие пришедшего письма. Если всё было сделано правильно, то письмо придёт. Однако, если мы попробуем указать в качестве ящика отправителя не support@site1.ru, а любой другой ящик, то Яндекс откажется отправлять такое письмо. Адрес отправителя в письме должен точно совпадать с адресом на данном аккаунте, иначе, пользователь, получивший письмо, будет обманут. И в этом обмане будет участвовать Яндекс, отправивший такое письмо. На месте Яндекса я тоже отказался бы участвовать в таком обмане, ибо мало ли кто и для чего это использует. То есть, с помощью программы ssmtp мы можем отправлять письма только с одного выбранного ящика. И такой способ хорошо подходит для сервера с одним сайтом. Но на нашем сервере два сайта: site1.ru и site2.ru. Эти два сайта в реальной жизни могут иметь совершенно разные адреса. Например, первый сайт у нас shkola-57.ru, а второй — online-porno.ru. И если пользователь, зарегистрировавшийся на сайте Школы №57, получит письмо с ящика mail@online-porno.ru, то это будет выглядеть очень странно. Поэтому для серверов с несколькими сайтами такой способ отправки писем не подходит. До установки программы ssmtp мне это не было известно, т.к. я делаю это впервые. По всей видимости, всё-таки придётся устанавливать для отправки писем свой почтовый сервер, который мы настроим так, чтобы он разрешал отправлять письма с ящиков разных отправителей. Попробуем сделать это в следующий раз.Продолжение следует... -------------------- -------------------- Подарки: (Всего подарков: 41 ) |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
|
|
![]() ![]() |
Текстовая версия | Сейчас: 16.06.2025 - 7:40 |