Ubuntu-Nginx-PHP7-Symfony

Установка Symfony на Ubuntu server 16.04

Нам понадобится:
1) VirtualBox
2) Ubuntu server 16.04
3) Nginx
4) Postfix (агент передачи почты)
5) PostgreSQL (СУБД)
6) PHP7.0-fpm
7) Symfony 3.0

Итак, приступим.

1) После установки версии Ubuntu server 16.04 в качестве виртуальной машины в VirtualBox производим обновление системы командой:
Обновляем пакеты, для которых в репозитории доступны новые версии:
apt-get upgrade
Обновляем информацию о пакетах, содержащихся в репозиториях:
apt-get update

2) Делаем виртуальную машину доступную с хост-машины:

    1. В основном окне VirtualBox переходим в меню Файл — Свойства.
    2. В открывшемся окне переходим в раздел Сеть.
    3. Щёлкаем на иконке сетевой карты со знаком плюс, расположенной справа от списка Виртуальные сети хоста. После этого в списке Виртуальные сети хоста должна появиться запись vboxnet0

1

    1. Закрываем настройки VirtualBox.
    2. Открываем контекстное меню нужной виртуальной машины и выбираем пункт «Свойства» ( Ctrl+S ).
    3. Переходим в раздел Сеть.
    4. В качестве Адаптер 1 устанавливаем NAT, чтобы иметь доступ к «внешней сети».

2

    1. На вкладке Адаптер 2 устанавливаем флаг Включить сетевой адаптер, в поле Тип подключения выбираем Виртуальный адаптер хоста, в поле Имя устанавливаем vboxnet0. Это позволяет хост-машине иметь доступ к виртуальной машине при отсутствии «внешней сети».

3

  1. Щёлкаем OK в окне свойств виртуальной машины.
  2. Запускаем виртуальную машину.
  3. Следующей командой смотрим интерфейс, в данном случае enp0s1 , его и будем прописывать
    ifconfig -a | less
  4. Редактируем файл с сетевыми интерфейсами ( sudo nano /etc/network/interfaces ). После редактирования файл должен быть похож на:
  5. iface enp0s8 inet static
    address 192.168.56.10
    netmask 255.255.255.0
  6. Далее делаем рестарт service networking restart
  7. Меняем в virtualbox «сетевой мост» на «NAT»
  8. Производим ping установленного address

3) Как только мы все настроили, для удобства коннектимся к вирутальной машине по ssh
ssh user_name@ip_address
4) Устанавливаем Postfix
apt-get install nano htop screen sudo git curl postfix
выбираем в контекстном меню «без настройки»
5) Устанавливаем PostGre

    1. Запускаем установку

apt-get install wget ca-certificates
nano /etc/apt/sources.list.d/pgdg.list

    1. прописываем строку в файле pgdg.list :

deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main

  • скачиваем postgresql командой с сайта
  • wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

      1. далее производим обновление

    apt-get update

      1. устанавливаем обновление

    apt-get install postgresql

    6) Устанавливаем NGINX

    apt-add-repository ppa:nginx/development
    apt-get update
    apt-get upgrade
    apt-get install nginx nginx-common

    7) Устанавливаем PHP7.0
    sudo apt-get install php7.0-fpm

      1. Делаем конфигурационный файл php.conf в соответствии с нашим примером:
    server {
        server_name php.xxx;
        root /home/xxx/projects/project1/test/web;
    
        location / {
            try_files $uri /app.php$is_args$args;
        }
        location ~ ^/(app_dev|config)\.php(/|$) {
            fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            include fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
            fastcgi_param DOCUMENT_ROOT $realpath_root;
        }
        location ~ ^/app\.php(/|$) {
            fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            include fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
            fastcgi_param DOCUMENT_ROOT $realpath_root;
        }
    
        error_log /var/log/nginx/project_error.log;
        access_log /var/log/nginx/project_access.log;
    }
    
      1. далее командой делаем символичную ссылку:

    ln -s /etc/nginx/sites-available/php.conf /etc/nginx/sites-enabled/

      1. Делаем рестарт сервера:

    service nginx restart

    8) На клиентской машине (физической) делаем перенаправление, чтобы смотрел с нашего сайта на 127.0.1.1 следующей командой в hosts:
    sudo nano /etc/hosts
    9) Установка и настройка NFS на серверной части

      1. Устанавливаем. Соединившись по SSH с компьютером сервером или же просто в его консоли вводим:

    sudo apt install nfs-kernel-server

      1. Настраиваем. Для настройки списка дирректорий которые мы хотим открыть и списка кому мы хотим их открыть отредактируем файл /etc/exports:

    sudo nano /etc/exports
    /data 192.168.56.1/24(rw,no_root_squash,sync)

    — rw — дает клиентам право на запись;

    — no_root_squash — по-умолчанию пользователь root на клиентской машине не будет иметь доступа к открытым директориям на сервере. Этой опцией мы снимаем это ограничение. В целях безопасности этого лучше не делать;

        • Установка и настройка NFS-клиент
      1. Установка. Выполняем в терминале компьютера, который будет подключаться следующее:

    sudo apt-get install portmap nfs-common

      1. Настройка. Для начала создадим директорию в которую будет монтироваться удалённая папка:

    cd ~
    mkdir data

    Монтируем папку вручную

      1. Создаём на рабочем столе или в какой-либо другой папке текстовый файл:

    nano ~/Рабочий\ стол/nfs-server-connect

      1. Пишем в него:
    #! /bin/bash
    sudo mount -t nfs -o ro,soft,intr 192.168.1.2:/data ~/data
    

    Внимание! Вместо 192.168.1.2:/data впишите IP или имя сервера и путь к директории совместного пользования. Опции монтирования можно изменить.
    Делаем его исполняемым:


    chmod +x ~/Рабочий\ стол/nfs-server-connect

      1. Теперь когда необходимо присоединиться к серверу выполняем этот сценарий в терминале для того чтобы можно было ввести пароль для sudo.
      2. Далее запускаем скрипт командой

    ./nfs-server-connect

     
    10) Установка Symfony через композер

    composer create-project symfony/framework-standard-edition my_project_name "3.0.*"

    Данной командой устанавливаем проект my_project_name с использованием Symfony 3.0
    FAQ:
    Проблема, с которой можно столкнуться при установке Symfony это отсутствие некоторых модулей в новой версии php7.0-fpm

    В конкретном моем случае у меня не были подключены следующие модули в extantion в php.ini:

    <

    calendar.so mysqli.so sockets.so
    fileinfo.so shmop.so tokenizer.so
    pdo_mysql.so sysvshm.so exif.so
    readline.so curl.so iconv.so
    sysvsem.so gettext.so opcache.so
    ctype.so mysqlnd.so posix.so
    ftp.so phar.so sysvmsg.so
    1. Смотрим какие модули включены командой:
    2. php -i (из консоли)
      либо в самом исполняемом файле:
      phpinfo();

    3. установка пакетов автоматически производится, но они не подключаются, делаем это вручную:
      находим файлы .so, они лежали в моем случае в usr/lib/php/20151012, далее в php.ini по поиску нашли в php.ini директиву extantions_dir, раскомментировали, прописали путь до библиотек т.е на 20151012
    4. далее производим подключение этих файлов в самом php.ini следуя данному образцу extantion= библиотека.so
    5. далее сохраняемся и перезапускаемся.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

    Материалы распространяются под лицензией Creative Commons: Атрибуция — Некоммерческое использование — С сохранением условий (Attribution-NonCommercial-ShareAlike) 3.0 Unported.
    Рейтинг@Mail.ru