在centos上使用nginx+uwsgi部署django项目

记录一下在centos服务器上部署django项目的流程和值得注意的点,以便以后查阅。这里,我已经在windows本地完成了django项目的编写,并能成功运行和访问,项目使用的是Mysql数据库。在centos上,我们准备使用nginx和uwsgi来部署项目。

1.准备工作

服务器上需要先安装nginx、mysql,python相关的库有django、pymysql、pillow、uwsgi,其他的根据自己需要安装即可。

先在服务器上创建需要的Mysql数据库,再将本地的django项目拷贝到服务器,修改settings.py中的数据库相关配置,然后尝试执行
python manage.py runserver
先保证项目能正常运行。

若项目能正常运行,然后执行
python manage.py makemigrations
python manage.py migrate
以完成相关数据表的迁移和创建。

若需要迁移数据库中的数据,可以在windows上打开cmd,然后执行
mysqldump -u root -p 数据库名 > backup.sql
然后在服务器上执行
mysql -u root -p 数据库名 < backup.sql

2.uwsgi配置

在项目的根目录(即manage.py所在目录)下创建 uwsgi.ini 文件,在文件中添加如下配置:

[uwsgi]
#配置和nginx连接的socket连接
socket=127.0.0.1:8997        
#项目根目录,根据自己情况设置 
chdir=/home/dj-blog/myblog/   
#wsgi.py文件路径,根据自己情况设置
wsgi-file=myblog/wsgi.py   
#进程数   
processes=4  
#每个进程的线程数                 
threads=2        
#配置启动管理主进程             
master=True        
#配置存放主进程的进程号文件           
pidfile=uwsgi.pid    
#配置dump日志记录         
daemonize=uwsgi.log     

然后启动uwsgi:
uwsgi --ini uwsgi.ini
使用 ps -ef | grep uwsgi 可以查看uwsgi是否成功运行。

3.nginx配置

先将nginx原来的配置文件备份下:
cd /usr/local/nginx/conf/
cp nginx.conf nginx.conf.bak
然后修改nginx.conf配置文件为如下:

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen 80;
        server_name  www.xxx.cn;         #改为自己的域名,没域名修改为 127.0.0.1:80
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8997;                     #端口要和uwsgi里配置的一样
           uwsgi_param UWSGI_SCRIPT myblog.wsgi;          #wsgi.py所在的目录名+.wsgi
           uwsgi_param UWSGI_CHDIR /home/dj-blog/myblog/; #项目根目录
           
        }
        location /static/ {
        alias /home/dj-blog/myblog/static/; #静态资源路径
        }
    }
}

然后便可以启动nginx服务器:
nginx

4.最后的工作

修改settings.py中的相关设置如下:

DEBUG = False 
ALLOWED_HOSTS = ['*']

将服务器防火墙上的80端口打开:
firewall-cmd --zone=public --add-port=80/tcp --permanent
将服务器安全组中的80端口放行:

然后重启相关服务:
uwsgi --reload uwsgi.pid
nginx -s reload
这时,应该能在windows本地的浏览器上使用域名或服务器的ip地址访问django项目了。

由于本篇博客是在项目已经全部部署完成后边回忆边写的,难免有所疏漏之处,如有问题还请参考其他文章。

posted @ 2020-06-11 23:28  qxcheng  阅读(337)  评论(0编辑  收藏  举报