Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Подготовка VPS на Debian, Nginx+php-fpm, PHP 7.3, mariadb для Opencart 2/3


Neuro75

Recommended Posts

Вот, болею на Новый год, время свободное есть, сервера ковыряю, свои записки сумасшедшего разбираю. Немного данных накопилось по настройке VPS на Nginx для Opencart, решил выложить. Пилить на какой-нибудь свой сайт статью - ЧСВ еще недостаточно развито, а в формате форума думаю самое то. Вдруг пригодится кому.

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

Написан подробно для совсем новичков. Кто не новичок - не читайте, будете зевать. Просто очередной 100500 мануал по настройке сервера.

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

Итак, исходные данные.

Имеем голый VPS. Без ISP-Manager и прочих панелей. Системой выберем Debian 8.2. Веб-сервер - Nginx. SAPI - php-fpm. PHP 7.3. Mariadb 10.4.

Обязательный https, wildcard-сертификаты от LetsEncrypt. Немного паранойи в настройках тоже добавим, куда ж без нее.

Сайт используемый в примере - традиционный mysite.ru. Пользователь debian - debuser. IP VPS - 123.123.123.123. Эти переменные буду выделять в конфигах вот так {mysite.ru) для их замены на свои значения.

 

  Показати вміст

 

Установка ОС

Все написанное ниже работает для любой версии Debian, которую вы выберите (на 10 сервер еще не поднимал, на 99% уверен что все будет работать, на 9 точно работает). Единственно, в /etc/apt/sources.list поменяйте jessie на имя выбранного дистрибутива - stretch или buster.

Если же согласились с моими аргументами в спойлере выше и решили ставить Debian 8.2, то ищем у хостера предложенный к установке образ этой версии и раскатываем его на VPS. Если таковой не предлагается - просим поддержку подключить  standard+nonfree образ с debian.org и ставимся с него.

Установка стандартная, останавливаться на ней не буду. Образ, указанный по ссылке, про устанавливаемые компоненты спрашивать не будет, он просто ставит минимальный набор. Образ хостера, скорее всего спросит на этапе "Выбор программного обеспечения" - снимаем галки со всего, кроме "Server SSH". "Стандартные системные компоненты" включаем/выключаем по желанию. Чего ему потом будет не хватать подтянет сам по зависимостям или спросит. Если не уверены в себе, ну поставьте галку и на них тоже.

 

Удаленное подключение по SSH.

Из windows - используем putty, последнюю версию которой берем на официальном сайте. Во всяких окошках и полях заполняем что ей надо (IP VPS, порт ssh, имя пользователя и его пароль), сохраняем подключение и потом дважды по нему щелкая наблюдаем удаленный терминал.

Счастливые обладатели linux на десктопе просто вводят

ssh {IP_адрес_сервера} -l {имя_пользователя_Debain}

GRUB, стандартные репозитории и серверные ключи ssh

Все команды ниже выполняются от рута, поэтому

su

и поехали дальше по списку. Адепты sudo гуглят и выполняют "Установка и настройка sudo в Debian" и в дальнейшем перед всеми командами добавляют sudo.

 

а) удаляем дефолтную пятисекундную задержку grub. На сервере она нам вообще ни к чему -> выигрываем пять секунд на каждом перезапуске

nano /etc/default/grub

Значение GRUB_TIMEOUT=5 меняем на GRUB_TIMEOUT=0

update-grub

 

б) приводим в порядок список репозиториев

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

Для 8.2:

> /etc/apt/sources.list
nano /etc/apt/sources.list
  Показати вміст

 

Вставляем:

  Цитата
Expand  

Обновляем:

apt-get update

Должен обновиться и выругаться на ключ AA8E81B4331F7F50 от неизвестного нового репозитория обновлений безопасности. Ставим этот ключ:

apt-key adv --recv-keys --keyserver keyserver.ubuntu.com AA8E81B4331F7F50

Для stretch и buster:

ничего не делаем

 

в) немного обещанной паранойи (можно не делать, но лучше сделать)

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

rm /etc/ssh/ssh_host_*
apt-get install --reinstall libssh2-1:amd64 openssh-blacklist openssh-blacklist-extra openssh-client openssh-server ssh

Для проверки ребутимся

reboot

и вновь коннектимся по ssh. Т.к. ключи поменяли, сервер  сообщит, что "ECDSA key fingerprint.... " теперь какой-то другой и спросит подключаться/нет. Ответить "yes".

 

Настройка SSH

По умолчанию ssh слушает на 22 порту, доступ root - только по ключу (параметр without-password, см.ниже), доступ по паролю разрешен.

Можно все так и оставить, тогда пропускаем этот пункт и идем к следующему.

Можно поменять. Размышления на эту тему под спойлером.

  Показати вміст

Открываем конфиг ssh

nano /etc/ssh/sshd_config

а) смена порта

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

Меняем в конфиге параметр

  Цитата

Port 21

Expand  

на

  Цитата

Port ваш_номер_порта

Expand  

 

б) запрет доступа root'ом

Меняем

  Цитата

PermitRootLogin without-password

Expand  

на

  Цитата

PermitRootLogin no

Expand  

 

в) запрет доступа по паролю (доступ только по ключу)

Проверить, что параметр, разрешающий доступ по ключу

  Цитата

PubkeyAuthentication yes

Expand  

не закомментирован и имеет значение yes (по умолчанию так и есть, но проверить не помешает, а то может быть грустно).

Раскомментировать строку

  Цитата

#PasswordAuthentication yes

Expand  

и поменять ее значение на

  Цитата

PasswordAuthentication no

Expand  

 

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

Г1. Если на локальной машине linux, то в терминале пользователя, из которого ходить будете

ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub имя_удаленного_пользователя@IP_адрес_удаленной_машины
ssh-add ~/.ssh/id_rsa
  Показати вміст

 

Г2. Для пользователей Windows - используем утилиту puttygen, которая установилась вместе с putty (см.выше). Пользоваться ей несложно, она графическая. Например, вот первый попавшийся мануал.

 

д) для применения сделанных изменений рестартуем демона ssh

service sshd restart

 

e) ставим fail2ban

Небольшая, но весьма полезная утилита, которая после нескольких попыток неправильного ввода пароля ssh отправляет IP, с которого осуществлялся доступ, в бан.

apt-get install fail2ban

Работает из коробки. По умолчанию для ssh настроена на защиту 22 порта. Если порт поменяли, идем в конфиг

nano /etc/fail2ban/jail.conf

и в секции [ssh]

меняем значение

  Цитата

port     = ssh

Expand  

на

  Цитата

port     = номер_порта

Expand  

Рестартуем для применения изменений

service fail2ban restart

В рамках этого поста про fail2ban ограничусь, но она умеет еще много чего, крайне рекомендую погуглить "Настройка fail2ban"

 

Настройка FTP

Из двух самых распространенных ftp-серверов proftpd и vsftpd, лично я предпочитаю proftpd. Про него и напишу.

apt-get install proftpd

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

Представляется, что типовым ftp-пользователем у вас на сайте будет техподдержка модулей. Все что им надо - гонять туда-сюда файлы в определенной директории определенного сайта. И поэтому по ssh им на сервере делать нечего. Для этого добавляем в список shell'ов /bin/false, который не дает пользователю ни по ssh войти, ни bash'eм пользоваться.

echo "/bin/false" >> /etc/shells

При создании пользователя ему нужно будет определить домашнюю директорию, в которой запереть. Поэтому, забегая вперед: сайты у нас будут лежать в /var/www, nginx работать от имени пользователя www-data, которому, соответственно, нужны полные права на /var/www.

Т.е, mysite.ru будет лежать в /var/www/mysite.ru. Доступ будем давать пользователю support-mysite, который должен ходить только в нее и никуда больше на сервере.

Создаем /var/www/mysite.ru (вместо mysite.ru укажите свою директорию сайта)

mkdir -p /var/www/{mysite.ru}

Создаем пользователя support-mysite (укажите своего) с домашней директорией /var/www/mysite.ru (укажите свою) и шеллом /bin/false

adduser --home /var/www/{mysite.ru} --shell /bin/false {support-mysite}

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

Создаем пользователю support-mysite (укажите своего) пароль

passwd {support-mysite}

Присваиваем /var/www и всему что в нее входит владельца/группу www-data:www-data с правами на файлы 664 и директории 775

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

Подробнее про права:

  Показати вміст

 

Добавляем пользователю support-mysite (укажите своего) группу www-data

usermod -a -G www-data {support-mysite}

Редактируем конфиг proftpd

nano /etc/proftpd/proftpd.conf

а) меняем имя сервера (не принципиально, при подключении будет рапортовать вы туда-то подключились юзерам)

  Цитата

ServerName                      "Debian"

Expand  

на

  Цитата

ServerName                      "имя_вашего_сервера"

Expand  

б) запираем пользователей в их домашних директориях

находим

  Цитата

# DefaultRoot                   ~

Expand  

и раскомментируем

  Цитата

DefaultRoot                   ~

Expand  

в) меняем порт (см. соображения выше про порт для ssh

  Цитата

Port                            21

Expand  

на

  Цитата

Port                            ваш_номер_порта

Expand  

г) разрешаем пассивный режим

находим

  Цитата

# PassivePorts                  49152 65534

Expand  

и раскомментируем

  Цитата

PassivePorts                  49152 65534

Expand  

д) описываем доступ support-mysite (укажите своего) к директории /var/www/mysite.ru (укажите свою). Для этого, в конец конфига добавляем блок

  Цитата

<Directory /var/www/{mysite.ru}>
Umask 022 022
AllowOverwrite off
     <Limit LOGIN>
        AllowUser {support-mysite}
        DenyALL
     </Limit>
     <Limit ALL>
        Order Allow,Deny
        AllowUser {support-mysite}
        Deny ALL
    </Limit>
    <Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
    AllowUser {support-mysite}
    Deny ALL
    </Limit>
</Directory>

Expand  

 

Сохраняем конфиг и перезапускаем proftpd

service proftpd restart

Если вдруг когда-нибудь возникнет необходимость предоставить этому пользователю ssh-доступ, идем в /etc/passwd (nano /etc/passwd) и меняем ему там /bin/false на /bin/bash. Там же можно сменить и домашнюю директорию.

Аналогично вышеописанному создаем сколько нужно ftp-пользователей на сколько нужно сайтов.

При этом помним, что если им дать ssh-доступ, то они смогут ходить по всему серверу (кроме директории /root), править файлы не только своего сайта, а всех, которые лежат в /var/www (т.к. входят в группу www-data). При /bin/false - дальше присвоенной домашней директории не уйдут.

 

Настройка firewall

Файрвол будем использовать типовой  - основанный на iptables, разрешающий все исходящие соединения и запрещающиий все входящие кроме специально разрешенных.

Проверяем что установлены iptables последней версии

apt-get install iptables

Создаем файл правил

nano /etc/firewall.sh

Спрячу его под спойлер, а то и так уже поэму написал
 

  Показати вміст

Делаем его выполнимым

chmod +x /etc/firewall.sh

Добавляем в /etc/network/interfaces загрузку правил при ребуте (вставить выделенное жирным после iface lo inet loopback

nano /etc/network/interfaces
  Цитата

# The loopback network interface
auto lo
iface lo inet loopback
    pre-up echo "1" > /proc/sys/net/ipv4/ip_forward  # Включаем форвардинг пакетов
    pre-up iptables-restore < /etc/ip_rulles.lst     # Загружаем правила
    post-down iptables-save > /etc/ip_rulles.lst     # Сохраняем правила

Expand  

Применяем правила

sh /etc/firewall.sh

и сохраняем текущее состояние в файл, который будем загружать

iptables-save > /etc/ip_rulles.lst

Логика обращения с файрволом несложная - в конце меняем или создаем по аналогии новые порты, которые должны быть открыты, применяем новые правила и сохраняем их в файл.

Если надо его совсем отключить - комментируем три выделенных строки в /etc/network/interfaces и перезагружаемся. Если надо включить - раскомментируем и перезагружаемся.

 

Установка nginx, php и mariadb

Ставим пакеты для работы с https-репозиториями. Ну и заодно некоторые утилиты, чтобы лишних команд потом не писать:

apt-get install lsb-release apt-transport-https ca-certificates software-properties-common curl gnupg2 mc unar haveged

 

  Показати вміст

  Ставим ключи для репозиториев

cd /tmp
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add -

Добавляем репозитории в sources.list

nano /etc/apt/sources.list

Добавить в конец файла (не забываем менять jessie на stretch или buster при необходимости):

  Цитата
Expand  

 

Обновляемся, апгрейдимся и ребутимся (на всякий случай, слишком много пакетов он из новых репозиториев тащит, а также обновляет initramfs, создавая новый /boot/initrd.img)

apt-get update && apt-get upgrade
reboot

Вновь коннектимся по ssh.

Ставим пакеты

apt-get install mariadb-server nginx php7.3-fpm php7.3-curl php7.3-mbstring php7.3-mysql php7.3-xml php7.3-gd php7.3-zip php7.3-bcmath php7.3-imagick

Примечание: если нужно PHP 7.2 или 7.1, меняем цифры в команде выше

 

Донастройка php

а) ставим ioncube

скачиваем и разъархивируем тарбол с последними ioncube'ами

cd /tmp
wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xfz ioncube_loaders_lin_x86-64.tar.gz
cd ioncube

Проверяем установленную версию php

php -v

Смотрим в какой папке лежат расширения php

php -i | grep extension_dir

Копируем нужный ioncube_loader в данную папку (команда с путями приведена для PHP 7.3. Как есть, так и копируем. Для PHP 7.2 и 7.1 - измените индекс в команде и вставьте путь, который показала предыдущая команда)
 

cp ioncube_loader_lin_7.3.so /usr/lib/php/20180731

Открываем php.ini

nano /etc/php/7.3/fpm/php.ini

Ну или nano /etc/php/7.2/fpm/php.ini, nano /etc/php/7.1/fpm/php.ini - соответственно

Находим первый "zend_extension = ...." и перед ним вставляем
 

  Цитата

zend_extension = /usr/lib/php/20180731/ioncube_loader_lin_7.3.so

Expand  

Для PHP 7.2 и 7.1 измените индекс и папку так, как указано выше.

 

Повторить вставку той же строки для CLI (nano /etc/php/7.3/cli/php.ini, nano /etc/php/7.2/cli/php.ini, nano /etc/php/7.1/cli/php.ini)

Перезапускаем службу

 service php7.3-fpm restart

(service php7.2-fpm restart, service php7.1-fpm restart)

 

б) ставим mcrypt

Начиная с PHP 7.2 модуль mcrypt исключен из репозитория. Однако для Opencart 2 он нужен (а для 3 - нет, если не будете двойку использовать, то и не ставьте его, уж больно много он мусора для своей сборки тянет)

Для PHP 7.3 и 7.2 ставим его через pecl

apt-get install gcc make autoconf libc-dev pkg-config
apt-get install php7.3-dev
apt-get install libmcrypt-dev
pecl install mcrypt-1.0.3

Для PHP 7.2 во второй команде указываем php7.2-dev соответственно.

 

Создаем ini-файл модуля

nano /etc/php/7.3/mods-available/mcrypt.ini

Для PHP 7.2 - nano /etc/php/7.2/mods-available/mcrypt.ini

Вставляем

  Цитата

; configuration for php mcrypt module
; priority=20
extension=mcrypt.so

Expand  

Включаем вновь созданный модуль

phpenmod mcrypt

Перезапускаем службу

 service php7.3-fpm restart

(service php7.2-fpm restart)

Проверка:

php -m | grep mcrypt

Результат должен быть

  Цитата

mcrypt

Expand  

 

в) правим php.ini

nano /etc/php/7.3/fpm/php.ini

Ну или nano /etc/php/7.2/fpm/php.ini, nano /etc/php/7.1/fpm/php.ini - соответственно
Находим и меняем значения

  Цитата

post_max_size = 20M
cgi.fix_pathinfo=0
upload_max_filesize = 20M

Expand  

 

Перезапускаем службу

 service php7.3-fpm restart

(service php7.2-fpm restart, service php7.2-fpm restart)

 

Донастройка maraidb

а) скрипт настройки безопасности

Запускаем

mysql_secure_installation

Ответы с описанием под спойлером

  Показати вміст

б) скрипт захода в mysql из рута без пароля

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

Создаем скрипт

nano /root/.my.cnf

Вставляем

  Цитата

[mysql]
user = root
password = ваш_головоломный_придуманный_в_предыдущем_пункте_пароль

[mysqldump]
user = root
password = ваш_головоломный_придуманный_в_предыдущем_пункте_пароль

Expand  

Ставим на него права и владельца

chown root:root /root/.my.cnf; chmod 600 /root/.my.cnf

 

Перезапускаем службу

service mysql restart

 

Настройка nginx

а) правим конфиг

В стандартном конфиге нужно поменять пользователя на www-data, включить сжатие, установить количество worker_processes равное количеству процессоров VPS, worker_connections (это значение, умноженное на worker_processes даст максимально возможное количество одновременных пользователей), по аналогии  с apache - указать брать конфиги сайтов из /etc/nginx/sites-enabled/.

Чтобы не морочиться даю готовый конфиг, в нем надо поменять только значения worker_processes и worker_connections (выделено жирным)

Сохраняем старый конфиг

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

Очищаем

> /etc/nginx/nginx.conf

Открываем

nano /etc/nginx/nginx.conf

Вставляем

  Показати вміст

б) создаем директории для хранения конфигов сайтов

mkdir /etc/nginx/sites-available ; mkdir /etc/nginx/sites-enabled

в) создаем шаблон параметров работы с PHP-fpm

Чтобы не указывать в конфиге каждого сайта одни и теже параметры для работы с PHP-fpm, создаем шаблон, который будем инклюдить в каждый конфиг

Создаем директорию для хранения шаблонов

mkdir /etc/nginx/templates

Создаем сам шаблон

nano /etc/nginx/templates/php-fpm.conf

Вставляем (обратите внимание на версию PHP - выделено жирным, для 7.2 и 7.1 - соответственно поменять)

  Показати вміст

 

Letsencrypt-сертификаты

От писания данного талмуда целый день уже голова пухнет и не могу припомнить почему я отказался от установки certbot на сам сервер и обновления сертификатов по расписанию cron'ом. Смутно припоминаю, что вроде как в Jessie он не входит в стандартный репозиторий, а собираемый из исходников имеет какие-то проблемы с зависимостями (в stretch работает).

Но не суть важно.

В общем, сертификаты я получаю на локальной машине и кладу их в /root/.certrs. С учетом того, что LetsEncrypt сейчас раздает wildcard сертификаты на три месяца, раз в три месяца проделать эту процедуру не считаю сложным вообще, во всяком случае на десяток имеющихся сайтов. Тем более, что за две-три недели до истечения срока они на почту задолбут, что сертификаты заканчиваются, захочешь пропустить - не пропустишь.

Про запуск certbot на Windows - гуглите.

Про запуск certbot на локальном linux начиная со stretch.

apt-get install certbot

запрос сертификата (от рута)

certbot certonly --agree-tos -d mysite.ru -d *.mysite.ru --preferred-challenges dns --manual --server https://acme-v02.api.letsencrypt.org/directory

mysite.ru меняем на свой домен. В одном запросе можно получить хоть сколько сертификатов (не помню максимум, но много), перечислив домены после ключа -d. Но т.к. он будет последовательно давать DNS-записи, которые нужно внести, то желательно: один запрос - один домен (в смысле пара mysite.ru и *.mysite.ru - для wildcard сертификата).

Скрипт спросит о внесении вашего IP в базу

  Цитата

Are you OK with your IP being logged?

Expand  

Ответить Y

Потом выдаст значение первой TXT-записи DNS _acme-challenge.mysite.ru, (например, такой YimPRyMcm8rEzxYCrsgK80hVKgk0YpJGazuZ_pcFlIg), которую надо вручную добавить на ваш NS-сервер и будет ждать нажатия Enter для продолжения.

Вносим запись, жмем Enter.

Появится вторая запись. Ее вносим, но Enter не жмем, а ждем минут 30 пока записи ДНС применятся. У меня обычно минут 15-20 применяются, мы же не А-записи меняем, так что тут все быстро.

Подождали, нажали Enter, Letsencrypt опросил DNS-сервер и если записи нашел, то пишет поздравительную петицию на полэкрана и сохраняет в /etc/letsencrypt/archive/mysite.ru четыре файла: cert1.pem, chain1.pem, fullchain1.pem, privkey1.pem.

Убираем из названий цифру 1 и получившиеся файлы передаем на сервер (я, например, sshfs пользуюсь для передачи файлов, кому-то удобнее ftp - про его настройку выше писалось).

На сервере:

Создаем директорию для хранения сертификатов

mkdir /root/.certs

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

mkdir /root/.certs/mysite.ru
mkdir /root/.certs/mysite2.ru
mkdir /root/.certs/mysite3.ru

Копируем в соответсвующую директорию полученные сертификаты.

Также, создаем в нужной директории ключ, использующий алгоритм Диффи Хельмана

openssl dhparam -out /root/.certs/mysite.ru/dh.pem 2048

 

Запускаем сайт

Ну и наконец заключительная часть

а) создаем непосредственно конфиг сайта для mysite.ru для Opencart.

Включает в себя редиректы с www на без_www, а также с http на https. Корректно работает с ЧПУ. У себя ошибок пока не наблюдал, все сборки и все модули работают.

Раньше использовал одинаковые конфиги и для Opencart 2 и для Opencart 3.

Сейчас нашел для себя удобным для тройки в /var/www также как и для двойки создавать директорию mysite.ru, но уже в ней поддиректорию shop, куда класть саму сборку. В результате когда storage выносится на уровень вверх он оказывается не в общей свалке всех остальных доменов, а в /var/www/mysite.ru. Туда же направляю error и access логи nginx. Все получается в одном месте. Поэтому для тройки дам немного в этой части модернизированный.

В остальном конфиги идентичны.

Opencart 2

  Показати вміст

 

Opencart 3

  Показати вміст

 

Бонусом - если вдруг кому надо будет рабочий конфиг для wordpress

  Показати вміст

 

б) создаем ссылку в sites-enabled
 

ln -s /etc/nginx/sites-available/mysite.ru /etc/nginx/sites-enabled

в) создаем директорию для хранения файлов сайта

для Opencart 2

mkdir /var/www/mysite.ru

для Opencart 3
 

mkdir -p /var/www/mysite.ru/shop

г) перезапускаем службу

service nginx restart

д) после копирования файлов в директорию сайта, не забываем обновлять  права и владельца (см.выше про proftpd)

если используем доступ по ftp кого-то, кому нужна запись в каталоги

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

если без ftp или ftp только посмотреть

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

 

ВСЕ, БЛИН, ЗАКОНЧИЛ!

В таком виде оно заработает. Ну а дальше веселуха по тонкой настройке mariadb и пр. и пр.

Если кому-то будет полезно, буду рад.

 

 

Змінено користувачем Neuro75
  • +1 5
Надіслати
Поділитися на інших сайтах


на Deb 10 работает у меня пара серверов, аптайм 6 мес.
Deb10+apache2.4+php-fpm7.3+percona
lets-encrypt+acme.sh
ну и всякий сахар в iptables (netfilter),fail2ban,git итд
почта через yandex
все на http2 (для чего собственно и нужен php-fpm)

FTP можно не ставить, да и не желательно, можно по SFTP коннектить при нужде, а если только по ключу, то поднять гит по схеме( local-bitbicket(private)-server )) и обновлять проект через него.
mcrypt и вовсе не нужен, втыкните в opencart 2 файл encryption.php из тройки и все.

Надіслати
Поділитися на інших сайтах

Первое, что нужно сделать новичку (или просто не мазохисту)  - поставить панель вроде весты. Возможно, файловый менеджер (это по настроению и потребностям. чаще фтп хватает).
И не надо про скилл, обезьянье копирование команд скилл не пвышает. Или уж будьте последовательны, тогда и OC собирайте вручную, а не скриптом :-D
Вообще, под любой панелью большую часть этих команд все равно придется через консоль гнать, так что для варианта "установить и забыть" можно и без панели, на скорую руку. 
Но если есть намерение поковыряться, то почему бы не создать себе комфортное окружение. 
PS: Для адептов "голой строки" - FTP-клиентами тоже никогда не пользуетесь, строго консольными командами качаете? 
PPS: Это не критика темы или ТС. Наоборот, одобряю, что все собрано в одном месте. Просто альтернативный вариант отметил.

Змінено користувачем Shureg
Надіслати
Поділитися на інших сайтах


  В 07.01.2020 в 06:33, nikifalex сказав:

все круто, только не увидел в nginx конфиге аналог

RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
Expand  

Так-то на форуме уже были примеры
 

  # SEO URL Settings
  location / {
    # This try_files directive is used to enable SEO-friendly URLs for OpenCart
    try_files $uri $uri/ @opencart;
  }

  location @opencart {
    rewrite ^/(.+)$ /index.php?_route_=$1 last;
  }
  # End SEO settings

 

Змінено користувачем Shureg
Надіслати
Поділитися на інших сайтах


  В 07.01.2020 в 06:33, nikifalex сказав:

все круто, только не увидел в nginx конфиге аналог

RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
Expand  

3-8 строка с конца, нет?

 

  В 06.01.2020 в 21:58, Waha сказав:

все на http2 (для чего собственно и нужен php-fpm)

Expand  

Ага...

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

 

  В 06.01.2020 в 21:58, Waha сказав:

FTP можно не ставить, да и не желательно, можно по SFTP коннектить при нужде, а если только по ключу, то поднять гит по схеме( local-bitbicket(private)-server )) и обновлять проект через него.

Expand  

Дико поддерживаю. И не ставил никогда, пока не наткнулся на особо упоротых забугорных разработчиков. Я им на пальцах и по слогам "руссо туристо, кнопочка тык-тык - работать нет". А они мне ftp давай и хоть убейся. Пришлось ставить. Хотел в конце дописать, что ftp - зло, держать надо на всякий подобный случай, в файрволе строки закомментировать и давать доступ на чуть-чуть и по великим праздникам. Но к концу писанины уже глаза вылазили.

 

  В 06.01.2020 в 21:58, Waha сказав:

mcrypt и вовсе не нужен, втыкните в opencart 2 файл encryption.php из тройки и все.

Expand  

О как. За это яро плюсую, пошел пробовать.

 

  В 07.01.2020 в 04:52, Shureg сказав:

PS: Для адептов "голой строки" - FTP-клиентами тоже никогда не пользуетесь, строго консольными командами качаете? 

Expand  

А зачем они нужны, если можно sshfs кусок сервера к локалке прикрутить? :-)

Надіслати
Поділитися на інших сайтах


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

p.s лучше создать пользователя, а не производить все манипуляции под рутом, и по ssh лучше конектится по ключам, так надежнее это раз и быстрее, и отключить коннект к ssh по логину пассу

Надіслати
Поділитися на інших сайтах

  В 07.01.2020 в 10:32, stickpro сказав:

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

Expand  

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

  В 06.01.2020 в 20:50, Neuro75 сказав:

я на ресурсы, которых на VPS всегда мало, очень жадный

Expand  

А так то да, много хороших и разных штук есть. У нас же памяти и процессора на сервере хоть ж..ой жуй!

Надіслати
Поділитися на інших сайтах


  В 07.01.2020 в 10:43, Neuro75 сказав:

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

А так то да, много хороших и разных штук есть. У нас же памяти и процессора на сервере хоть ж..ой жуй!

Expand  

это экономия на спичках, сейчас vps 4 ядра 8гб стоит 5 евро, куда дешевле

Надіслати
Поділитися на інших сайтах

У меня 4х3100\16Гб. И все равно жаба.

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

 

 

Надіслати
Поділитися на інших сайтах


  В 07.01.2020 в 08:07, Neuro75 сказав:

А зачем они нужны, если можно sshfs кусок сервера к локалке прикрутить?

Expand  

А ничего, что sshfs - это, по сути, и есть sftp-клиент, только в профиль? Так что не "зачем они нужны", а именно ими вы и пользуетесь :) 

Надіслати
Поділитися на інших сайтах


Что бы не писать 500 строк напишите 1 раз bash скрипт и пускай выполняет потом все за вас

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.