Ўстаноўка - налада VPS / VDS з нуля з PHP7

  1. Аб VPS Дадзенае кіраўніцтва апісвае поўны працэс налады VPS пад вашы сайты, на вашым віртуальным...
  2. карысныя ўтыліты
  3. паслугі

Аб VPS

Дадзенае кіраўніцтва апісвае поўны працэс налады VPS пад вашы сайты, на вашым віртуальным серверы пад Linux, выкарыстоўваючы Apache, PHP 7, MySQL, phpmyadmin, vsftpd як FTP, і іншыя дробныя ўтыліты. Усё, што я знайшоў у інтэрнэце ці не поўнае, ці месцамі не падыходзіла да сучасных рэалій. Я пераносіў з звычайнага віртуальнага хостынгу свой сайт, так як упёрся ў абмежаванні большасці хостеров.

Калі вы плануеце прадаваць хостынг або ўсталёўваць панэль кіравання (ISP Manager, cPanel , Plesk і да т.п.), дадзены метад налады не падыдзе. Настройкі для такога разгортвання іншыя. PHP7 мае шэраг сур'ёзных пераваг у хуткадзейнасці і аптымізацыі ў параўнанні з PHP 5. Мае праекты на WordPress, да прыкладу, прыкметна хутчэй працуюць. Важна ведаць: калі ў вас не моцна вядомая CMS з апошнімі абнаўленнямі, а нейкі самописный праект, не аптымізаваны пад PHP7, то магчымыя нестыкоўкі.

Я выкарыстоўваю ў дадзеным кіраўніцтве Ubuntu Server 14.04.4 LTS, таксама ўсе тут апісанае падыдзе для VPS \ VDS на іншых Debian - падобных дыстрыбутываў. Маецца на ўвазе, што вы маеце базавыя веды Linux і ўмееце працаваць з тэрмінальнай кансоллю. Я часткова растлумачу асновы, але ўсё ж.

наладжвальны

Такім чынам, у нас ёсць свежаўсталяванай на VPS сістэма і доступ па SSH. Лагін на сервер пад рутом.

1. Створым сабе карыстальніка. Працаваць пад рутом без патрэбы - прыкмета дурні.

adduser user

Дзе user - мяняем на ваш будучы лагін. Адказваем на пытанні сістэмы, пароль прыдумляем складаны, ваш лагін будзе асноўным для выдаленага кіравання сістэмай, рут мы ў далейшым адключым ад аддаленага тэрмінала з меркаванняў бяспекі.

2. Дадаваны нашага створанага карыстальніка да групы sudo, каб выконваць каманды з-пад рута:

usermod -a -G sudo user

Плюс, дадамо самога сябе ў групу адміністратараў:

sudo usermod -aG adm YourUserName

3. Выходзім з сістэмы (logout) і лагіны пад сваім новым створаным карыстальнікам на SSH. З гэтага моманту, калі нам трэба выканаць каманду ад імя рута, мы выкарыстоўваем аперанд sudo перад астатнімі аперанда каманды (прыклады ніжэй).

4. Варта вам толькі апублікаваць ваш сайт-адрас сервера VPS, як усялякія хакинговые боты пачнуць стукацца да вас на тэрмінальны порт 22. Таму, засцерагчы тэрмінал VPS, змяніўшы порт з 22 яшчэ на штосьці іншае. Як новы порт, уводны любы лік ад 1 да 65535 Нельга выкарыстоўваць для гэтага парты 80, 443, 3306, 22, 21 і 8080. Яны занятыя пад іншыя сэрвісы нашага VPS.

sudo nano / etc / ssh / sshd_config

Nano - кансольны «нататнік». Напэўна вы ўжо з iм пазнаёмiлiся, але я нагадаю базавую кіраванне: Ctrl + X - выхад, Ctrl + O - захаванне, Ctrl + W - пошук, стрэлкі - перамяшчэнне курсора.

Шукаем у якое адкрылася файле радок «Port 22», звычайна яна прама зверху. Змяняны 22 на абраны вамі порт. Далей проматываешь кнопкай PgDn да самага нізу файла і дапісваем кожную каманду з новага радка:

AddressFamily inet PermitRootLogin no AllowUsers user

Першая каманда абмяжоўвае падлучэння толькі стандартам IPv4, адключаючы непатрэбны IPv6. Другая забараняе логініться у тэрмінал пад рутом. Трэцяя забараняе наогул каму небудзь логініться, акрамя вас - падстаўляйце свой лагін замест user.

Захоўваем і закрываем, як я паказваў вышэй. Надалей усё рэдагавання файлаў будуць праходзіць па такім сцэнары. Перазапусціць аддалены тэрмінал, каб налады ўжылі:

sudo service ssh restart

5. Разлогинтесь з тэрміналу (logout), і падключыцеся да сервера зноўку, выкарыстоўваючы новы порт.

6. абновяць крыніцы прыкладанняў і самі прыкладання:

sudo apt-get update && sudo apt-get upgrade

Пагаджаемся на ўстаноўку абнаўленняў націснуўшы Y і Enter.

7. Калі ў вас не самай апошняй версіі сістэма, мае сэнс абнавіць дыстрыбутыў да апошняга подрелиза (неабавязковы крок):

sudo apt-get dist-upgrade

8. Паскараем агульную працу сістэмы - Prelink і Preload. Prelink патрэбен для стварэння статычных адрасоў для бібліятэк, Preload - гэта невялікае дадатак, якое сочыць за файламі найбольш часта выкарыстоўваюцца прыкладанняў, і предзагружает іх у памяць, пакуль сістэма прастойвае.

sudo apt-get install prelink sudo apt-get install preload

Далей, трэба ўключыць Prelink:

sudo nano / etc / default / prelink

Адкрыецца знаёмы Nano, і там змяніўшы радок з PRELINKING = unknown на PRELINKING = yes. Не забываем захоўваць перад закрыццём, вы ж запомнілі ўжо, ага? Наступны крок - дадаем у планавальнік cron штодзённы запуск:

sudo /etc/cron.daily/prelink

9. C сістэмнымі перадусталёўкамі пакуль скончым, ставім Апач:

sudo apt-get install apache2

Таксама, ўключым mod_rewrite. Чамусьці па змаўчанні ў большасці сістэм ён адключаны. Адказвае за перапісванне билибердовых спасылак пад прыгожыя кароткія. Крытычна для працы шматлікіх сайтаў.

sudo a2enmod rewrite

10. Далей, MySQL-сервер:

sudo apt-get install mysql-server

Ўстаноўка можа спытаць адрас вашага сервера, паказваем localhost, калі вы пакуль не прызначылі знешні дамен. Таксама задаем галоўны пароль базы дадзеных, складаны, літары-лічбы-розны рэгістр. Калі вы яшчэ не здагадаліся, нагадваю - усе лагіны-паролі трэба запісаць і захоўваць у бяспечным месцы.

MySQL сервер апошніх версій карэктна наладжаны для працы ў нашым асяродку, прымае запыты толькі ад localhost. Таму, не лезем у конфіг.

11. Ставім php7. На момант напісання артыкула, файлавыя рэпазітары Ubuntu не ўтрымліваюць PHP7, таму нам трэба будзе дадаць неафіцыйны рэпазітар і з яго паставіць php7:

sudo add - apt - repository ppa: ondrej / php

Пасля заканчэння дадання, спытае ў вас канчатковага згоды, пацвярджаем на Y і Enter. Далей абновім спіс прыкладанняў і ўсталюем патрэбнае:

sudo apt-get update sudo apt - get install php7. 0 - cli php7. 0 - common libapache2 - mod - php7. 0 php7. 0 php7. 0 - mysql php7. 0 - fpm php7.0-mbstring php7.0-gd php7.0-curl

Набор модуляў тут мной вызначаны эксперыментальнай. Ва ўсіх крыніцах пазначаны розныя, дзесьці няма mbstring, але ён патрэбны для phpmyadmin, адмінку для MySQL. Дзесьці адсутнічае curl і gd, але яны патрэбныя для капчу і некаторых убудоў CMS. У любым выпадку, дадатковыя модулі можна заўсёды даставіць пасля.

12. Поднастроим Apache. Пяройдзем (cd) у каталог з наладамі апача:

cd / etc / apache2

Адрэдагуем галоўны канфігурацыйны файл:

sudo nano apache2.conf

Ужо ўсталяваныя зменныя ня чапаем, проматываешь ў канец файла. Там дадаем кожную каманду з новага радка:

ServerName localhost ServerSignature Off

Гэта задасць хост па змаўчанні для самавызначэння апача (localhost) і адключыць адлюстраванне версіі сістэмы і сервера на старонках памылак. Гэта не бяспечна. Як заўсёды, захоўваем, спыняем.

13. Поднастроим PHP.

cd /etc/php/7.0/apache2 sudo nano php.ini

Многія скрыпты выкарыстоўваюць кароткі тэг адкрыцця, замест поўнага, таму ўключым гэтую опцыю, замяніўшы Off на On (адсюль і далей паказваю то, як павінна быць, а не як было):

short_open_tag = On

Раздвинем абмежаванні па памяці і загрузцы файлаў:

memory_limit = 128M post_max_size = 64M

14. Усталюем phpmyadmin. Гэта графічная панэль кіравання базамі дадзеных MySQL. Першы раз калі я яго ставіў з apt рэпазітара, ён не ўзляцеў. Аказалася, рэпазітары ubuntu не ўтрымліваюць апошняй версіі phpmyadmin, якая разумее PHP7, так як і самога PHP7 ў гэтых рэпазітарах таксама няма.

Лепш за ўсё ўсталёўваць у / usr / share:

cd / usr / share

Качаем, на момант напісання, апошняя версія 4.6.0:

sudo wget https://files.phpmyadmin.net/phpMyAdmin/4.6.0/phpMyAdmin-4.6.0-all-languages.zip

Ўсталюем unzip, ён спатрэбіцца:

sudo apt-get install unzip

Разархивируем:

sudo unzip phpMyAdmin-4.6.0-all-languages.zip

Пераназавем тэчку:

sudo mv phpMyAdmin-4.6.0-all-languages ​​phpmyadmin

Прылепы правы:

sudo chmod - R 0755 phpmyadmin

Адрэдагуем конфіг-файл апача, каб ён ведаў, гдеи скаць наш phpmyadmin:

sudo nano / etc / apache2 / sites - available / 000 - default. conf

Пасля «DocumentRoot / var / www / html» дадаем радкі:

Alias ​​/ phpmyadmin "/ usr / share / phpmyadmin /" <Directory "/ usr / share / phpmyadmin /"> Order allow, deny Allow from all Require all granted </ Directory>

Усё гатова, перазапусціць Апач:

sudo service apache2 restart

15. Пасля ўсіх маніпуляцый, у нас будзе тэставая старонка апача адчыняцца ў браўзэры па адрасе вашага сервера, а phpmyadmin будзе даступны па адрасе http: // вашсайт / phpmyadmin. Лагін туды root, пароль - пазначаны пры ўсталёўцы MySQL.

16. Створым старницу phpinfo для праверкі работы сервера:

cd var / www / html sudo mkdir phpinfo cd phpinfo sudo nano index.php

Вставляем такой код у Nano і захоўваем:

<? Php phpinfo (); ?>

Зараз па адрасе http: // вашсайт / phpinfo павінна адкрывацца сэрвісная старонка з інфармацыяй пра PHP і падлучаных модулях, напрыклад:

Зараз па адрасе http: // вашсайт / phpinfo павінна адкрывацца сэрвісная старонка з інфармацыяй пра PHP і падлучаных модулях, напрыклад:

Калі ўсё працуе і адлюстроўваецца, схавайце phpinfo, змяніўшы назву гэтай тэчкі на якую-небудзь толькі вам вядомую билиберду:

cd / var / www / html sudo mv phpinfo phpinfo312341

Прамы доступ па вядомым шляху - дзірка ў бяспецы VPS.

17. Паставім FTP. Выкарыстоўваем vsftpd:

sudo apt-get install vsftpd

Правыя канфігурацыю:

sudo nano /etc/vsftpd.conf

Пераканайцеся, што параметры ў гэтым файле адпавядаюць прыведзеных ніжэй. Калі параметры закаментаваны знакам #, раскаментуйце яго, выдаліўшы #. Калі параметру няма, дадайце уручную ў канец файла:

anonymous_enable = No local_enable = YES write_enable = YES

Перазапусціць фтп:

sudo service vsftpd restart

Пасля гэтага, можна логініться на сервер па FTP, выкарыстоўваючы лагін і пароль ад сістэмы. C гэтым конфігах, у вас будзе доступ да ЎСЁЙ аперацыйнай сістэме. Калі вам трэба абмежаваць доступ да тэчак, пашукайце ў інтэрнэце кіраўніцтва.

18. Рэзервовае капіраванне. Альфа і Амега адміністравання VPS. Бэкап трэба рабіць хоць бы раз у тыдзень. Наступны скрыпт стварае архіў з бэкапам тэчак / var / www (дзе звычайна ляжаць сайты), / etc, / var / log і / root. Таксама бэкап ўсе базы MySQL. Скрыпт варта выконваць ад імя рута з папкі, у якой будуць захоўваецца бэкапы. Таксама, пажадана ўнесці файл скрыпту ў cron. Уласна, скрыпт:

#! / Bin / bash USER = root # юзэр базы дадзеных PASSWORD = password # пароль BACKUP = / media / Backup # куды захоўваць бэкап LOG = / var / log # дырэкторыя для чысткі старых логаваў OLD = 30 # колькі дзён захоўваць бэкап (больш старыя будзе выдаляцца) PREFIX = work # калі некалькі сервераў - выкарыстоўвайце розныя прэфіксы, каб не блытацца DATE = `date '+% Y-% m-% d'` echo "Backup database to $ BACKUP" mkdir $ BACKUP / $ DATE. sql cd $ BACKUP / $ DATE.sql for i in `mysql -u $ USER -p $ PASSWORD -e'show databases; ' | grep -v information_schema | grep -v Database`; do mysqldump -u $ USER -p $ PASSWORD $ i> $ DATE- $ i.sql; done cd .. tar -cjf $ BACKUP / $ DATE-sql- $ PREFIX.tar.bz2 ./$DATE.sql rm -rf ./$DATE.sql echo "Backup files to $ BACKUP" tar -cjf $ BACKUP / $ DATE-files- $ PREFIX.tar.bz2 \ / var / www / \ / etc / \ / var / log / \ / root / \ --exclude = $ BACKUP echo "Deleting old backups and logs from $ BACKUP & $ LOG "find $ LOG -type f \ (-name" * .gz "-o -name" * .1 * "\) -exec rm '{}' \; find $ BACKUP -mtime + $ OLD -exec rm '{}' \;

Звярніце ўвагу, верхнія некалькі радкоў скрыпту трэба змяніць у адпаведнасці з вашай канфігурацыяй MySQL.

Дапусцім, у нас у корані будзе папка / backup і ў ёй будзе і скрыпт, і самі рэзервовыя копіі. Пераходзім у корань файлавай сістэмы:

cd / sudo mkdir backup cd backup sudo nano start.sh

І вставляем туды скрыпт вышэй. Захоўваем, прызначаем яго выкананым:

sudo chmod + x start.sh

Цяпер, камандай:

sudo ./start.sh

Мы запусцім працэс бэкапу. Для сярэдняга сайта на сярэдняй магутнасці VPS гэта займае 5-10 хвілін. Пасля заканчэння працэсу, у тэчцы / backup будуць некалькі архіваў з рэзервовымі копіямі. Як я казаў вышэй, лепш за ўсё гэты скрыпт запхнуць у cron. Пагугліце, як гэта зрабіць.

На гэтым асноўная налада сервера скончана - мы атрымалі цалкам працоўны, сучасны і прадукцыйны вэб-сервер на VPS. Я не закрануў некаторыя дробныя пытанні, звязаныя з наладжваць доступаў на вэб-сэрвэры, бо гэтым часта займаюцца адміны і на звычайным віртуальным хостынгу, якія як раз і пералазіў з часам на VPS.

карысныя ўтыліты

Варта згадаць некаторыя карысныя ўтыліты, якімі я карыстаюся ў адміністраванні, і якія могуць спатрэбіцца вам.

WP-CLI

Гэта камандная ўтыліта для адміністравання WordPress з тэрмінальнай кансолі Linux. Умее вельмі шмат, бэкап, капіяваць дадзеныя ў базе дадзеных, адключаць і ўключаць убудовы і гэтак далей. Вельмі карысна, у выпадках калі ў вас канфлікт убудоў, ці вы дзе-то накосорезили і адмінка сайта ў вас адвалілася. Больш падрабязна тут .

Multitail

Праграма для чытання логаваў з прасунутым высновай. Выводзіць змесціва лог-файлаў і дазваляе назіраць за іх зменамі ў рэальным часе з падсветкай сінтаксісу. глядзім тут .

Htop

Поўны аналаг «Дыспетчара задач» з Windows для тэрмінальнай кансолі. Вельмі карысная рэч для маніторынгу працэсаў, памяці, загрузкі і кіравання працэсамі. Ставіцца камандай:

sudo apt-get install htop

І выклікаецца (хто б думаў) камандай:

htop

Let's Encrypt

Бясплатны сэрвіс для выдачы SSL сертыфікатаў. Выдатны варыянт для перакладу вашага сайта на HTTPS. Больш у маёй асобным артыкуле тут .

паслугі

Калі для вас усё гэта складана, вы не ўпэўненыя ў сабе, або хочаце дадатковай падтрымкі, то я гатовы ўзяцца за перанос \ ўстаноўку вашага праекта на VDS \ VPS або выдзелены сервер. Больш за 5 гадоў вопыту ў адміністраванні сеткавых і вэб-праектаў. У рэальным жыцці працую сістэмным адміністратарам. Першасная кансультацыя бясплатна! Звяжыцеся са мной зручным для Вас спосабам праз раздзел кантакты .

Не забываем захоўваць перад закрыццём, вы ж запомнілі ўжо, ага?
Php phpinfo (); ?