Как настроить сервер Apache, MySQL и Python (LAMP) без фреймворка в Ubuntu 14.04

Вступление

Эта статья проведет вас через настройку сервера с Python 3, MySQL и Apache2 без помощи фреймворка. К концу этого урока вы сможете полностью запустить систему barebones в производство.

Джанго часто является единственной остановкой для всех вещей Python; он совместим практически со всеми версиями Python, поставляется с пользовательским сервером и даже имеет базу данных, устанавливаемую одним щелчком мыши. Настройка ванильной системы без этого мощного инструмента может быть сложной задачей, но она дает вам неоценимое понимание структуры сервера с нуля.

В этом руководстве используются только установщики пакетов, а именно apt-get и Pip. Package installers - это просто небольшие программы, которые делают установку кода намного более удобной и управляемой. Без них обслуживание библиотек, модулей и других фрагментов кода может стать чрезвычайно грязным делом.

Предпосылки

Чтобы следовать этому уроку, вам понадобится:

Шаг 1 - сделать Python 3 по умолчанию

На этом шаге мы установим Python 3 по умолчанию для нашей команды + python +.

Сначала проверьте текущую версию Python.

python --version

На свежем сервере Ubuntu 14.04 это выдаст:

Python 2.7.6

Мы бы хотели, чтобы + python запускал Python 3. Итак, во-первых, давайте удалим старый двоичный файл 2.7.

sudo rm /usr/bin/python

Затем создайте символическую ссылку на двоичный файл Python 3 на его месте.

sudo ln -s /usr/bin/python3 /usr/bin/python

Если вы снова запустите + python --version +, вы увидите + Python 3.4.0 +.

Шаг 2 - Установка Pip

В этом разделе мы установим Pip, рекомендуемый установщик пакетов для Python.

Сначала обновите индекс пакета системы. Это гарантирует, что старые или устаревшие пакеты не будут мешать установке.

sudo apt-get update

Pip позволяет нам легко управлять любым пакетом Python 3, который мы хотели бы иметь. Чтобы установить его, просто запустите следующее:

sudo apt-get install python3-pip

Обзор Pip вы можете прочитать в этом учебнике по адресу th руководства.

Шаг 3 - Установка MySQL

В этом разделе мы установим и настроим MySQL.

Установить SQL просто:

sudo apt-get install mysql-server

Введите надежный пароль для пользователя root MySQL при появлении запроса и запомните его, потому что он понадобится нам позже.

Сервер MySQL запустится после завершения установки. После установки запустите:

mysql_secure_installation

Эта настройка проведет вас через ряд очевидных шагов. Во-первых, вам нужно будет ввести пароль root, который вы выбрали недавно. Первый вопрос спросит, хотите ли вы изменить пароль root, но, поскольку вы только что установили его, введите * n *. На все остальные вопросы нажмите * ENTER *, чтобы принять ответ по умолчанию.

Однако для Python 3 требуется способ соединения с MySQL. Есть несколько опций, таких как MySQLclient, но для простоты модуля в этом руководстве будет использоваться + pymysql +. Установите его с помощью Pip:

sudo pip3 install pymysql

Шаг 4 - Установка Apache 2

В этом разделе мы установим Apache 2 и убедимся, что он распознает файлы Python как исполняемые файлы.

Установите Apache, используя apt-get:

sudo apt-get install apache2

Как и MySQL, сервер Apache запустится после завершения установки.

  • Примечание *: после установки несколько портов открыты для интернета. Обязательно ознакомьтесь с заключением этого урока по ресурсам по безопасности.

Мы хотим разместить корневой каталог нашего сайта в безопасном месте. Сервер по умолчанию находится в + / var / www / html. Для соблюдения соглашения мы создадим новый каталог для целей тестирования, который называется + test +, в том же месте.

sudo mkdir /var/www/test

Наконец, мы должны зарегистрировать Python в Apache. Для начала отключаем многопоточность процессов.

sudo a2dismod mpm_event

Затем мы даем Apache явное разрешение на запуск скриптов.

sudo a2enmod mpm_prefork cgi

Затем мы модифицируем фактическую конфигурацию Apache, чтобы явно объявить файлы Python как исполняемый файл и разрешить такие исполняемые файлы. Откройте файл конфигурации, используя nano или ваш любимый текстовый редактор.

sudo nano /etc/apache2/sites-enabled/000-default.conf

Добавьте следующую строку сразу после первой строки, которая гласит + <VirtualHost *: 80 \> +.

<Directory /var/www/>
   Options +ExecCGI
   DirectoryIndex index.py
</Directory>
AddHandler cgi-script .py

Убедитесь, что ваш блок + <Directory> + вложен в блок + <VirtualHost> +, вот так. Удостоверьтесь в правильности отступа для вкладок.

/etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80>
   <Directory /var/www/>
       Options +ExecCGI
       DirectoryIndex index.py
   </Directory>
   AddHandler cgi-script .py

   ...

Этот блок Directory позволяет нам указать, как Apache будет обращаться с этим каталогом. Он сообщает Apache, что каталог + / var / www / test + содержит исполняемые файлы, считает + index.py + файлом по умолчанию, а затем определяет исполняемые файлы.

Мы также хотим разрешить выполнение исполняемых файлов в каталоге нашего веб-сайта, поэтому нам нужно изменить путь и для + DocumentRoot +. Найдите строку, которая читает + DocumentRoot / var / www / html, несколько строк под длинным комментарием в верхней части файла, и измените ее так, чтобы она читалась как` + / var / www / test`.

DocumentRoot /var/www/

Ваш файл должен теперь выглядеть следующим образом.

/etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80>
       <Directory /var/www/>
               Options +ExecCGI
               DirectoryIndex index.py
       </Directory>
       AddHandler cgi-script .py

       ...

       DocumentRoot /var/www/

       ...

Сохраните и выйдите из файла. Чтобы эти изменения вступили в силу, перезапустите Apache.

sudo service apache2 restart
  • Примечание *: Apache 2 может выдавать предупреждение о полном доменном имени сервера; это может быть проигнорировано, поскольку директива ServerName имеет небольшое применение на данный момент. В конечном итоге они используются для определения хостинга поддоменов после того, как ne Необходимые записи.

Если в последней строке вывода указано + [OK] +, Apache успешно перезапустился.

Шаг 5 - Тестирование конечного продукта

В этом разделе мы подтвердим, что отдельные компоненты (Python, MySQL и Apache) могут взаимодействовать друг с другом, создав пример веб-страницы и базы данных.

Во-первых, давайте создадим базу данных. Войдите в MySQL. Вам нужно будет ввести пароль root MySQL, который вы установили ранее.

mysql -u root -p

Добавьте пример базы данных с именем * example *.

CREATE DATABASE example;

Переключиться на новую базу данных.

USE example;

Добавьте таблицу для некоторых примеров данных, которые мы добавим в приложение Python.

CREATE TABLE numbers (num INT, word VARCHAR(20));

Нажмите * CTRL + D *, чтобы выйти. Для получения дополнительной информации о SQL вы можете прочитать этот учебник MySQL.

Теперь создайте новый файл для нашего простого приложения Python.

sudo nano /var/www/test/index.py

Скопируйте и вставьте следующий код в. Встроенные комментарии описывают, что делает каждый фрагмент кода. Обязательно замените значение + passwd + корневым паролем MySQL, который вы выбрали ранее.

#!/usr/bin/python

# Turn on debug mode.
import cgitb
cgitb.enable()

# Print necessary headers.
print("Content-Type: text/html")
print()

# Connect to the database.
import pymysql
conn = pymysql.connect(
   db='example',
   user='root',
   passwd='',
   host='localhost')
c = conn.cursor()

# Insert some example data.
c.execute("INSERT INTO numbers VALUES (1, 'One!')")
c.execute("INSERT INTO numbers VALUES (2, 'Two!')")
c.execute("INSERT INTO numbers VALUES (3, 'Three!')")
conn.commit()

# Print the contents of the database.
c.execute("SELECT * FROM numbers")
print([(r[0], r[1]) for r in c.fetchall()])

Сохранить и выйти.

Затем исправьте права доступа для вновь созданного файла. Для получения дополнительной информации о трехзначном коде разрешений см. Учебное руководство по адресу https://www.digitalocean.com/community/tutorials/linux-permissions-basics-and-how-to-use-umask-on-a-vps. [Linux права доступа].

sudo chmod 755 /var/www/test/index.py

Теперь получите доступ к вашему серверу, перейдя в + http: // +, используя ваш любимый браузер. Вы должны увидеть следующее:

your_server_ip»> Http: //

[(1, 'One!'), (2, 'Two!'), (3, 'Three!')]

Поздравляем! Ваш сервер сейчас онлайн.

Заключение

Теперь у вас есть рабочий сервер, на котором можно запустить Python 3 с надежной базой данных SQL. Сервер теперь также настроен на простое обслуживание с помощью хорошо документированных и установленных установщиков пакетов.

Однако в своем текущем состоянии сервер уязвим для посторонних. В то время как такие элементы, как шифрование SSL, не являются необходимыми для работы вашего сервера, они являются необходимыми ресурсами для надежного и безопасного сервера. Узнайте больше, прочитав о how для настройки Apache , how для создания сертификата Apache SSL и https: //www.digitalocean.com/community/tutorials/7-security-measures-to-protect-your-servers[how для защиты вашего сервера Linux].

Related