Ўстаноўка - налада VPS / VDS з нуля з PHP7
- Аб VPS Дадзенае кіраўніцтва апісвае поўны працэс налады VPS пад вашы сайты, на вашым віртуальным...
- карысныя ўтыліты
- паслугі
Аб 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 і падлучаных модулях, напрыклад:
Калі ўсё працуе і адлюстроўваецца, схавайце 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 (); ?