Установка 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) Делаем виртуальную машину доступную с хост-машины:
- В основном окне VirtualBox переходим в меню Файл — Свойства.
- В открывшемся окне переходим в раздел Сеть.
- Щёлкаем на иконке сетевой карты со знаком плюс, расположенной справа от списка Виртуальные сети хоста. После этого в списке Виртуальные сети хоста должна появиться запись vboxnet0
- Закрываем настройки VirtualBox.
- Открываем контекстное меню нужной виртуальной машины и выбираем пункт «Свойства» ( Ctrl+S ).
- Переходим в раздел Сеть.
- В качестве Адаптер 1 устанавливаем NAT, чтобы иметь доступ к «внешней сети».
- На вкладке Адаптер 2 устанавливаем флаг Включить сетевой адаптер, в поле Тип подключения выбираем Виртуальный адаптер хоста, в поле Имя устанавливаем vboxnet0. Это позволяет хост-машине иметь доступ к виртуальной машине при отсутствии «внешней сети».
- Щёлкаем OK в окне свойств виртуальной машины.
- Запускаем виртуальную машину.
- Следующей командой смотрим интерфейс, в данном случае enp0s1 , его и будем прописывать
ifconfig -a | less
- Редактируем файл с сетевыми интерфейсами ( sudo nano /etc/network/interfaces ). После редактирования файл должен быть похож на:
iface enp0s8 inet static
address 192.168.56.10
netmask 255.255.255.0- Далее делаем рестарт
service networking restart
- Меняем в virtualbox «сетевой мост» на «NAT»
- Производим ping установленного address
3) Как только мы все настроили, для удобства коннектимся к вирутальной машине по ssh
ssh user_name@ip_address
4) Устанавливаем Postfix
apt-get install nano htop screen sudo git curl postfix
выбираем в контекстном меню «без настройки»
5) Устанавливаем PostGre
- Запускаем установку
apt-get install wget ca-certificates
nano /etc/apt/sources.list.d/pgdg.list
- прописываем строку в файле pgdg.list :
deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
- далее производим обновление
apt-get update
- устанавливаем обновление
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
- Делаем конфигурационный файл 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; }
- далее командой делаем символичную ссылку:
ln -s /etc/nginx/sites-available/php.conf /etc/nginx/sites-enabled/
- Делаем рестарт сервера:
service nginx restart
8) На клиентской машине (физической) делаем перенаправление, чтобы смотрел с нашего сайта на 127.0.1.1 следующей командой в hosts:
sudo nano /etc/hosts
9) Установка и настройка NFS на серверной части
- Устанавливаем. Соединившись по SSH с компьютером сервером или же просто в его консоли вводим:
sudo apt install nfs-kernel-server
- Настраиваем. Для настройки списка дирректорий которые мы хотим открыть и списка кому мы хотим их открыть отредактируем файл /etc/exports:
sudo nano /etc/exports
/data 192.168.56.1/24(rw,no_root_squash,sync)
— rw — дает клиентам право на запись;
— no_root_squash — по-умолчанию пользователь root на клиентской машине не будет иметь доступа к открытым директориям на сервере. Этой опцией мы снимаем это ограничение. В целях безопасности этого лучше не делать;
- Установка и настройка NFS-клиент
- Установка. Выполняем в терминале компьютера, который будет подключаться следующее:
sudo apt-get install portmap nfs-common
- Настройка. Для начала создадим директорию в которую будет монтироваться удалённая папка:
cd ~
mkdir data
Монтируем папку вручную
- Создаём на рабочем столе или в какой-либо другой папке текстовый файл:
nano ~/Рабочий\ стол/nfs-server-connect
- Пишем в него:
#! /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
- Теперь когда необходимо присоединиться к серверу выполняем этот сценарий в терминале для того чтобы можно было ввести пароль для sudo.
- Далее запускаем скрипт командой
./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 |
- Смотрим какие модули включены командой:
- установка пакетов автоматически производится, но они не подключаются, делаем это вручную:
находим файлы .so, они лежали в моем случае в usr/lib/php/20151012, далее в php.ini по поиску нашли в php.ini директиву extantions_dir, раскомментировали, прописали путь до библиотек т.е на 20151012 - далее производим подключение этих файлов в самом php.ini следуя данному образцу extantion= библиотека.so
- далее сохраняемся и перезапускаемся.
php -i (из консоли)
либо в самом исполняемом файле:
phpinfo();