LEMP и LAMP веб-сервер – Установка

Техничка Работа с сервером

by SENSATION 2 weeks ago
LEMP и LAMP веб-сервер – Установка

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

В этом мануале я покажу вам, как установить и настроить свой LEMP или LAMP веб-сервер на базе OneInStack, без серьезных знаний и каких-либо навыков администрирования или веб-разработки. Для этого нам понадобится SSH-терминал, сервер со свежей Ubuntu, Debian или CentOS и немного прямых рук.

SSH — сетевой протокол, позволяющий производить удалённое управление операционной системой.

LEMP – это стек технологий веб-сервера, работающих на базе Linux, Nginx, MySQL и PHP.

LAMP – это стек технологий веб-сервера, работающих на базе Linux, Apache, MySQL и PHP.


Подготовка к установке


Для комфортной работы нам потребуется следующее:

  • Веб-сервер на базе Ubuntu 20 (Я рекомендую использовать серверы от HETZNER, по моей ссылке вам бесплатно зачислят 20€ на баланс).
  • SSH терминал (для Windows Putty, для macOS Termius).
  • Домен, привязанный к ip сервера.
  • ~30 минут времени.

Установка LEMP или LAMP веб-сервера


Запускаем терминал, подключаемся к серверу, обновляем системные пакеты до актуальных и устанавливаем screen. Для этого построчно вводим:

apt-get update
apt-get -y install wget screen

Далее так же построчно вводим:

wget http://mirrors.linuxeye.com/oneinstack-full.tar.gz
tar xzf oneinstack-full.tar.gz
cd oneinstack
screen -S oneinstack
./install.sh

Эти команды делают следующее:

  • Запускает установочный скрипт.
  • Распаковывает его.
  • Переходит в директорию oneinstack.
  • *Открывает новый экран.
  • Запускает установочный файл.

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

 


После запуска установки, начнется процесс загрузки и установки пакетов. Ждем когда на экране появится выбор порта для SSH подключения, выбираем нужный порт (Стандартный порт – 22) и жмем Enter

Please input SSH port(Default: 22):

Iptables – если вы не разбираетесь в тонкой настройке фаервола, то на этом этапе просто жмите клавишу y и Enter.

Do you want to enable iptables? [y/n]:

Install web server – это то, зачем все это и делается, конечно же подтверждаем решение нажав  y и Enter.

Do you want to install Web server? [y/n]:

Nginx server – установщик предлагает вам несколько вариантов настройки Nginx, выбираем 1 пункт и нажимаем Enter.

Please select Nginx server:
        1. Install Nginx
        2. Install Tengine
        3. Install OpenResty
        4. Do not install
Please input a number:(Default 1 press Enter) 

Install Apache – устанавливаем Apache в качестве backend веб сервера, нажимаем 1 и Enter.

Do you want to install Apache? [y/n]:

Select Apache mode – выбираем способ обработки запросов, нажимаем 1 и Enter.

Please select Apache mode:
        1. php-fpm
        2. mod_php
Please input a number:(Default 1 press Enter) 

Select Apache MPM – выбираем 1 пункт и жмем Enter.

Please select Apache MPM:
        1. event
        2. prefork
        3. worker
Please input a number:(Default 1 press Enter) 

Далее пойдут более тонкие настройки сервера в виде выбора Apache Tomcat, значение по умолчанию стоит 5, т.е не устанавливать, это оптимальный выбор. Выбираем этот пункт и жмем Enter.

Please select tomcat server:
        1. Install Tomcat-10
        2. Install Tomcat-9
        3. Install Tomcat-8
        4. Install Tomcat-7
        5. Do not install
Please input a number:(Default 5 press Enter) 

Install Database –  жмем y и Enter.

Do you want to install Database? [y/n]:

Select a version of the Database – Далее нам предложат выбрать версию и тип базы данных, выбирайте сами. Дефолтная БД будет номер 2.

Please select a version of the Database:
         1. Install MySQL-8.0
         2. Install MySQL-5.7
         3. Install MySQL-5.6
         4. Install MySQL-5.5
         5. Install MariaDB-10.5
         6. Install MariaDB-10.4
         7. Install MariaDB-10.3
         8. Install MariaDB-5.5
         9. Install Percona-8.0
        10. Install Percona-5.7
        11. Install Percona-5.6
        12. Install Percona-5.5
        13. Install PostgreSQL
        14. Install MongoDB
Please input a number:(Default 2 press Enter) 

Сразу же после выбора типа базы данных, скрипт предложит задать пароль для  базы данных. Как вариант, можно просто записать предложенный пароль и нажать Enter, либо ввести свой вариант:

Please input the root password of MySQL(default: WlAjMNcx):

Следующий этап установки спросит вас о том, хотите ли вы установить БД из бинарников, либо же из исходников. Тут решать только вам, если не разбираетесь жмите 1 и Enter.

Please choose installation of the database:
        1. Install database from binary package.
        2. Install database from source package.
Please input a number:(Default 1 press Enter) 

Потом будет вопрос об установке PHP и его версии. Выбираем y и жмем Enter.

Do you want to install PHP? [y/n]:

Далее выбираем версию PHP. В нашем случае я выбирая пункт 9 (PHP7.4, на середину 2021 года это актуальная версия под которую работает подавляющее кол-во модулей необходимых для нормального существования).

Please select a version of the PHP:
         1. Install php-5.3
         2. Install php-5.4
         3. Install php-5.5
         4. Install php-5.6
         5. Install php-7.0
         6. Install php-7.1
         7. Install php-7.2
         8. Install php-7.3
         9. Install php-7.4
        10. Install php-8.0
Please input a number:(Default 7 press Enter) 

Далее пойдут более тонкие настройки, например установка модуля opcode, как правило, я его устанавливаю. Выбираем y и жмем Enter.

Do you want to install opcode cache of the PHP? [y/n]:

Далее смело жмем Enter.

Please select a opcode cache of the PHP:
        1. Install Zend OPcache
        3. Install APCU
Please input a number:(Default 1 press Enter) 

Когда мы определились с основными настройками веб сервера, установщик предложит установить дополнительные модули. Внимание, gmagick и imagick конфликтуют между собой, выбирайте что-то одно. Далее я дам список относительно моего опыта (2 4 6 16 ):

Please select PHP extensions:
         0. Do not install
         1. Install zendguardloader(PHP<=5.6)
         2. Install ioncube
         3. Install sourceguardian(PHP<=7.2) 
         4. Install imagick 
         5. Install gmagick 
         6. Install fileinfo 
         7. Install imap 
         8. Install ldap 
         9. Install phalcon(PHP>=5.5)
        10. Install yaf(PHP>=7.0)
        11. Install redis
        12. Install memcached
        13. Install memcache
        14. Install mongodb
        15. Install swoole
        16. Install xdebug(PHP>=5.5)
Please input numbers:(Default '4 11 12' press Enter) 

После того, как мы определились с модулями скрипт спросит о том хотим ли мы установить FTP сервер, тут все просто, ответ y – да, n – нет.

Do you want to install Pure-FTPd? [y/n]:

В нашем случае мы конечно же соглашаемся и устанавливаем FTP сервер.
Далее последует вопрос об установке phpMyAdmin, смело жмем y, а после Enter.

Do you want to install phpMyAdmin? [y/n]:

После этого пункта вас спросят об установке redis и memcached , если вам это не нужно ставьте n.

Далее, можете выбирать дефолтные значения конфигурации и после чего запустится процесс установки. Это займет около 20-40 минут, а по окончанию установки, в консоли появится долгожданное сообщение об успешном завершении всех процессов. Так же в этом сообщении будут важные данные (логин пароль к БД, путь к phpMyAdmin, и команда для создания новых FTP пользователей), которые было бы не плохо сохранить для дальнейшего использования.

Pure-Ftp installed successfully! 
[xprober.php] found
[ocp.php] found
####################Congratulations########################
Total OneinStack Install Time: 49 minutes

Nginx install dir:              /usr/local/nginx

Apache install dir:             /usr/local/apache

Database install dir:           /usr/local/mariadb
Database data dir:              /data/mariadb
Database user:                  root
Database password:              WlAjMNcx

PHP install dir:                /usr/local/php
Opcache Control Panel URL:      http://65.**.156.1*8/ocp.php

Pure-FTPd install dir:          /usr/local/pureftpd
Create FTP virtual script:      ./pureftpd_vhost.sh

phpMyAdmin dir:                 /data/wwwroot/default/phpMyAdmin
phpMyAdmin Control Panel URL:   http://65.**.156.1*8/phpMyAdmin

Index URL:                      http://65.**.156.1*8/

Please restart the server and see if the services start up fine.
Do you want to restart OS ? [y/n]: 


Соглашаемся с предложением перезагрузить сервер
(y – перезагрузить, n – оставить как есть).

Поздравляю! Ваша система настроена и успешно установлена.


Советы в использовании


Если вы решили использовать Apache в качестве backend сервера закройте доступ к директории /data/wwwroot/default/ при помощи HTTP Basic Authentication (.htaccess + .htpasswd).

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

Возможно вам придется увеличить время исполнения php скриптов вызванных из браузера при установленном Apache на бекенде делать это нужно непосредственно через настройки самого Apache. Путь к которым можно получить вызвав функцию phpinfo(); в любом php файле.

Про OneInStack


Данный bash-скрипт позволит вам в кратчайшие сроки развернуть такие стеки как:  LEMP, LAMP, LNMP, LNMPA, LTMP (Linux, Nginx/Tengine/OpenResty, MySQL/MariaDB/Percona, PHP, JAVA) и прочие прекрасные вещи, которые решат ваши задачи просто и быстро из одного пакета.

OneInStack имеет поддержку следующего:

  • Поддержка ОС: CentOS 7 ~ 8, Debian 8 ~ 10, Ubuntu 16 ~ 20, Fedora 27+.
  • Автоматическую установку из актуальных репозиториев (большинство компонентов будут скачаны из официальных репозиториев и скомпилированы на вашем сервере).
  • Поддержка самых распространенных баз данных (MySQL, MariaDB, Percona, PostgreSQL, MongoDB).
  • Все актуальные версии PHP так же в наборе (PHP-8.0, PHP-7.4, PHP-7.3, PHP-7.2, PHP-7.1, PHP-7.0, PHP-5.6, PHP-5.5, PHP-5.4, PHP-5.3).
  • Поддержка Nginx, Tengine, OpenResty и ngx_lua_waf.
  • Возможность установить  Tomcat.
  • Поддержка JDK версий.
  • Все актуальные версии Apache.
  • Множество PHP модулей включающие: ZendOPcache, xcache, apcu, eAccelerator ,ZendGuardLoader, ionCube, SourceGuardian, imagick,gmagick, fileinfo, imap, ldap, calendar, phalcon, yaf, yar, redis, memcached, memcache, mongodb, swoole, xdebug.
  • Установка Pureftpd, phpMyAdmin по требованию.
  • Установка memcached, redis по требованию.
  • Jemalloc под MySQL и Nginx.
  • Готовый скрипт добавляющий Let’s Encrypt SSL сертефикат к каждому вашему домену
  • Система бекапов, как локальная, так и с выгрузкой на Aliyun OSS, Qcloud COS, UPYUN, QINIU, Amazon S3, Google Drive и Dropbox.

Полезные команды


Что бы добавить новый домен, вам достаточно ввести в консоли следующую команду:

~/oneinstack/vhost.sh

Чтобы создать доступ через FTP к вашему домену воспользуйтесь командой:

~/oneinstack/pureftpd_vhost.sh

Чтобы удалит домен введите команду:

~/oneinstack/vhost.sh —del

Чтобы настроить архивирование сервера (бэкап данных), пропишите в консоли такие команды:

~/oneinstack/backup_setup.sh
~/oneinstack/backup.sh

Редактировать список активных cron задач:

crontab -e

И последней строкой вписываем там команду:

0 1 * * * ~/oneinstack/backup.sh > /dev/null 2>&1

Жмем ctrl+x и подтверждаем сохранение.

Перезагрузка сервисов:

Nginx/Tengine/OpenResty:
service nginx {start|stop|status|restart|reload|configtest}
MySQL/MariaDB/Percona:
service mysqld {start|stop|restart|reload|status}
PostgreSQL:
service postgresql {start|stop|restart|status}
MongoDB:
service mongod {start|stop|status|restart|reload}
PHP:
service php-fpm {start|stop|restart|reload|status}
Apache:
service httpd {start|restart|stop}
Tomcat:
service tomcat {start|stop|status|restart}
Pure-FTPd:
service pureftpd {start|stop|restart|status}
Redis:
service redis-server {start|stop|status|restart|reload}
Memcached:
service memcached {start|stop|status|restart|reload}

Для проверки обновлений пакетов:

~/oneinstack/upgrade.sh

Если вы хотите полностью удалить систему, то специально для вас есть команда:

~/oneinstack/uninstall.sh