Установка - настройка 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 - консольний «блокнот». Напевно ви вже з ним знайомі, але я нагадаю базове управління: 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 (); ?