(可选)如需部署您的Django项目,将本地的项目上传到服务器,同时修改Django配置,操作如下。
重要 如果您仅想展示基本的Django网页,测试此方案的可行性,请跳过此步骤。
将本地的项目上传至服务器,请参见上传和下载文件(SFTP)。
执行以下命令,修改Django配置文件settings.py。
sudo vim /home/myblog/uwsgi_project/uwsgi_project/settings.py按i键,进入编辑模式。
将DEBUG = True修改为DEBUG = False。
在settings.py文件开头添加如下参数。
import os为什么添加import os?
作用域问题:确保os模块在整个settings.py文件中都是可用的。如果你在文件的中间或者末尾才导入os,那么在此之前使用os的地方就会抛出NameError异常。
性能优化:解释器只需要解析一次导入语句,而不是在遇到时再解析。
在settings.py文件末尾添加如下参数。
STATIC_ROOT = os.path.join(BASE_DIR, "static/")为什么添加STATIC_ROOT = os.path.join(BASE_DIR, "static/")?
静态文件收集:STATIC_ROOT用于指定一个绝对路径,在这个路径下,Django将收集所有的静态文件(如CSS、JavaScript、图片等),以便在生产环境中由Web服务器提供服务。这个设置通常放在文件的末尾,因为它依赖于之前已经定义好的变量。
避免循环引用:如果某些设置项依赖于其他的设置项,将它们放置在文件的不同位置可以避免潜在的循环引用问题。
按Esc键,输入:wq保存并退出文件。
执行如下命令,收集所有静态文件。
sudo python3 manage.py collectstatic
执行以下命令,打开Nginx配置文件。
Alibaba Cloud Linux 3/2 、CentOS 7/8
sudo vim /etc/nginx/nginx.confUbuntu 22/20/18
sudo vim /etc/nginx/sites-enabled/default按i键进入编辑模式,在server中修改或添加以下参数。
upstream django {
#具体端口必须与您uWSGI配置文件中定义的端口一致
server 127.0.0.1:8001;
}
server {
#设置的nginx访问端口
listen 8002;
server_name test;
charset utf-8;
location /static {
# 启用目录列表
autoindex on;
# 静态文件的绝对路径。请根据实际情况修改这个路径。
alias /home/myblog/uwsgi_project/static;
}
location / {
# 将请求传递给uWSGI服务器,这里的地址与upstream块中的定义相匹配。
uwsgi_pass 127.0.0.1:8001;
# 包含 uwsgi 参数配置
include uwsgi_params;
# Nginx自带的uWSGI参数文件,具体目录请根据实际情况修改
include /etc/nginx/uwsgi_params;
# 指定uWSGI使用的Python WSGI入口点。iCourse.wsgi为Django项目的wsgi文件名。
uwsgi_param UWSGI_SCRIPT iCourse.wsgi;
#设置uWSGI的工作目录,具体目录请根据实际情况修改。
uwsgi_param UWSGI_CHDIR /iCourse;
# 指定默认的索引文件。
index index.html index.htm;
client_max_body_size 35m;
}
}具体位置如下图所示。
执行以下命令,创建日志目录,uWSGI 将会作为守护进程在后台运行,并将它的输出重定向到这个日志文件中。
sudo mkdir -p /var/log/uwsgi/ #您可根据实际情况修改。执行以下命令,新建uWSGI配置文件uwsgi_config.ini。
sudo vim uwsgi_config.ini按i键进入编辑模式,在文件中添加以下参数。编辑完成后,按Esc键,输入:wq保存并退出文件。
[uwsgi]
#此处的8001端口需要和nginx配置文件中定义的uwsgi_pass端口一致。
socket = 127.0.0.1:8001
#指定项目目录,根据您的实际项目修改该路径。
chdir = /home/myblog/uwsgi_project/
#指定Django的wsgi file文件,根据项目修改。
wsgi-file = uwsgi_project/wsgi.py
#最大工作进程。
processes = 4
#每个工作进程processes启动后开启的线程个数。
threads = 2
#环境退出时自动清理。
vacuum = true
#设置用于uwsgi包解析的内部缓存区大小为64k,默认是4k。
buffer-size = 65536
#日志文件路径,请确保此路径可写。根据您的实际项目修改该路径。
daemonize = /var/log/uwsgi/uwsgi_project.log
#确保线程支持已启用。
enable-threads = true 启动程序。
执行以下命令,重启Nginx服务。
sudo systemctl restart nginx执行以下命令,重启uWSGI服务。
执行以下命令,停止已启动的uWSGI程序。
ps aux |grep uwsgi
sudo kill -9 13187 #13187指通过上述命令获取的pid,具体pid以您现场实时获取的为准
执行以下命令,启动uWSGI服务。
Alibaba Cloud Linux 3/2 、CentOS 7/8
uwsgi --ini uwsgi_config.iniUbuntu 22/20/18
sudo uwsgi --ini uwsgi_config.ini同时后台回显信息如下。
在本地电脑浏览器的地址栏输入http://