Nginx+uWSGI部署django博客项目

  • 作者:lwj
  • 分类:Linux
  • 发表日期:2019-10-13 14:54:29
  • 阅读(704)
  • 评论(0)

uwsig的安装测试

安装uwsgi

sudo python -m pip install uwsgi

注意:

1)在系统环境安装,非虚拟环境
2)使用对应python版本安装
3)要先安装python开发包

测试 uwsgi 是否正常

在home/ubuntu目录下新建 test.py 文件,内容如下:

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    print("hello world")
    return [b"Hello World"]

终端运行:

sudo uwsgi --http :8000 --wsgi-file /home/ubuntu/test.py

浏览器输入http://IP:8001可以打印出来说明安装成功

注意:需要开启8001端口才可正常访问

uwsgi的http协议访问django写的网站

可执行如下命令可以测试自己的项目

sudo uwsgi --http :8001 --chdir 项目路径 --虚拟运行环境路径 --module mysite.wsgi:application

浏览器输入http://IP:8001可以正常访问

虚拟运行环境的搭建

1. python安装虚拟环境(virtualenv):

sudo python -m pip install virtualenv

2. 创建虚拟运行环境mysite_env

进入home目录:         cd /home
创建虚拟运行环境:     virtualenv mysite_env

3.虚拟运行环境常用命令

启动虚拟环境: source mysite_env/bin/activate
退出虚拟环境: deactivate

4.本地环境安装mysqlclient的依赖

sudo apt-get install python3-dev libmysqlclient-dev

5. 进入虚拟环境安装Python包

# 切换root账号
sudo su root

# 启动虚拟运行环境
source mysit_env

# 通过pip安装博客项目的Python依赖包
pip install django-ckeditor==5.4.0
pip install Django==2.0
pip install Pillow==5.0.0
pip install pytz==2017.3
pip install mysqlclient

nginx的安装与配置

安装nginx

若有安装过apache,要先把apache服务关闭(apache2ctl stop)

# 更新软件仓库
sudo apt-get update        
 
# 安装nginx
sudo apt-get install nginx

移除default

sudo rm -rf /etc/nginx/sites-enabled/default

进入sites-available创建新的配置

cd /etc/nginx/sites-available/
sudo vim mysite.conf

配置下面:

server {
    listen 80;
    server_name mysite;
    charset utf-8;                                # 编码格式
 
    client_max_body_size 75M;                     # 最大文件大小限制  
 
    location /favicon.ico {
        alias /home/mysite/favicon.ico;           # favicon.ico路径     
    }
 
    location /static {
        alias /home/mysite/static;                # 静态文件路径
    }
 
    location /media {
        alias /home/mysite/media;                 # 图片文件路径
    }
 
    location / {
        uwsgi_pass 127.0.0.1:8001;                # 本地监听端口
        include /etc/nginx/uwsgi_params;    
    }
}

设置软链接到sites-enabled

sudo ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/mysite.conf

配置uwsgi,创建ini文件

[uwsgi]
chdir = /home/mysite                         # django项目路径
home = /home/mysite_env                      # 虚拟环境路径
module = mysite.wsgi:application
master = True
processes = 4                                # 进程数
harakiri = 60                                # 超时时长
max-requests = 5000                          # 最大请求数
socket = 127.0.0.1:8001                    
uid = 1000
gid = 2000
pidfile = /home/mysite_uwsgi/master.pid
daemonize = /home/mysite_uwsgi/mysite.log
vacuum = True

启动uwsgi

启动:sudo uwsgi --ini /home/mysite_uwsgi/mysite.ini
查看uwsgi进程数:ps -aux | grep uwsgi

测试nginx

命令:sudo nginx -t

返回ok无异常,其他情况检查自己的配置文件

重启nginx

sudo service nginx restart

收集静态文件

有些静态文件没有收集起来,导致有些页面样式不对

找到settings.py,在STATIC_URL上面加上STATIC_ROOT = os.path.join(BASE_DIR, ‘static_collected’),保存

启动虚拟环境:

启动: source /home/mysite_env/bin/activate

收集静态文件:

python /home/mysite/manage.py collectstatic

修改上传文件夹权限

sudo chmod -R 777 media

其他常用命令

正常关闭uwsgi进程:sudo uwsgi --stop /home/mysite_uwsgi/master.pid

强制关闭全部uwsgi进程:sudo ps -aux | grep uwsgi |awk '{print $2}'|xargs kill -9

重新加载uwsgi:sudo uwsgi --reload /home/mysite_uwsgi/master.pid

 

博客网站源码

觉得不错,支持一下!

提交评论

您尚未登录,登录之后方可评论~ 登录 or 注册

评论列表

暂无评论
返回顶部

建议反馈

1. 可在博文底部留言评论

2. 发邮件到i_suichuan@163.com