centos7+virtualenv +supervisor +python3+uwsgi + django +nginx 环境部署

virtualenv 和 supervisor 在自带的centos 2.7.5已经安装好了,但是我的项目用的是python3.6所以需要自己编译好python3.
如果你使用的virtualenv 是python3务必uwsgi也使用python3!否则会出现ImportError: no module named site的错误,这个错误是因为你uwsgi配置中的homeenv的环境和uwsgi运行python版本不一样导致!

我使用的系统的centos7

# 卸载centos7中python2.75的uwsgi
pip uninstall uwsgi
# 下面这一步是有时候可能pip卸载不干净所以直接把python2的uwsgi移动到任意一个目录
mv /usr/bin/uwsgi ~

我的项目目录如下

.
├── blog
│   ├── admin.py
│   ├── apps.py
│   ├── forms.py
│   ├── __init__.py
│   ├── models.py
│   ├── __pycache__
│   ├── templatetags
│   ├── tests.py
│   └── views.py
├── django_blog
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── __pycache__
│   ├── settings.py
│   ├── urls.py
│   ├── wsgi.py
│   └── wsgi.pyc
├── manage.py
├── README.md
├── requirements.txt
├── static
│   ├── css
│   ├── js
│   └── lib
├── templates
│   ├── 404.html
│   ├── about.html
│   ├── archives.html
│   ├── base.html
│   ├── index.html
│   ├── nav.html
│   ├── post.html
│   └── tag.html
├── uwsgi.ini
└── uwsgi.sock


1.安装uwsgi和配置uwsgi.ini文件

# 这一步是在系统全局环境中(3.6下进行)
pip3 install uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
# 在project下创建你的uwsgi.ini文件
vim uwsgi.ini
[uwsgi]
uid = root
gid = root
chmod-socket = 777
basedir=/usr/local
# 项目目录
chdir=%(basedir)/django_blog
# 指定项目的application
module=django_blog.wsgi:application
# virtualenv路径 
home=/usr/local/env_django
# 启用主进程
master=true
# 进程数量 
processes=2
# 指定sock的文件路径
socket=/usr/local/django_blog/uwsgi.sock
# 清除环境退出
vacuum=true
# 日志文件(如果使用的是supervisor管理就不需要开启)
#daemonize=/var/log/uwsgi.log

# 启动uwsgi
uwsgi --ini uwsgi.ini
# 查看启动是否成功
ps -ef | grep uwsgi

2.使用supervisor 管理uwsgi

#重定向配置文件到目录
echo_supervisord_conf > /etc/supervisord.conf 
chmod +x /etc/supervisord.conf

稍微修改一下配置文件最后的引入文件

mkdir /etc/supervisor
vim /etc/supervisord.conf

修改supervisord.conf的最后2行,修改导入配置文件

[include]
files = /etc/supervisor/*.conf

启动supervisor

supervisord -c /etc/supervisord.conf

增加配置文件

vim /etc/supervisor/django.conf
[program:django]
directory  = /usr/local/django_blog ;命令执行目录
command = /usr/bin/uwsgi --ini /usr/local/django_blog/uwsgi.ini
autostart = true   ;默认随supervisord自动启动,默认true
startsecs = 5      ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ;程序异常退出后自动重启
startretries = 3   ; 启动失败自动重试次数,默认是 3
redirect_stderr = true  ;重定向错误
stdout_logfile = /var/log/uwsgi.log ;这里日志需要手动创建否则无法启动

进入supervisorctl重载配置

reload

3.配置nginxuwsgi.sock的权限,以及注意关闭debug后**,django是不解析静态文件的,静态文件需要交给nginx来解析
这里需要注意,而且记得使用python manage.py collectstatic不然django admin的静态文件会404**

        location / {
			include /etc/nginx/uwsgi_params;
			uwsgi_pass unix:///usr/local/django_blog/uwsgi.sock;
        }

        location /static {
			expires 15d;
			autoindex on;
			alias /usr/local/django_blog/static/;
		}

systemctl start nginx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值