LNMP 一键安装包部署 Django 项目

scode type="green"\]本文采用 lnmp.org 的 LNMP 一键安装包来部署环境。\[/scode

作者使用的系统是 ubuntu 20.04,所有步骤请使用 root 用户操作,其他系统也可以参考,可能不成功的地方已标注。

安装 lnmp

本文采用 无人值守方式安装,在生成无人值守安装命令时,不推荐使用 源码编译安装,不要问我怎么知道的(装了三个小时没装完)。

常规安装代码(lnmp1.9):

bash 复制代码
wget http://soft.vpser.net/lnmp/lnmp1.9.tar.gz -cO lnmp1.9.tar.gz && tar zxf lnmp1.9.tar.gz && cd lnmp1.9 && ./install.sh lnmp

lnmp 配置

创建网站的方法官网已经非常详细,因此不再叙述。附上链接:https://lnmp.org/faq/lnmp-vhost-add-howto.html

安装 ftp 服务器同样也非常详细:https://lnmp.org/faq/ftpserver.html

安装和配置虚拟环境

首先,使用 pip 命令安装 virtualenv 和 virtualenvwrapper(virtualenv 扩展程序) 库:

bash 复制代码
pip3 install virtualenv
pip3 install virtualenvwrapper

测试是否安装成功,安装成功将会打印信息。

bash 复制代码
virtualenv --version
virtualenvwrapper

修改 .bashrc 文件(每个需要使用 virtualenv 都要修改),在末尾添加下面几行:

cpp 复制代码
# virtualenv
export WORKON_HOME=/home/wwwroot/virtualenvs(可自行修改)
source /usr/local/bin/virtualenvwrapper.sh

创建虚拟环境:

bash 复制代码
mkvirtualenv [site]

安装 Python 库

先切换到虚拟环境。

使用 pip freeze > requirements.txt 导出项目安装的 python 库列表,使用 pip install -r requirements.txt 在服务器上安装。

安装和配置 uWsgi

scode type="yellow"\]本部分仅 ubuntu 系统测试成功!\[/scode

bash 复制代码
apt-get install libpython3.9-dev
pip install uwsgi

在项目根目录下建立 uwsgi.ini 文件,配置如下:

复制代码
[uwsgi]
socket=127.0.0.1:8000 # uwsgi 监听的 socket,一般为 ip + 端口
chdir=/home/wwwroot/training.cspoi.net/ # 项目运行目录
wsgi-file=PrePapers/wsgi.py
processes=4 
threads=2
master=True
stats=uwsgi.status
pidfile=uwsgi.pid
daemonize=uwsgi.log # 记录日志

启动 uwsgi:uwsgi --ini xxx.ini

重启 uwsgi:uwsgi --reload xxx.pid

停止 uwsgi:uwsgi --stop xxx.pid

Nginx 配置

修改 Nginx 配置,虚拟主机配置文件在:/usr/local/nginx/conf/vhost/域名.conf

server 里添加下面几行:

conf 复制代码
location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8000; // 与 uwsgi.ini socket 一样
        uwsgi_param UWSGI_SCRIPT PrePapers.wsgi; // 与 uwsgi.ini wsgi-file 一样
        uwsgi_param UWSGI_CHDIR /home/wwwroot/training.cspoi.net/; // 与 uwsgi.ini chdir 一样
}

location /static/ {
        alias /home/wwwroot/training.cspoi.net/static/; // 注意替换成自己的!
}

修改完运行 lnmp nginx restart 重启 nginx。

相关推荐
我命由我123458 小时前
Java 泛型 - Java 泛型通配符(上界通配符、下界通配符、无界通配符、PECS 原则)
java·开发语言·后端·java-ee·intellij-idea·idea·intellij idea
szhf788 小时前
SpringBoot Test详解
spring boot·后端·log4j
无尽的沉默8 小时前
SpringBoot整合Redis
spring boot·redis·后端
摸鱼的春哥9 小时前
春哥的Agent通关秘籍07:5分钟实现文件归类助手【实战】
前端·javascript·后端
Victor3569 小时前
MongoDB(2)MongoDB与传统关系型数据库的主要区别是什么?
后端
JaguarJack9 小时前
PHP 应用遭遇 DDoS 攻击时会发生什么 从入门到进阶的防护指南
后端·php·服务端
BingoGo9 小时前
PHP 应用遭遇 DDoS 攻击时会发生什么 从入门到进阶的防护指南
后端
Victor3569 小时前
MongoDB(3)什么是文档(Document)?
后端
牛奔11 小时前
Go 如何避免频繁抢占?
开发语言·后端·golang
想用offer打牌16 小时前
MCP (Model Context Protocol) 技术理解 - 第二篇
后端·aigc·mcp