Django项目部署(Ubuntu虚拟机-局域网访问)uWSGI 、Nginx的使用
一、安装虚拟机并开启SSH服务
1、通过VMware安装Ubuntu虚拟机
2、开启ssh服务,通Tabby工具连接Ubuntu系统
-
1、检查是否已安装 SSH 服务
-
在安装之前,你可以先检查系统是否已经安装了 SSH 服务。使用以下命令查看
sshd
服务的运行状态: -
sudo systemctl status ssh
-
如果显示
Active: active (running)
,则表示 SSH 服务已经安装并正在运行,你可以跳过安装步骤,直接进行后续的配置。 -
如果显示
Unit ssh.service could not be found.
,则表示系统中未安装 SSH 服务,需要进行安装。
-
-
2、安装 OpenSSH 服务器
-
Ubuntu 系统通常使用 OpenSSH 作为 SSH 服务的实现。你可以使用以下命令来安装 OpenSSH 服务器:
-
sudo apt update sudo apt install openssh-server -y
-
sudo apt update
:用于更新系统的软件包列表,确保可以获取到最新的软件包信息。 -
sudo apt install openssh-server
:用于安装 OpenSSH 服务器软件包。
-
-
3、启动并设置 SSH 服务开机自启
-
安装完成后,使用以下命令启动 SSH 服务:
-
sudo systemctl start ssh
-
你可以再次使用
sudo systemctl status ssh
命令来检查 SSH 服务是否已经成功启动。为了确保系统在重启后 SSH 服务能够自动启动,可以使用以下命令设置 SSH 服务开机自启:
-
sudo systemctl enable ssh
-
-
4、配置防火墙(可选)
-
如果你的系统上启用了防火墙(如
ufw
),需要允许 SSH 流量通过防火墙。使用以下命令开放 SSH 端口(默认端口为 22): -
sudo ufw allow ssh # 重新加载防火墙规则 sudo ufw reload
-
-
5、验证 SSH 服务
-
你可以在本地使用
ssh
命令来验证 SSH 服务是否正常工作。打开一个新的终端窗口,使用以下命令连接到本地的 SSH 服务: -
ssh your_username@localhost
-
其中,
your_username
是你的 Ubuntu 系统用户名。输入命令后,系统会提示你输入密码,输入正确的密码后,如果成功登录到系统,则表示 SSH 服务已经正常工作。
-
-
6、其他配置(可选)
-
你可以通过编辑
/etc/ssh/sshd_config
文件来对 SSH 服务进行更多的配置,例如修改 SSH 服务的监听端口、禁止 root 用户登录等。修改完成后,使用以下命令重启 SSH 服务使配置生效: -
sudo systemctl restart ssh
-
通过以上步骤,你就可以在 Ubuntu 系统中成功安装和配置 SSH 服务,从而实现远程安全登录和管理。
-
-
7、使用Tabby工具链接虚拟机
- 打开tabby工具,选择配置和连接
-
创建一个新的ssh连接,虚拟机ip地址,可以通以下命令查看:
-
ip addr show
-
-
-
完成上述步骤后,就可以连接到Ubuntu系统了。
-
二、创建运行Django项目的python虚拟环境
1、使用 virtualenv
工具创建虚拟环境
-
virtualenv
是一个第三方工具,功能更强大,支持 Python 2 和 Python 3,并且可以创建跨版本的虚拟环境。 -
1、安装
virtualenv
:如果系统中尚未安装virtualenv
,可以使用pip
进行安装。在终端中执行以下命令: -
sudo apt update sudo apt install python3-pip -y
-
配置python第三方包安装源
-
# 配置源,使安装速度变快 pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/ # 安装virtualenv库 pip3 install virtualenv
-
2、可以使用以下命令查看当前使用的
virtualenv
路径path,并将virtualenv
路径添加到 系统PATH
环境变量中 -
# 查看virtualenv路径 pip3 show virtualenv
-
virtualenv脚本所在的目录 /home/your_user/.local/bin/virtualenv 不在系统的
PATH
环境变量中,因此系统无法直接找到该脚本。下面为你介绍几种解决这个问题的方法。你可以通过修改用户级别的配置文件,将/home/your_user/.local/bin/virtualenv目录添加到
PATH
环境变量中,这样每次登录系统时该目录都会被包含在PATH
中。-
1、编辑
~/.bashrc
文件(适用于使用 Bash 作为默认 shell 的情况)
使用文本编辑器(如nano
)打开~/.bashrc
文件: -
nano ~/.bashrc
-
2、添加
PATH
配置 -
export PATH="$HOME/.local/bin:$PATH"
-
这行代码将
/home/wbk/.local/bin
($HOME
等同于/home/your_user
)添加到PATH
环境变量的开头,这样系统会优先在该目录中查找可执行文件。按下 ctrl+x -----> y -----> enter退出保存
保存并退出编辑器,然后执行以下命令使修改后的
~/.bashrc
文件立即生效:source ~/.bashrc
-
2、创建虚拟环境:选择一个目录,使用以下命令创建虚拟环境,同样将其命名为 django_env。
-
1、创建目录
-
# 切换到根目录下 cd / # 创建虚拟环境目录 sudo mkdir /envs
-
2、进入/envs文件。创建python虚拟环境(Ubuntu系统自带python3.8)
-
# 进入envs文件 cd /envs # 创建python3虚拟环境 virtualenv -p python3 django_env
-p python3
选项指定使用系统中的 Python 3 解释器来创建虚拟环境。 -
3、如果创建报错:virtualenv: error: argument dest: the destination . is not write-able at /envs 说明权限不足,你可以通过修改目录所有者来解决权限问题,假设当前用户名为
your_username
,使用以下命令:: -
sudo chown -R your_username:your_username /envs
将
your_username
替换为你实际的用户名。 -
4、激活虚拟环境:与使用
venv
模块创建的虚拟环境激活方式相同,执行以下命令激活: -
source django_env/bin/activate
三、安装mysql数据库
1、安装数据库
-
如果你确定系统中没有安装 mysqldb,可以使用以下命令进行安装:
-
sudo apt update sudo apt install mysql-server -y
2、启动数据库
-
可以使用以下命令启动它:
-
sudo systemctl status mysql
-
若希望服务在系统启动时自动启动,可以使用以下命令设置:
-
sudo systemctl enable mysql
3、测试登录,设置root登录密码
-
如果权限不足,可以尝试以 sudo 用户身份连接数据库:
-
sudo mysql -u root -p
这里第一次直接点’enter’键,就可以进入mysql中
-
执行以下 SQL 语句修改 root 密码(假设新密码为
new_password
): -
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
-
刷新权限使修改生效:
-
FLUSH PRIVILEGES;
4、创建新用户
-
使用
root
用户登录到 mysql: -
sudo mysql -u root -p
-
创建一个新用户并设置密码,这里以用户名为
remote_user
,密码为your_password
为例: -
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_password';
-
创建一个指定host地址的用户( 192.168.x.x 可以根据需求设置可以允许连接的地址)
-
CREATE USER 'new_user'@'192.168.x.x' IDENTIFIED BY 'your_password';
-
授予该用户对特定数据库的权限,如果你想让该用户拥有对所有数据库的所有权限,可以使用以下命令:
-
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
-
创建一个数据库(test_db数据库名称)
-
create database test_db DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-
GRANT ALL PRIVILEGES ON your_database.* TO 'new_user'@'localhost';
-
如果你只想让 remote_user 用户拥有某个特定数据库(例如
test_db
)的权限,可以执行以下 SQL 语句: -
GRANT SELECT, INSERT, UPDATE, DELETE ON test_db.* TO 'remote_user'@'%';
# 刷新权限使更改生效 FLUSH PRIVILEGES;
5、局域网内其它电脑连接数据库设置
-
确保 mysql 服务已启动并设置为开机自启
-
在 Ubuntu 系统中,使用以下命令来检查 MySQL服务的运行状态,并确保它在系统启动时自动启动:
-
# 检查mysql服务状态 sudo systemctl status mysql # 若mysql未运行,使用以下命令启动 sudo systemctl start mysql # 设置mysql服务开机自启 sudo systemctl enable mysql
-
修改 MariaDB 配置文件以允许远程连接
-
默认情况下,MySQL 只允许本地连接。你需要修改 MySQL 的配置文件,使其监听所有可用的网络接口。
-
1、打开 MySQL 配置文件mysqld.cnf:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
-
2、找到
bind-address
这一行,将其值从127.0.0.1
修改为0.0.0.0
,表示监听所有可用的网络接口:bind-address = 0.0.0.0
保存并关闭文件(在
nano
编辑器中,按Ctrl + X
,然后按Y
,最后按Enter
) -
3、重启 MySQL 服务使配置生效:
sudo systemctl restart mysql
-
-
创建允许远程连接的 MySQL 用户
-
你需要创建一个新的 MariaDB 用户,并授予该用户从任何 IP 地址(
%
)连接到数据库的权限。-
1、创建一个新用户并设置密码,这里以用户名为
remote_user
,密码为your_password
为例:CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_password';
-
2、授予该用户对特定数据库的权限,如果你想让该用户拥有对所有数据库的所有权限,可以使用以下命令:
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
如果你只想让 remote_user 用户拥有某个特定数据库(例如
test_db
)的权限,可以执行以下 SQL 语句:GRANT SELECT, INSERT, UPDATE, DELETE ON test_db.* TO 'remote_user'@'%'; FLUSH PRIVILEGES;
-
3、刷新权限使更改生效:
FLUSH PRIVILEGES;
-
4、退出 MySQL:
EXIT;
-
-
配置防火墙以允许 MySQL 端口访问
-
默认情况下,Ubuntu 系统的防火墙(
ufw
)可能会阻止外部对 mysql 端口(默认是 3306)的访问。你需要开放该端口:# 允许3306端口的TCP流量 sudo ufw allow 3306/tcp # 重新加载防火墙规则 sudo ufw reload
-
在其他局域网电脑上测试连接
-
在其他局域网内的电脑上,使用 MySQL 客户端工具(如 Navicat for MySQL 工具)来连接到 Ubuntu 系统中的 MySQL 数据库。
-
使用 Navicat for MySQL 工具连接:
-
如果连接报1251错误可以使用以下命令解决:
-- 修改用户的认证插件为 mysql_native_password ALTER USER 'your_username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; -- 刷新权限 FLUSH PRIVILEGES;
-
四、使用Git工具将Django项目拉取到Ubuntu系统中
1、在Ubuntu系统中安装Git
-
在安装 Git 之前,建议先更新系统的软件包列表,以确保获取到最新的软件包信息。
sudo apt update
-
使用
apt
命令来安装 Git 了, 在终端中执行以下命令:sudo apt install git -y
-
安装完成后,可以通过查看 Git 的版本信息来验证是否安装成功。在终端中执行以下命令:
sudo git --version
如果安装成功,终端会输出 Git 的版本号。
-
安装完成后,建议配置你的用户名和邮箱,这样在使用 Git 进行版本控制时,提交记录会包含你的相关信息。在终端中执行以下命令来配置用户名和邮箱:
sudo git config --global user.name "Your Name" sudo git config --global user.email "your_email@example.com"
将
"Your Name"
替换为你自己的名字,将"your_email@example.com"
替换为你自己的邮箱地址。--global
参数表示这是全局配置,会应用到你系统上的所有 Git 仓库。通过以上步骤,你就可以在 Ubuntu 系统中成功安装并配置 Git。
2、在本地主机安装Git,并将项目Push到远程仓库
-
在本地安装Git(这里以windows系统为例);可以到Git官网下载安装:https://git-scm.com/downloads
-
1、在Django项目文件内鼠标右击使用Git Bash Here 打开cmd命令窗口
-
2、第一次创建git库时需要设置user.name和user.email信息:
git config --global user.name "Your Name" git config --global user.email "your_email@example.com"
-
创建本地仓库:
git init
会在当前文件夹下出现一个隐藏的.git文件夹,说明仓库以创建完毕
-
在你的项目根目录下创建一个名为
.gitignore
的文件。 -
.gitignore
文件用于指定 Git 版本控制系统应忽略的文件和目录,这样这些文件就不会被纳入版本控制,避免将不必要的文件(如编译生成的文件、日志文件、临时文件等)提交到代码仓库中。以下是设置# Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .vscode/ .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .nox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.py,cover .hypothesis/ .pytest_cache/ cover/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 db.sqlite3-journal # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder .pybuilder/ target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv # For a library or package, you might want to ignore these files since the code is # intended to run in multiple environments; otherwise, check them in: # .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies # having no cross-platform support, pipenv may install dependencies that don't work, or not # install all needed dependencies. #Pipfile.lock # poetry # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. # This is especially recommended for binary packages to ensure reproducibility, and is more # commonly ignored for libraries. # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control #poetry.lock # pdm # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. #pdm.lock # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it # in version control. # https://pdm.fming.dev/latest/usage/project/#working-with-version-control .pdm.toml .pdm-python .pdm-build/ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm __pypackages__/ # Celery stuff celerybeat-schedule celerybeat.pid # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ .dmypy.json dmypy.json # Pyre type checker .pyre/ # pytype static type analyzer .pytype/ # Cython debug symbols cython_debug/ # PyCharm # JetBrains specific template is maintained in a separate JetBrains.gitignore that can # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. .idea/ # database migrations # 除了初始化的这个都不提交 */migrations/*.py !*/migrations/__init__.py
-
创建并编辑好
.gitignore
文件后,将其添加到 Git 仓库中:git add .gitignore git commit -m "Add .gitignore file"
- 如果某个文件已经被纳入版本控制,即使你在
.gitignore
文件中添加了忽略规则,Git 仍然会跟踪该文件。你需要先使用git rm --cached <file>
命令将其从版本控制中移除,然后再提交更改。 .gitignore
文件中的规则是按行解析的,每行代表一个规则。规则可以使用正则表达式的部分语法,如通配符*
和?
等。
- 如果某个文件已经被纳入版本控制,即使你在
-
查看文件状态:
git status
-
增加文件到暂存区:git add [filename] (点表示全部文件)
git add .
-
连接远程仓库:(这里需要现在码云上创建一个仓库,然后操作)
git remote add origin 远程仓库url(https://gitee.com/xxxxxxxxx.git)
-
上传数据到远程仓库:
第一次上传需要输入你的码云用户名和密码,在windows系统中可以执行命令免除每次输入:
git config --global credential.helper manager-core
提交代码到远程仓库中执行命令:
git push origin master
3、在Ubuntu系统中Pull代码,安装Django项目所依赖python包
-
在Ubuntu系统中创建一个data文件夹,用于存放Django项目文件
# 创建文件夹 sudo mkdir /data # 开通文件夹权限,要不无法正常拉取代码 sudo chown -R your_username:your_username /data
-
使用Git命令从远程仓库拉取代码:
cd /data sudo git clone https://gitee.com/xxxxxxx/xxxxxxxx.git
后面如何需要同步远程仓库代码可执行命令:
第一次同步需要输入你的码云用户名和密码,在Ubuntu系统中可以执行命令免除每次输入:
sudo git config --global credential.helper store
同步远程仓库代码中执行命令:
sudo git pull origin master
-
启动Ubuntu系统中python虚拟环境,安装项目依赖包
-
1、进入虚拟环境安装目录,执行下面语句启动虚拟环境:
# 进入虚拟环境目录 cd /envs/django_env/bin/ # 启动虚拟环境 source activate # 退出虚拟环境 deactivate
-
2、安装Django项目依赖包: requirements.txt 文件是从本地Django项目导出所有运行所需依赖包信息:
进入本地Django项目开发环境,执行命令生成 requirements.txt文件:
pip freeze > requirements.txt
asgiref==3.8.1 Django==3.2 mysqlclient==2.0.3 pillow==10.4.0 sqlparse==0.5.3 typing_extensions==4.12.2 tzdata==2024.2
在Ubuntu系统上安装
mysqlclient
时,可能会遇到缺少编译依赖的问题,因为mysqlclient
是一个 C 语言扩展模块,需要进行编译。不进行编译安装会报错。sudo apt-get install python3-dev default-libmysqlclient-dev build-essential -y
使用以下命令根据
requirements.txt
文件安装所有依赖包:pip3 install -r /data/django_demo/requirements.txt
-
五、配置local_settings.py文件,迁移数据库以及启动项目运行
1、在Django项目根目录下创建local_settings.py文件
-
切换到Django项目根目录(包含settings.py文件的目录下)
cd /data/django_demo/your_django_project/
-
创建local_settings.py文件
sudo touch local_settings.py
-
使用vim编辑器进行编辑
sudo vim local_settings.py
进入 vim 编辑器后,按 i 键进入插入模式,就可以输入配置内容了。输入完成后,按 Esc 键退出插入模式,然后输入 :wq 并按 Enter 键,这会保存文件并退出 vim 编辑器。
from pathlib import Path # 覆盖 DEBUG 设置 DEBUG = False # 设置静态资源路径 BASE_BASE_DIR = Path(__file__).resolve().parent.parent.parent # 设置收集静态文件存放路径 STATIC_ROOT = BASE_BASE_DIR / 'allstatic' # 设置mysql数据库连接信息 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_dataname', 'USER': 'your_username', 'PASSWORD': 'your_password', 'HOST': '127.0.0.1', 'PORT': 3306, } } # 配置允许的主机 设置你允许访问的IP, *表示所有主机 ALLOWED_HOSTS = ['127.0.0.1', '*']
2、执行数据库迁移
-
在项目的根目录下(包含
manage.py
文件的目录),依次运行以下命令:# 生成迁移文件 python manage.py makemigrations # 执行数据库迁移 python manage.py migrate
makemigrations 命令会检查项目中的模型变化,并生成相应的迁移文件。
migrate 命令会将这些迁移文件应用到数据库中,创建或更新相应的表。
3、初步启动项目
-
在项目的根目录下(包含
manage.py
文件的目录),依次运行以下命令:python manage.py runserver 0.0.0.0:8000
-
使用虚拟机IP地址本机访问测试(192.168.x.x:8000)
出现上述图片信息,表示我们已经可以通过局域网访问我们的django项目了,只需要在local_settings.py文件中 ALLOWED_HOSTS= [‘添加虚拟机ip地址’] 即可正常访问了。有可能会出现项目静态文件无法加载现象。
4、收集static静态文件
-
在django项目目录下创建allstatic文件夹
-
这里以上述文件结构为例:/data/django_demo/
mkdir allstatic
-
设置文件夹权限
sudo chown -R your_username:your_username allstatic
-
切换到django项目根目录( manage.py文件目录下 )执行命令收集静态文件:
python manage.py collectstatic
出现 "197 static files copied to ‘/data/django_demo/allstatic’. " 表示收集静态资源完成。
-
5、通过uWSGI运行django项目
-
安装 uWSGI 包
pip install uwsgi
-
设置 uWSGI 配置文件
-
1、在django项目根目录下创建django_uwsgi.ini文件
touch django_uwsgi.ini
-
2、配置django_uwsgi.ini文件
[uwsgi] # 切换到项目目录 chdir = /data/django_demo/your_django_project/ # 项目的WSGI模块 wsgi-file = /data/django_demo/your_django_project/wsgi.py # 监听所有网络接口的8000端口 http = 127.0.0.1:8000 # 以主进程模式运行 master = true # 设置进程数 processes = 4 # 设置线程数 threads = 2 # 项目使用的虚拟环境路径 virtualenv = /envs/django_env/
-
-
3、执行以下命令启动、后台启动、关闭 uWSGI :
# 启动uwsgi /envs/django_env/bin/uwsgi --ini /data/django_demo/your_django_project/django_uwsgi.ini # 后台启动uwsgi /envs/django_env/bin/uwsgi --ini /data/django_demo/your_django_project/django_uwsgi.ini & >/dev/null # 关闭后台启动uwsgi ps -ef | grep /data/django_demo/your_django_project/django_uwsgi.ini | grep -v grep | awk '{print $2}' | xargs kill -9
6、通过Nginx监听9000端口代理转发请求以及静态文件请求加载
-
安装Nginx
sudo apt update sudo apt install nginx -y
-
配置nginx.conf文件,ubuntu系统中nginx.conf文件一般在/etc/nginx/nginx.conf中
# 进入文件所在目录 cd /etc/nginx/ # 复制一份文件,备用 sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak # 进行修改文件 sudo vim nginx.conf
-
http{}中设置以下内容:可以根据自己的需求进行修改(这里只在局域网中使用,所以这么设置)
# uwsgi启动接口 upstream django { server 127.0.0.1:8000; } server { # 监听9000端口 listen 9000; # 转发静态文件请求 location /static/ { alias /data/django_demo/allstatic/; } # 转发非静态文件请求 location / { proxy_pass http://django; } }
-
检查配置文件语法、重新加载配置、启动nginx、开机自启动nginx、检查nginx状态、重新启动nginx
# 检查配置文件语法 sudo nginx -t # 重新加载配置 sudo systemctl reload nginx # 启动nginx sudo systemctl start nginx # 开机自启动nginx sudo systemctl enable nginx # 检查nginx状态 sudo systemctl status nginx # 重新启动nginx sudo systemctl restart nginx
-
防火墙配置,阻断8000端口访问
# 查看 ufw 是否已经启用 sudo ufw status
若显示
Status: inactive
,表示ufw
未启用,可使用以下命令启用:# 启动防火墙 sudo ufw enable # 阻止所有TCP协议的 8000 端口 sudo ufw deny 8000/tcp # 重新加载生效 sudo ufw reload
六、总结:
-
1、安装配置Django项目运行所需的环境,例如:python环境、mysql数据库等。
-
2、拉取本地项目文件并进行配置,例如:local_settings.py文件等。
-
3、收集static静态资源文件,通过uwsgi运行django项目。
-
4、通过Nginx监听、代理转发请求完成django项目运行。
-
5、如果想在远程服务器上运行django项目(可以外网访问),需要更改该uwsgi.ini文件、以及nginx.conf文件即可。
-
uwsgi.ini文件(外网访问)
[uwsgi] # 切换到项目目录 chdir = /data/django_demo/your_django_project/ # 项目的WSGI模块 wsgi-file = /data/django_demo/your_django_project/wsgi.py # 监听所有网络接口的8000端口 socket = 127.0.0.1:8000 # 以主进程模式运行 master = true # 设置进程数 processes = 4 # 设置线程数 threads = 2 # 项目使用的虚拟环境路径 virtualenv = /envs/django_env/
-
nginx.conf文件(外网访问)
# uwsgi启动接口 upstream django { server 127.0.0.1:8000; } server { # 监听80端口 listen 80; # 转发静态文件请求 location /static/ { alias /data/django_demo/allstatic/; } # 转发非静态文件请求 location / { uwsgi_pass django; include uwsgi_params; } }
-
-
6、外网访问,如果需要监听https请求,还需要配置ssl证书,以及域名的解析信息,这里就不赘述了。可参考:(Django项目部署流程)
-
4、通过Nginx监听、代理转发请求完成django项目运行。
-
5、如果想在远程服务器上运行django项目(可以外网访问),需要更改该uwsgi.ini文件、以及nginx.conf文件即可。
-
uwsgi.ini文件(外网访问)
[uwsgi] # 切换到项目目录 chdir = /data/django_demo/your_django_project/ # 项目的WSGI模块 wsgi-file = /data/django_demo/your_django_project/wsgi.py # 监听所有网络接口的8000端口 socket = 127.0.0.1:8000 # 以主进程模式运行 master = true # 设置进程数 processes = 4 # 设置线程数 threads = 2 # 项目使用的虚拟环境路径 virtualenv = /envs/django_env/
-
nginx.conf文件(外网访问)
# uwsgi启动接口 upstream django { server 127.0.0.1:8000; } server { # 监听80端口 listen 80; # 转发静态文件请求 location /static/ { alias /data/django_demo/allstatic/; } # 转发非静态文件请求 location / { uwsgi_pass django; include uwsgi_params; } }
-
-
6、外网访问,如果需要监听https请求,还需要配置ssl证书,以及域名的解析信息,这里就不赘述了。可参考:(Django项目部署流程)