如何在 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
要访问管理仪表板,请添加/admin/
到您的 URL 的末尾http://your-domain.com/admin
这将带您进入登录屏幕:
输入您的 Django 管理员用户和密码,然后单击“ 登录”。您将在以下屏幕中获得 Django 管理仪表板:
评论和结论
就是这样。您已经使用 Apache 和 WSGI 在 Ubuntu 22.04 上成功安装了 Django。有关其他信息,您可以查看 Django 官方文档。
如果您有任何问题,请在下面发表评论。