Установка в Ubunutu 20 и LAMP (Apache 2.4 , PHP 7.0 (mod or FastCGI) и Mysql 5.7.) + SSH+ FTP (proftpd)+Mailserver Postfix

Лекция



Привет, Вы узнаете о том , что такое установка lamp, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое установка lamp, lamp, fastcgi , mysql, ssh, ftp, proftpd, mailserver, postfix , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend) .

Ясно, что изучение PHP (и не только PHP) должно подкрепляться практикой.

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

Для этого необходимо установить и настроить минимальный набор LAMP.

LAMP — акроним, обозначающий набор (комплекс) серверного программного обеспечения, широко используемый во Всемирной паутине. LAMP назван по первым буквам входящих в его состав компонентов:

  • Linux — операционная система Linux;
  • Apache — веб-сервер;
  • MariaDB / MySQL — СУБД;
  • PHP — язык программирования, используемый для создания веб-приложений (помимо PHP могут подразумеваться другие языки, такие как Perl и Python).

Акроним LAMP может использоваться для обозначения:

  1. Инфраструктуры веб-сервера;
  2. Парадигмы программирования;
  3. Пакета программ.

Сейчас речь пойдет об установке Apache и PHP на Linux Ubunutu

Установка в  Ubunutu 20 и LAMP (Apache 2.4 , PHP 7.0 (mod or FastCGI)  и Mysql 5.7.) + SSH+ FTP (proftpd)+Mailserver Postfix

1. Итак, сначала установим Apache 2.4.

Обновите свою систему, введя следующие команды:

$ sudo apt update
$ sudo apt upgrade

затем,
apt-get -y install apache2

проверка

введите в адресную строку браузера http://192.168.1.10 - где ип - это локальный ип на котором вы устанавливаете апач

при этом должно повится такая картинка

Установка в  Ubunutu 20 и LAMP (Apache 2.4 , PHP 7.0 (mod or FastCGI)  и Mysql 5.7.) + SSH+ FTP (proftpd)+Mailserver Postfix

Включение для веб-сайт SSL в Apache

SSL / TLS является протоколом безопасности для шифрования соединения между веб-браузером и сервером. Выполните следующие команды на сервере, чтобы включить https: // поддержку.

a2enmod ssl
a2ensite default-ssl

которая позволяет модулю Ssl и добавляет символические ссылки в / и т.д. / apache2 / сайты с поддержкой папку в файл /etc/apache2/sites-available/default-ssl.conf, чтобы включить его в активную конфигурацию Apache. После этого перезапустите Apache, чтобы включить новую конфигурацию:

systemctl restart apache2

После этого SSL соединение станет доступным по адресу https://192.168.1.10 в web браузере.

Установка в  Ubunutu 20 и LAMP (Apache 2.4 , PHP 7.0 (mod or FastCGI)  и Mysql 5.7.) + SSH+ FTP (proftpd)+Mailserver Postfix

2. Установка PHP.

Мы можем установить PHP 7 и Apache следующим образом:

1) apt install php7.0

потом

2) Установим все нужные модули

apt-cache search php7.0

apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext

3) Затем настроим взаимодействие апача с PHP

3.1)если вы хотите, чтобы PHP работал как модуль Apache , то

apt install libapache2-mod-php7.0. Все остальное можно пропусить, до перезагрузки апача (3.6)

3.2) если как FAST CGI - то

apt install php7.0-fpm (установка FastCGI php модуля)

apt install libapache2-mod-fastcgi

3.3 выбор Модуля мультипроцессовой обработки (MPM - Multi-Processing Module)

3.3.1 apt install apache2-mpm-worker (для linux)

3.3.2 (или apt-get install apache2-mpm-prefork)(для linux)

3.4 Включение нужных модулей через файлы конфига для apache

a2enmod rewrite 
a2enmod actions alias

a2enmod proxy_fcgi (а - лучше) или a2enmod actions fastcgi (б)

3.5 Настройка FastCGI
3.5.1 если PHP+Apache взаимодействуют через FastCGI (и установлен модуль proxy_fcgi) (а - лучше)

то скопируйте файл конфига из доступных
File: /etc/apache2/conf-available/php7.0-fpm.conf
в задействованный
/etc/apache2/conf-enambled/php7.0-fpm.conf

примерное создержание конфигурации

# Redirect to local php-fpm if mod_php is not available



# Enable http authorization headers

SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1


SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost"


# Deny access to raw php sources by default
# To re-enable it's recommended to enable access to the files
# only in specific virtual host or directory
Require all denied

# Deny access to files without filename (e.g. '.php')

Require all denied

3.5.2 если PHP+Apache взаимодействуют через FastCGI  
( и установлен модуль fastcgi ) (б)

конфиг примерный - в конкретной версии нужно его уточнять

DocumentRoot "/etc/apache24/php70"
ServerName mysqrver.localhost
FcgidInitialEnv PHPRC "/etc/php70"
FcgidInitialEnv PATH "/etc/php70; и другие нужные папки;"
AddHandler fcgid-script .php
FcgidWrapper "/etc/php70/php-cgi" .php

"

3.6 настраиваем php.ini и user.ini

создайте файл .user.ini в корне нужного сайта для кастомной пхп настройки

для этого сначала в файле

/etc/php/7.0/fpm/php.ini

;;;;;;;;;;;;;;;;;;;;
; php.ini Options ;
;;;;;;;;;;;;;;;;;;;;
; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini"
user_ini.filename = ".user.ini"
расскоментируйте
zend_extension=<path_to_zend_debugger>
zend_extension=<path_to_zend_optimizer>
[xdebug]
zend_extension="<path to xdebug extension>"
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port="<the port (9000 by default) to which Xdebug connects>"

xdebug 3 или

[xdebug]
zend_extension="<path to xdebug extension>"
xdebug.mode=debug
xdebug.client_host=127.0.0.1
xdebug.client_port="<the port (9003 by default) to which Xdebug connects>"

затем создайте файл .user.ini в корне сайта

[PHP]

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;

max_execution_time = 300
max_input_time = 600
;max_input_nesting_level = 64
max_input_vars = 10000
memory_limit = 1280M
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

error_reporting = E_ALL
display_errors = On
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

file_uploads = On
;upload_tmp_dir =
upload_max_filesize = 128M
max_file_uploads = 200
post_max_size= 128M
;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;

default_socket_timeout = 60


 

3.7 Затем перезапустите Apache:

systemctl restart apache2

Если php не как модуль apache , то php нужно еще перезагружать отдельно

service php7.0-fpm restart

3.8 установка версии пхп по умолчанию

если у вас на одном сервере установлено несколько версий пхп то выбрать по умолчанию для консольных коман можно с помощью

пример проверить текущую версию по умолчанию

update-alternatives --display php
php - автоматический режим
link best version is /usr/bin/php8.0
ссылка сейчас указывает на /usr/bin/php8.0
link php is /usr/bin/php
slave php.1.gz is /usr/share/man/man1/php.1.gz
/usr/bin/php7.0 — приоритет 70
подчиненный php.1.gz: /usr/share/man/man1/php7.0.1.gz
/usr/bin/php7.3 — приоритет 73
подчиненный php.1.gz: /usr/share/man/man1/php7.3.1.gz
/usr/bin/php8.0 — приоритет 80
подчиненный php.1.gz: /usr/share/man/man1/php8.0.1.gz

установить

update-alternatives --set php /usr/bin/php7.4
update-alternatives --set phar /usr/bin/phar7.4
update-alternatives --set phar.phar /usr/bin/phar.phar7.4
update-alternatives --set phpize /usr/bin/phpize7.4
update-alternatives --set php-config /usr/bin/php-config7.4

3.8 Тестирование PHP и получение подробной информации о вашей установке PHP

запустите nano /var/www/html/info.php введите и сохраните в файле

phpinfo();
 
измените права и владельца  на доступ к фалу 

chown www-data:www-data /var/www/html/info.php

теперь конфиг доступен по адресу http://192.168.1.10/info.php

Установка в  Ubunutu 20 и LAMP (Apache 2.4 , PHP 7.0 (mod or FastCGI)  и Mysql 5.7.) + SSH+ FTP (proftpd)+Mailserver Postfix

если Server API FPM/FastCGI , то у вас установлен FastCGI

если Apache 2.0 Handler, то вероятно интерпритатор установлен как модуль

3.Установка базы данных MySQL или (MariaDB )


3.1 установка MariaDB

В терминале вводим команду: s

apt-get -y install mariadb-server mariadb-client

Теперь мы устанавливаем рутовый пароль для MariaDB.

mysql_secure_installation

Вам будет предложено ответить на эти вопросы:

Enter current password for root (enter for none): <- нажмите клавишу ВВОД
Set root password? [Y/n] <-- y
New password: <- Введите новый пароль MariaDB корень здесь
Re-enter new password: <- Повторите пароль
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

Проверьте логин к MariaDB с "MySQL командой"

mysql -u root -p


Если вы хотите чтобы другие компьютеры с вашей локальной сети могли видеть ваш сервер mysql,
выполните команду sudo gedit /etc/mysql/my.cnf. Об этом говорит сайт https://intellect.icu . Откроется файл конфигурации MariaDB Mysql.

В нем следует найти строку bind-address = 127.0.0.1 и заменить
в ней 127,0,0,1 на IP адрес этого компьютера. Для этого компьютер должен располагать постоянным
IP адресом. Обратитесь по этому вопросу к вашему сетевому администратору или почитайте
о настройке DHCP для вашего домашнего роутера.

если нужно разрешить доступ с любого ип то установите 0.0.0.0

так же если будет ошибка SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column '.*' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

то нужно влючить старый режим для группировок нарушающий стандарт SQL sql_mode =''

так же если нужно то влючить евент шедулер event_scheduler = 1

в итоге все насройки выглядят так

[mysqld]

user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

bind-address = 0.0.0.0

key_buffer_size = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8

myisam-recover-options = BACKUP
max_connections = 20000

sql_mode ='' #для отключения режима жесткй проверки стандарта SQL Group BY

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #36 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'database.blk.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by


transaction-isolation = READ-UNCOMMITTED
event_scheduler = 1

slow_query_log = 1
slow_query_log_file = /var/www/slow_sql.log
long_query_time = 5

если нужно изменить пароль рута то

логинемся mysql -u root -p

меняем пароль SET PASSWORD = PASSWORD('xxxxxxxx');

1. для того чтобы дать доступ руту извне нужно сохздать пользователя root@%

2. и дать ему полный права на все базы данных

REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' REQUIRE NONE WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

(но настоятельно это не рекомендуется в целях безопасности)

3.2 Если же вы хотите установить именно Mysql 5.7 на Ubuntu 16.04, то

Введите команду:


$ sudo apt install mysql-server mysql-client

Вам необходимо ввести пароль для рутового пользователя MySQL

Установка в  Ubunutu 20 и LAMP (Apache 2.4 , PHP 7.0 (mod or FastCGI)  и Mysql 5.7.) + SSH+ FTP (proftpd)+Mailserver Postfix

Запустите mysql_secure_installation, чтобы обеспечить дополнительную безопастность

(будьте внимательны к настройкам - если не знаете заем они то лучше не используйте жту утилиту)

необходимо выполнить следующую команду:
$ sudo mysql_secure_installation

3.3 Во время установки mysql возможно спросит пароль для root пользователя, а потом ввод данных в терминал будет начинаться со строки mysql>.Если это произошло, пропустите следующие два шага.

3.4. Выполните в терминале команду mysql -u root и вам предложат ввести пароль пользователя root. Если вы его не указывали при установке, просто нажмите enter.

3.5 . Ввод в терминале будет теперь начинаться со строки mysql> . Это значит что дальнейшие команды выполняет не операционная система, а база данных.
Тут можно выполнять такие команды как SELECT и любые другие.

Нам следует установить пароль для администратора root командой
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('ваш пароль');

3.7. Пользоваться root' ом в своих скриптах не стоит.. опасно. О том какой командой создать нового пользователя отлично рассказали создатели mysql по этому адресу.
Убедитесь только что команды вы по прежнему отправляете базе данных, а не операционной системе.

если нужно разрешиить подьзователю root доступ с любого хоста то (но это небузопасно)

логинемся mysql -u root -p

CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password AS '***'; GRANT USAGE ON *.* TO 'root'@'%' REQUIRE NONE;

так же проверьте порт и разрешение подключения с любого ип

bind-address = 0.0.0.0 в файле конфига

4. Установка PHPMYADMIN

PhpMyAdmin является веб - приложением, с помощью которого вы можете управлять вашими базами данных MySQL

apt-get -y install phpmyadmin

You will see the following questions:

Web server to configure automatically: <- Выберите опцию: apache2
Configure database for phpmyadmin with dbconfig-common? <-- Yes
MySQL application password for phpmyadmin: <-- Нажмите ввод, apt создаст случайный пароль автоматически.

После этого вы можете получить доступ через бруузер к phpMyAdmin по адресу http://192.168.1.10/phpmyadmin/:

Установка в  Ubunutu 20 и LAMP (Apache 2.4 , PHP 7.0 (mod or FastCGI)  и Mysql 5.7.) + SSH+ FTP (proftpd)+Mailserver Postfix


5. финальные настройки, например установка nginx


Мне никогда не нравилось где там нужно хранить свои php скрипты по умолчанию.
Я всегда настраивал домашнюю директорию на /home/название_сайта/www/
Делать это не сложно и можно отредактировав конфигурационный файл

Перезапускаем веб сервер: sudo /etc/init.d/apache2 restart

systemctl restart apache2

Обратите внимание что PHP Apache2 могут по разному взаимоействовать

PHP как модуль Apache

PHP через FastCGI с Apache (или Nginx) или (Apache и Nginx)

при этом апач может работать в трех режимах event , preworker, fork

и конфиги могут формироваться a2enmod fastcgi или a2enmod proxy_fcgi

6. установка ftp (proftpd)

если нужно установить и настроить фтп то

1.1. устанавливаем proftpd
apt-get -y install proftpd openssl
запускаем proftpd: <-- standalone

1.2. редактируем /etc/proftpd/proftpd.conf


[...]
DefaultRoot ~
ServerIdent on "FTP Server ready."
[...]

1.3. создаем FTP пользователя

useradd --shell /bin/false omftp (создаем и запрещаем вход через ssh на терминал )

mkdir /home/omftp (если нужно)

chown omftp:omfyp /home/omftp/

или доступ только к корню сайта даем- (к домашней папке)

usermod -d /var/www/site/ omftp

passwd omftp

При создании юзера для FTP (PROFTPD ) его нужно

в конфиге ftp /etc/proftpd/proftpd.conf разрешить


Order deny,allow
AllowUser omftp

так же рекомендуется следущий конфиг

UseIPv6 off
IdentLookups off

ServerName "Debian"

ServerType standalone
DeferWelcome off

MultilineRFC2228 on
DefaultServer on
ShowSymlinks on

TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200

DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions "-l"

DenyFilter \*.*/

DefaultRoot ~

Port 21

PassivePorts pasportstart00000 pasportend00000

MasqueradeAddress ип.се.рв.ера

MaxInstances 300

Umask 002 002

Если появляется ошибка 530 Login incorrect. и в логах

/var/log/auth.log.

Последние строки говорят, что:

USER setevoy (Login failed): Invalid shell: ‘/bin/bash’

В файл конфигурации ProFTPD /usr/local/etc/proftpd.conf добавляем строку:

RequireValidShell off

1.4 перезапускаем фтп сервер

systemctl restart proftpd.service

на этом все. но если нужно настроить шифрование то настраиваем его

1.5 настройка шифрования для proftpd

Для того , чтобы использовать TLS, необходимо создать сертификат SSL.

создаем каталог :


mkdir /etc/proftpd/ssl

После этого, мы можем генерировать сертификат SSL следующим образом:


openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem

Country Name (2 letter code) [AU]: <- Введите Название страны (например, "DE").
State or Province Name (full name) [Some-State]: <- Введите Название региона или штата.
Locality Name (eg, city) []:<- Введите город.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<- Введите название организации (например, название вашей компании). .
Organizational Unit Name (eg, section) []:<- Введите Organizational Unit Name (например , "IT - отдел").
Common Name (eg, YOUR name) []:<- Введите полное доменное имя системы (например ,«server1.example.com»).
Email Address []:<- Введите ваш адрес электронной почты.


установите защиту на эти файлы
chmod 600 /etc/proftpd/ssl/proftpd.*

1.6 разрешаем TLS в ProFTPd
Для того , чтобы включить TLS в ProFTPd, открыт /etc/proftpd/proftpd.conf...
/etc/proftpd/proftpd.conf

... и раскомментируйте /etc/proftpd/tls.conf line:
[...]
#
# This is used for FTPS connections
#
Include /etc/proftpd/tls.conf
[...]
Затем откройте /etc/proftpd/tls.conf


TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol TLSv1.2
TLSCipherSuite AES128+EECDH:AES128+EDH
TLSOptions NoCertRequest AllowClientRenegotiations
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient off
TLSRequired on
RequireValidShell no

Если вы используете TLSRequired on , то только TLS соединения разрешены (это блокирует любые пользователи со старыми FTP клиентов , которые не имеют поддержки TLS); закомментировав эту линию или использовать TLSRequired от соединений как TLS и не TLS разрешено, в зависимости от того, что поддерживает клиент FTP.


Перезапустите ProFTPd :
systemctl restart proftpd.service

Вот и все. Теперь вы можете попробовать подключиться с помощью FTP - клиента; Однако, вы должны настроить FTP - клиента для использования TLS
Если у вас возникли проблемы с TLS, вы посмотрите файл журнала TLS /var/log/proftpd/tls.log.

1.7 настройка привелеий совместного использования ftplogin && www-data

посмотреть текущие группы

groups ftplogin

groups www-data

для фтп юзера нужна 1 главная группа

usermod -g www-data ftplogin

а для веб пользователя добавить фтплогин группу

usermod -a -G opftp www-data

изменить конфиг proftpd Umask 002 002

1.8 сбросить все права и владельцев рекурсивно

chown -R www-data:www-data /var/www/html
find /var/www/html -type f -exec chmod 664 {} \;
find /var/www/html -type d -exec chmod 755 {} \;

Установка в  Ubunutu 20 и LAMP (Apache 2.4 , PHP 7.0 (mod or FastCGI)  и Mysql 5.7.) + SSH+ FTP (proftpd)+Mailserver Postfix

Установка в  Ubunutu 20 и LAMP (Apache 2.4 , PHP 7.0 (mod or FastCGI)  и Mysql 5.7.) + SSH+ FTP (proftpd)+Mailserver Postfix

так же можно настроить sftp на отдельном порту

7. Установка почтового сервера (или sendmail или postfix)

1. Устанавливаем модуль php-mail (если он еще не установлен):

sudo apt-get install php-mail

2.1. Устанавливаем sendmail:

$ sudo apt-get install sendmail

$ sudo sendmailconfig

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

/etc/mail.sendmail.conf
/etc/cron.d/sendmail
/etc/mail/sendmail.mc

2.2. Если все в порядке, правим «php.ini»

nano /etc/php7/apache7/php.ini

Находим закомментированую строку «;sendmail_path = » (поиск в nano ctrl+w). Заменяем на строку следующего содержания:

sendmail_path =  /usr/sbin/sendmail -t -i
(в php7 уже есть эта опция)

2.3. Делаем рестарт Apache

sudo service apache2 restart

2.4. Проверить работоспособность sendmail можно двумя командами:

$ /usr/sbin/sendmail abc@gmail.com < "hi  ... it is work."
или
$ sudo php -r "mail('you_mail@mail.ru', 'Проверка', 'Привет. все работает.');"

В течении минуты на указанный электронный адрес должно прийти письмо. Если этого не произошло, то следует посмотреть логи отправки в каталоге «/var/log/syslog». Если в логах появилось сообщение: «Connected time out», значит или firewall не пропускает пакеты через порт 25, или ионтернет-провайдер. Проверить это можно командой telnet:

telnet smtp.mail.ru 25

Если результатом работы команды стало так же «Connected time out», то разбирайтесь, где блокируется порт 25. Иногда бывает заблокирован провайдером или хостером.

3.1 устанавливаем postfix (вместо sendmail)

  • sudo apt-get update
  • sudo apt-get install postfix
  • sudo dpkg-reconfigure postfix

установим home_mailbox переменную , Maildir/ которая будет создавать структуру каталогов под этим именем в домашнем каталоге пользователя. postconf Команда может быть использована для запроса или набора параметров конфигурации. Н

  • sudo postconf -e 'home_mailbox= Maildir/'

Далее, мы можем установить местоположение virtual_alias_maps таблицы. Эта таблица отображает произвольные учетные записи электронной почты в системных учетные записи Linux. Мы создадим эту таблицу в /etc/postfix/virtual.

  • sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

Откройте файл виртуальной карты в текстовом редакторе:

  • sudo nano /etc/postfix/virtual

contact@site.com user1
info@site.com user1
применить карту

sudo postmap /etc/postfix/virtual
и перезапустить
sudo systemctl restart postfix

3.2 включение шафрования для переджаваемых сообщений

в файле /etc/postfix/main.cf

smtp_use_tls = yes
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # эта строчка возможно уже есть
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3

протестировать работу- можно отправить письмо и командной строки mail -s "some subject" myemail@email.com < message.txt (или без файла с собщением, но тогда нужно водить текст и в конце поставить точку)

OPENDKIM как настроить рассказано в другой нашей статье

3.3 Проверка работы

проверка статуса sudo postfix status

если не запущен то запустить

sudo postfix start

проверить кто слушает 25 ый порт

netstat -anp | grep :25 | grep LISTEN

Проверить отправку письма и коммандной строки

echo " body of email" | mail -s " Test subject " emailto@email.com

Проверка подключения к порту 25 со стороны клиентов

telnet 1.2.3.4 25

(1 2 3 4 - ваш ип адрес сервера)

7.2 Удаление postfix или sendmail

apt-get --purge remove postfix

apt-get purge sendmail*

8. оптимизация . установка OptiPNG

8.1 установка скрипта сжимающий и отимимзрующий png 
apt-get install optipng

сжатие одной фото ( -o7 - максимальная оптитизация)
optipng  -o7 tecmint.png

рекурсивное сжатие во всех сложенных папках
find /var/www/site.site/public_html -name "*.png" -type f -exec optipng  -o7  *.png {} {} \;

8.2 установка для линукса 
(для гугл предпочтительнее- работает медленнее но уменьшение размера файла с сохранением качества остаетсяс прежним)

wget http://static.jonof.id.au/dl/kenutils/pngout-20150319-linux.tar.gz &&\

tar -xf pngout-20150319-linux.tar.gz &&\

rm pngout-20150319-linux.tar.gz &&\

cp pngout-20150319-linux/x86_64/pngout /bin/pngout &&\

rm -rf pngout-20150319-linux

запуск для всех вложенных папок
cd /var/www/site.site/public_html
find . -name "*.png" -exec pngout {} \;




8.3 установка скрипта сжимающий и отимимзрующий jpg
установка
apt-get install libjpeg-progs
сжатие одного файла
jpegtran -copy none -optimize -outfile min.image.jpg image.jpg

# сохранит оптимизированную копию в min.image.jpg

  • -copy none убирает все метаданные из исходного файла
  • -optimize оптимизирует изображение

Progressive (предпросмотр небольшого изображения)

Для изменения формата на progressive следует использовать такую команду:

jpegtran -progressive -copy none -optimize -outfile min.pro.image.jpg image.jpg
сжатие рекурсивное с вложенныи папками

find /var/www/site.site/public_html -name "*.jpg" -type f -exec jpegtran -copy none -optimize -outfile {} {} \;

8.4 установка и использование jpegoptim
apt-get install jpegoptim
jpegoptim *.jpg --strip-all

jpegoptim file.jpg --strip-all

все в текущей папке    jpegoptim *.jpg --strip-all
рекурсивно относительно текущей папки find . -name "*.jpg" -type f -exec jpegoptim --strip-all {} {} \;
9. если установлен только апач , включаем всевозможные сжатия


включаем доп модули если они еще не включены

a2enmod expires

a2enmod headers

создаем файл в папке enabled config

chashe.conf
 ====начало файла====



ExpiresActive On
ExpiresDefault "access 7 days"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/x-icon "access 1 year"
ExpiresByType application/x-shockwave-flash "access 1 year"


Header set Cache-Control "max-age=259200, public"


AddOutputFilterByType DEFLATE application/json

====конец файла====

запускаем проверку конфинурации апач

apachectl configtest

Вау!! 😲 Ты еще не читал? Это зря!

В заключение, эта статья об установка lamp подчеркивает важность того что вы тут, расширяете ваше сознание, знания, навыки и умения. Надеюсь, что теперь ты понял что такое установка lamp, lamp, fastcgi , mysql, ssh, ftp, proftpd, mailserver, postfix и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)

Ответы на вопросы для самопроверки пишите в комментариях, мы проверим, или же задавайте свой вопрос по данной теме.

создано: 2016-01-26
обновлено: 2024-11-14
814



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей
avatar
20.11.2017 12:25

разшешить юзерам логинется через конфиг при
ProFTPD login ошибке 530
incorrect login

RequireValidShell off


Limit SITE_CHMOD
Order deny,allow

AllowUser loginftp

Limit
Include etcproftpdconf.d

avatar
20.11.2017 12:57

если ошибка повторяется то проверьте логи
sudo tail -f varlogproftpdproftpd.log

avatar
20.11.2017 13:4

если ошибка error: unable to set DefaultRoot directory
поставил напрямую директорию - заработало varwww


Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)

Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)