centos8部署django
前置条件:默认安装了python3环境、安装django、创建python虚拟环境
1.django配置
settings.py
DEBUG = False #debug改为falseALLOWED_HOSTS = ['*'] # 访问地址改为 “*” 表示所有 STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR),"static") #nginx访问的目录 放到了之前static的上一级目录,可以自定义 需要写绝对路径 STATIC_URL = '/static/' STATICFILES_DIRS=[ os.path.join(BASE_DIR,"static"),] MEDIA_URL = '/archive/'MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'archive') #用户上传的静态文件,如:头像
2.安装和配置uwsgi
yum -y install gcc yum -y install python3-devel pip3 install uwsgi
在项目目录下新建uwsgi.ini;其实在哪配置都可以
内容如下
#添加配置选择 [uwsgi] #配置和nginx连接的socket连接,必须是服务器内网,端口已经在防火墙配置中开放 socket=1.116.82.243:8001 #必须是服务器内网,端口已经在防火墙配置中开放(直接做web服务器,使用http),在浏览器中访问这个地址 http=1.116.82.243:8002 #配置项目路径,项目的所在目录 chdir=/home/mysite/mysite3 #配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录名,相对于项目根目录,不是完整路径 wsgi-file=mysite3/wsgi.py #配置启动的进程数 processes=4 #配置每个进程的线程数 threads=2 #配置启动管理主进程 master=True #虚拟环境目录 home=/home/env/venv pidfile=uwsgi.pid daemonize=uswgi.log
uWSGI命令
启动:uwsgi --ini uwsgi.ini 停止:uwsgi --stop uwsgi.pid 重启:uwsgi --reload uwsgi.pid
3.安装使用nginx
yum install -y nginx
配置nginx.conf(cd /etc/nginx)
在server下添加新的或者修改location项,指向uwsgi的ip与端口
location / {
include uwsgi_params;
uwsgi_pass 10.0.12.2:8001; #项目端口号,即是uwsgi配置的ip和端口号
}
nginx命令
查看版本:sudo usr/sbin/nginx或nginx -v 启动:sudo usr/sbin/nginx或nginx 停止:sudo usr/sbin/nginx或nginx -s stop 重启:sudo usr/sbin/nginx或nginx -s reload
4.测试
访问你的地址:http://ip:80/admin/login/?next=/admin/,因为nginx监控的是80端口,所以是端口是80
http://1.116.82.243/admin/login/?next=/admin/
5.报错
nginx报错nginx: [error] open() “/run/nginx.pid” failed (2: No such file or directory)
执行命令:nginx -c /etc/nginx/nginx.conf
uwsgi报错No such process [core/uwsgi.c line 1693
1.输入命令(ps -ef | grep uwsgi)查看uwsgi的进程id
2.打开你的uwsgi.ini文件,查看pid文件路径
3.打开uwsgi.pid文件,把文件里的数字改成第一步查询的数字,保存,退出
4.继续执行重启(uwsgi --reload uwsgi.pid)或停止(uwsgi --stop uwsgi.pid)命令,如果还报错,继续从第一步重新操作
6.安装mysqlclient
yum install python3-devel yum install gcc mariadb-devel pip3 install mysqlclient