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