Подготовка LAMP к хостингу проекта на Django

В данной заметке подготовим LAMP (в нашем случае Linux Apach MySQL Python, но для PHP не сильно отличается) для хостинга проекта на Django.

  • Подготовка сервера
  • VirtualEnv
  • Установка и настройка LAMP
  • Настройка Virtual Host в Apache 2
  • Подготовка директории сайта
  • Настройка клиента (если нет DNS в локальной сети)

Быстрый старт на CentOS7

sudo yum install -y httpd
sudo yum install -y php
sudo systemctl enable httpd
sudo systemctl start httpd

sudo rpm -iUvh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum -y update
sudo yum -y install phpmyadmin

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

Ниже пример в Ubuntu

Подготовка сервера

sudo apt install openssh-server
sudo apt update -y
sudo apt upgrade -y
sudo apt install python3-pip -y
sudo apt install libapache2-mod-wsgi-py3 -y
sudo apt install tree -y
sudo pip3 install --upgrade pip 

 

Виртуальное окружение

sudo pip3 install virtualenv virtualenvwrapper

Редактируем bashrc (вспомнить как записать в конец файла через шел)

sudo nano ~/.bashrc

в конец файла эти строки

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

Перезапускаем профайл

source ~/.bashrc

Общие команды управления VirtualEnv Wrapper

mkvirtualenv {EnvName} # Создать виртуальное окружение
workon # Все виртуальные окружения
workon {OtherEnvName} # Переход в виртуальное окружение
lssitepackages -1 # Какие пакеты установлены в VE
pip3 freeze > req-1.txt # Записать все зависимости в один файл
pip3 install -r req-1 .txt # Воссоздать все зависимости в новом VE
deactivate # Выключить текущее окружение

Или VirtualEnv

virtualenv {venvName}
source {venvName}/bin/activate
deactivate

Установка и настройка LAMP

sudo apt install apache2 -y
sudo apt install php libapache2-mod-php php-mcrypt php-mysql -y 
sudo apt install python-dev mysql-server libmysqlclient-dev -y
sudo apt install phpmyadmin php-mbstring php-gettext -y

Включаем модуль rewrite

surf@ubuntu:~$ sudo a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
  service apache2 restart
surf@ubuntu:~$ sudo service apache2 restart
surf@ubuntu:~$ apache2ctl -M | grep "rewrite_module"
 rewrite_module (shared)

Устанавливаем пакет для работы Python3 и MySQL

sudo pip3 install PyMysql

Настройка Virtual Hosts в Apache2

Создаем файл настроек для виртуального хоста

sudo nano /etc/apache2/sites-available/{project_name}.conf

С содержимым

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
     ServerName inventory
     DocumentRoot /home/surf/www/{project_name}/public_html

     <Directory '/home/surf/www/{project_name}/public_html/'>
       AllowOverride All  # Иначе вернет Access deny ;
       Allow From All
       Require all granted # Это требование появилось в Apache2.4 ;
     </Directory>
     ErrorLog /home/surf/www/{project_name}/error.log # Определяем куда кладем логи.Полезно если что то не работает ;
     CustomLog /home/surf/www/{project_name}/access.log
</VirtualHost>

Создаем директорию по указанному пути, при необходимости назначаем соответствующие поля

mkdir -p /home/surf/www/{project_name}/public_html

Создаем ссылку на созданный виртуальный хост в дирректории sites-enabled/

sudo a2ensite {project_name}.conf

Рестарт сервера

sudo service apache2 reload

Подготовка директории проекта

В директории проекта нужно подготовить файл .htaccess

.htaccess
Options +ExecCGI
AddHandler wsgi-script .wsgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.wsgi/$1 [QSA,PT,L]

А так же index.wsgi

index.wsgi
import os, sys

sys.path.append('/home/surf/www/{project_name}/public_html/djangosite/') # path django progect;
sys.path.append('/home/surf/.virtualenvs/{project_name}/lib/python3.5/site-packages/') # path to django packet if intall via pip3 virtualenv;

os.environ['DJANGO_SETTINGS_MODULE'] = '{project_name}.settings' # 'project_name.settings';

import django
django.setup()

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Настройка на клиенте

Добавляем запись в hosts — если нет DNS

192.168.59.129 {project_name}

В Win hosts лежит тут:

C:\Windows\System32\drivers\etc\

В Linux

/etc/hosts

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

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