如何在 Ubuntu 22.04 上使用 Apache 安装 Django

Django 是一个基于 Python 的全栈框架。该框架基于模型-模板-视图架构模式工作。Django 被认为是用于开发 Python 服务器应用程序的流行的基于 Web 的开发框架之一。

使用 Django 的知名网站有 Disqus、Instagram、MacArthur Foundation、国家地理频道、Knight Foundation、Pinterest、Open knowledge foundation 和 open stack software。

我们将在 Python 虚拟环境中安装 Django 应用程序。它非常有用,因为它允许开发人员运行和开发具有不同 python 版本的应用程序。

步骤 1:更新操作系统

使用以下命令将您的Ubuntu  22.04 操作系统更新 到最新版本:

# apt update && sudo apt upgrade -y

第 2 步:使用 mod_wsgi 模块安装 Apache

为了将 Django 设置为生产环境,我们将安装 Apache 和 Apachemod_wsgi模块。

apt您可以通过执行以下命令通过包管理器安装它们:

# apt install apache2 libapache2-mod-wsgi-py3

安装所有包后,您可以启动 Apache 服务并通过输入以下命令将其配置为在启动时运行:

# systemctl start apache2
# systemctl enable apache2

Apache 使用 命令验证服务的状态 systemctl status :

# systemctl status apache2

输出:

● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running)
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 39757 (apache2)
      Tasks: 55 (limit: 2200)
     Memory: 15.2M
        CPU: 206ms
     CGroup: /system.slice/apache2.service
             ├─39757 /usr/sbin/apache2 -k start
             ├─39761 /usr/sbin/apache2 -k start
             └─39762 /usr/sbin/apache2 -k start

第三步:安装MySQL并创建数据库

libmysqlclient-dev您可以使用以下命令安装 MySQL 服务器和(MySQL 数据库开发文件):

# apt install mysql-server libmysqlclient-dev

启动数据库服务器守护进程,并使用以下命令使其在下次启动时自动启动:

# systemctl start mysql
# systemctl enable mysql

MySQL 使用 命令验证服务的状态 systemctl status :

# systemctl status mysql

输出:

● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running)
   Main PID: 41039 (mysqld)
     Status: "Server is operational"
      Tasks: 39 (limit: 2200)
     Memory: 358.9M
        CPU: 1.070s
     CGroup: /system.slice/mysql.service
             └─41039 /usr/sbin/mysqld

安装数据库服务器后,登录到 MySQL 提示符:

#  mysql -u root

要创建数据库、数据库用户并将所有权限授予数据库用户,请运行以下命令:

mysql> CREATE DATABASE django_db;
mysql> CREATE USER 'django_user'@'localhost' IDENTIFIED BY 'Pa$$word';
mysql> GRANT ALL ON django_db.* TO 'django_user'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> EXIT

第 4 步:在 Ubuntu 22.04 上安装 Pip

Python已经默认安装在 Ubuntu 22.04 上。您可以通过检查其版本来验证它:

# python3 -V
Output:
Python 3.10.6

使用以下命令在 Ubuntu 22.04 上安装pip和:venv

# apt install python3-venv python3-pip

通过检查其版本来验证您的 Pip 安装:

# pip3 --version
Output:
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)

第 5 步:使用 Virtualenv 安装 Django

首先,创建一个目录并使用以下命令切换到该目录:

# mkdir /var/www/django_project 
# cd /var/www/django_project

在安装 Django 之前,首先需要创建一个 Python 虚拟环境。

# python3 -m venv django_env

接下来,使用以下命令激活虚拟环境:

# source django_env/bin/activate

接下来,使用以下命令安装最新的 Django 版本:

(django_env) # pip install django

您将获得以下输出:

Collecting django
  Downloading Django-4.1.1-py3-none-any.whl (8.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.1/8.1 MB 3.3 MB/s eta 0:00:00
Collecting asgiref<4,>=3.5.2
  Downloading asgiref-3.5.2-py3-none-any.whl (22 kB)
Collecting sqlparse>=0.2.2
  Downloading sqlparse-0.4.3-py3-none-any.whl (42 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42.8/42.8 kB 2.0 MB/s eta 0:00:00
Installing collected packages: sqlparse, asgiref, django
Successfully installed asgiref-3.5.2 django-4.1.1 sqlparse-0.4.3

使用以下命令验证 Django 版本:

(django_env) # django-admin --version

您将获得以下输出:

4.1.1

由于您正在设置生产站点,因此请确保您已mysqlclient安装 python:

(django_env) # pip install mysqlclient

您将获得以下输出:

Collecting mysqlclient
  Downloading mysqlclient-2.1.1.tar.gz (88 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 88.1/88.1 KB 1.3 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... done
Using legacy 'setup.py install' for mysqlclient, since package 'wheel' is not installed.
Installing collected packages: mysqlclient
  Running setup.py install for mysqlclient ... done
Successfully installed mysqlclient-2.1.1

第 6 步:创建 Django 项目

现在您需要在django_project 目录中创建 Django 项目。

(django_env) # django-admin startproject django_app .

接下来,修改settings.py文件:

(django_env) # nano django_app/settings.py

ALLOWED_HOST 在上面的 List 中添加 URL  INSTALLED_APPS

ALLOWED_HOSTS = ['your_server_ip', 'your-domain.com']

Django 中设置的默认数据库是 SQLite。替换 SQLite 数据库后端:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

使用 MySQL 数据库引擎后端:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db',
'USER': 'django_user',
'PASSWORD': 'Pa$$word',
'HOST': '127.0.0.1',
'PORT' : '3306',
}
}

为了让我们的网络服务器为静态文件提供服务,请添加以下行:

import os

STATIC_URL='/static/'
STATIC_ROOT=os.path.join(BASE_DIR, 'static/') 

MEDIA_URL='/media/'
MEDIA_ROOT=os.path.join(BASE_DIR, 'media/')

完成后,保存文件并退出文本编辑器。

现在,您可以使用管理脚本将初始数据库架构迁移到我们的 MySQL 数据库:

(django_env) # ./manage.py  makemigrations
(django_env) # ./manage.py  migrate

通过键入以下内容为项目创建管理用户:

(django_env) # ./manage.py createsuperuser

您必须提供用户名、电子邮件地址,然后选择并确认密码。

Username (leave blank to use 'root'): admin
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.

您可以通过运行以下命令将所有静态内容收集到您配置的目录位置:

(django_env) # ./manage.py collectstatic

这将收集静态目录中的所有项目静态文件。它会给出这样的输出:

130 static files copied to '/var/www/django_project/static'.

要停用虚拟环境,请运行以下命令:

(django_env) # deactivate

第 7 步:为 Django 配置 Apache Web 服务器

导航到 /etc/apache2/sites-available 目录并运行以下命令为您的安装创建配置文件:

# nano /etc/apache2/sites-available/django.conf

添加以下内容:

<VirtualHost *:80>

        ServerAdmin [email protected]
        ServerName your-domain.com
        ServerAlias www.your-domain.com

        DocumentRoot /var/www/django_project/

        ErrorLog ${APACHE_LOG_DIR}/your-domain.com_error.log
        CustomLog ${APACHE_LOG_DIR}/your-domain.com_access.log combined

        Alias /static /var/www/django_project/static
        <Directory /var/www/django_project/static>
                Require all granted
        </Directory>

        Alias /media /var/www/django_project/media
        <Directory /var/www/django_project/media>
                Require all granted
         </Directory>

        <Directory /var/www/django_project/django_app>
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>

        WSGIDaemonProcess django_app python-path=/var/www/django_project python-home=/var/www/django_project/django_env
        WSGIProcessGroup django_app
        WSGIScriptAlias / /var/www/django_project/django_app/wsgi.py

</VirtualHost>

保存文件并退出。

启用 Django 虚拟主机:

# a2ensite django.conf

重新启动 Apache Web 服务器。

# systemctl restart apache2

第 8 步:访问 Django 项目

就是这样,生产现场已经设置好了。您现在可以使用您的域访问您的应用程序,例如http://your-domain.com

Django 项目

要访问管理仪表板,请添加/admin/到您的 URL 的末尾http://your-domain.com/admin这将带您进入登录屏幕:

Django 管理员

输入您的 Django 管理员用户和密码,然后单击“ 登录”。您将在以下屏幕中获得 Django 管理仪表板:

Django 仪表板

评论和结论

就是这样。您已经使用 Apache 和 WSGI 在 Ubuntu 22.04 上成功安装了 Django。有关其他信息,您可以查看 Django 官方文档

如果您有任何问题,请在下面发表评论。

类似文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注