部署Django到服务器
1. 传送文件到服务器上
scp xxx/xxx/xxx.xx username@ip:/xxx/xxx/xxx # 传送文件到服务器上
scp ~/sychen/blog.zip ubuntu@62.233.256.122:home/sychen/blog
scp ubuntu@62.233.256.122:home/sychen/blog /home/sychen/xxx # 从服务器下载文件
2.设置虚拟环境
# 创建虚拟环境
python -m venv venv_django_blog
# 进入虚拟环境
source venv_django_blog bin/activate
# 安装项目所需的包
pip install -r requirements.txt
# 在虚拟环境中安装uwsgi
pip install uwsgi
3.配置uwsgi
-
django自带一个wsgi,但是性能较差,在正式部署的时候往往使用uwsgi进行部署,因此需要对uwsgi进行配置
-
首先安装uwsgi,
pip install uwsgi
,uwsgi 需要安装两次,主环境中安装一次,虚拟环境中也要安装一次。 -
设置uwsgi配置文件
# 进入你的项目主目录下 touch uwsgi.ini # 配置文件写法如下 vim uwsgi.ini # 按照下面配置配置文件 uwsgi --ini uwsgi.ini # uwsgi 启动成功
#添加配置选择 [uwsgi] #指定IP端口 // 直接外部访问 #http-socket = 127.0.0.1:8080 #项目目录 chdir = /www/wwwroot/web/ #指定项目的application module = web.wsgi:application #uwsgi启动用户名和用户组 uid = www gid = www #启用主进程 master = true #指定Socket路径 //内部访问 #权限和nginx一样 socket = /www/wwwroot/web/script/uwsgi.sock #socket = :8080 #socket权限设置 chmod-socket = 755 #进程个数 processes = 5 pidfile = /www/wwwroot/web/script/uwsgi.pid #自动移除unix Socket 和 Pid 文件 当服务停止的时候 vacuum = true #序列化接受的内容,如果可能的话 thunder-lock = true #启用线程 enable-threads = true #设置自动中断时间 harakiri = 30 #设置缓冲 post-buffering = 4096 #设置静态文件 #static-map = /static=//www/wwwroot/mysite/static #设置日志目录 #daemonize = /www/wwwroot/mysite/uwsgi.log
``
4.配置nginx
- 先解释下为什么需要nginx
- 配置nginx
cd /etc/nginx # 到你的nginx的目录下
# 然后配置nginx.conf,配置文件如下
# 配置完成之后重启nginx
nginx -s reload
server {
listen 8848;
server_name 127.0.0.1:8848; #改为自己的域名,没域名修改为127.0.0.1:80
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8997; #端口要和uwsgi里配置的一样
uwsgi_param UWSGI_SCRIPT sychen_blog.wsgi; #wsgi.py所在的目录名+.wsgi
uwsgi_param UWSGI_CHDIR /data/wwwroot/sychen_blog/; #项目路径
}
location /static/ {
alias /data/wwwroot/mysite/static/; #静态资源路径,这个路径是要在django的settings.py中设置 STATIC_ROOT = 'xxx/xxx/xxx'
# 然后将这个路径写在这里
}
}