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