Настройка VPS на Ubuntu 16.04 + Nginx + PHP + MongoDB

в 12:23, , рубрики: mongodb, nginx, php, Ubuntu, vps

В статье описана первичная настройка сервера. Описанные действия, проводились на виртуальной машине Vagrant и VPS.

Установка Nginx

Установим Nginx последней стабильной версии (на данный момент 1.12.1).

Для настройки репозитория нужно добавить в конец файла /etc/apt/sources.list пару строк.

Открываем файл sources.list для редактирования

sudo nano /etc/apt/sources.list

Дописываем в конец файла строки:

deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu/ xenial nginx

Где xenial – кодовое имя дистрибутива Ubuntu (16.04 – это xenial).

Сохраняем и закрываем файл.

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

Скачиваем ключ

wget https://nginx.org/keys/nginx_signing.key

Добавляем файл в связку ключей

sudo apt-key add nginx_signing.key

Далее устанавливаем Nginx

sudo apt-get update
sudo apt-get install nginx

Установка PHP 7.1

Добавляем репозиторий

sudo add-apt-repository ppa:ondrej/php

Обновляем список репозиториев

sudo apt-get update

Устанавливаем пакеты

sudo apt-get install php7.1 php7.1-fpm php7.1-mbstring php7.1-mongo

Установка MongoDB

Импортируем публичный ключ GPG MongoDB

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

Создаем файл списка для MongoDB

echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Обновляем список репозиториев

sudo apt-get update

Устанавливаем последнюю стабильную версию MongoDB (на данный момент 3.4)

sudo apt-get install mongodb-org

Проверяем запустилась ли MongoDB

ps -ax | grep mongod

Если нет, то добавляем MongoDB в автозагрузку

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

sudo nano /etc/init.d/mongodstartup

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

#! /bin/sh
sudo service mongod start

Сохраняем файл и делаем так, чтобы скрипт можно было исполнять

sudo chmod +x /etc/init.d/mongodstartup

Добавляем скрипт mongodstartup в автозагрузку

sudo update-rc.d mongodstartup defaults 80

Если понадобится удалить скрипт из автозагрузки, выполнить команду:

sudo update-rc.d -f /etc/init.d/mongodstartup remove

Стартуем MongoDB

sudo service mongod start

Установка composer

Установите composer следуя инструкции на официальном сайте.

После этого для глобальной установки composer пропишем команду

sudo mv composer.phar /usr/local/bin/composer

Установка библиотеки MongoDB для php

Перейдите в папку с вашим проектом

cd /папка/c/проектом

Установим библиотеку последней версии (на данный момент 1.1.2)

composer require mongodb/mongodb

Настройка Nginx

Редактируем файл настроек Nginx

sudo nano /etc/nginx/conf.d/default.conf

Изменяем блок location /

location / {
        # путь к файлам вашего проекта
        root   /vagrant/pomodorolab.info/public_html; 
        # перенаправление всех несуществующих файлов на index.php
        try_files $uri $uri/ /index.php?$args;  
        #отключение кеша
        sendfile off;
        # дописываем index.php, если его нет
        index index.php index.html index.htm; 
    }

Раскоментируем блок location ~ .php$ — убираем # и изменяем на:

location ~ .php$ {
        # Закрываем доступ к несуществующим php файлам
        try_files $uri = 404;
        # путь к файлам вашего проекта
        root   /vagrant/pomodorolab.info/public_html; 
        # путь к unix-сокету php
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        #Задаём имя файла, который при создании переменной $fastcgi_script_name будет добавляться после URI, если URI заканчивается слэшом
        fastcgi_index index.php;
        #Задаём параметр, который будет передаваться FastCGI-серверу.
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params; 
    }

Перезагрузим конфигурацию и службу Nginx

sudo nginx -s reload
sudo service nginx restart

Сервер готов.

В статье не затронуты вопросы безопасности и оптимизации. Для лучшего понимания вопроса, ознакомьтесь с официальной документацией проектов:
Документация Nginx
Документация MongoDB
Работа с библиотекой MongoDB на PHP

Автор: UnDenya

Источник

Поделиться

* - обязательные к заполнению поля