Django部署:Uwsgi和Nginx配置和使用,服务器部署的相关错误

原创 325阅读 · 时间2019年3月20日 13:56

配置

uwsgi

uwsgi的配置:

[uwsgi]
socket=127.0.0.1:8000
# 虚拟环境
home = /root/.virtualenvs/fy1
# 项目绝对地址
chdir=/home/admin/second_Edition
# uwsgi地址
wsgi-file=second_Edition/wsgi.py
master=true
processes=2
threads=2
# uwsgi日志..
daemonize=uwsgi.log
pidfile=uwsgi.pid
# 添加静态文件映射,
# 因nginx替代了静态文件的管理,这里的配置注释
# static-map=/static=static_file

1.开启uwsgi

uwsgi --ini uwsgi.ini

2.关闭uwsgi

uwsgi --stop uwsgi.pid

nginx

Nginx配置
在http{}的最后追加

...
server{
            listen 80;
            server_name yor IPaddress;

            location / {
                include uwsgi_params;
                uwsgi_pass 127.0.0.1:8000;
            }
            location /static {
                alias your static file adress;
            }
        }

1.安装Nginx

apt-get install nginx

2.开启Nginx

nginx

3.关闭Nginx

nginx -s stop
nginx -s quit

4.重启Nginx

nginx -s reload
nginx -s reopen

5.查看Nginx是否启动(进程)

ps -ef | grep nginx
ps -aux | grep nginx

6.确认Nginx配置文件位置

/etc/nginx/nginx.conf


在Ubuntu下部署Django项目遇到的问题

Internal Server Error 错误



部署完毕后,打开网址出现这个错误!!!

解决办法:

查看Uwsgi日志,发现缺少必要的库,因为没有指定虚拟环境位置。
我们在uwsgi的配置中,
加入home = 虚拟环境地址 
重启Uwsgi即可。

在服务器上以root用户启动celery报错。

报错信息
Running a worker with superuser privileges when the
worker accepts messages serialized with pickle is a very bad idea!
If you really want to continue then you have to set the C_FORCE_ROOT
environment variable (but please think about this before you do).

解决办法:

在celery配置文件celery.py中加入下面代码

from celery import Celery, platforms
platforms.C_FORCE_ROOT = True #加上这一行

删除/清空具有外键约束时报错:ERROR 1701(42000)

解决办法:

# 去除外键?
SET foreign_key_checks=0;

# 清空表
truncate table work_yuanwen;
# 外键回?
SET foreign_key_checks=1;
 ```

在阿里云服务器上用默认25端口发送邮件失败
因阿里云默认关闭25端口。

解决办法:

1.向阿里云申请解封25端口。
2.使用465端口发送邮件。

“`

import os
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from itsdangerous import TimedJSONWebSignatureSerializer


os.environ['DJANGO_SETTINGS_MODULE'] = 'second_Edition.settings'


def mail(user_email, id):
    SECRET_KEY = 's(do(h$i-d3rzrx7yhw@ik!cgwg+52-c#roc*3gk#wfk2y@1=2'
    s = TimedJSONWebSignatureSerializer(SECRET_KEY, expires_in=3600*64)
    token = s.dumps({'confirm': id})
    token = token.decode('utf8')
    print(token)
    url = "http://trans.kfyee.com/users/email_verification/{0}".format(token)
    # 发件人邮箱账号
    my_sender = '发送者邮箱账号'

    #发件人邮箱授权码,授权码是用于登录第三方邮件客户端的专用密码。
    my_pass = '你的邮箱授权码'

    # 收件人邮箱账号
    my_user = user_email
    # print("开始填信")
    ret = True
    mail_msg = '<h1>欢迎您注册本网站</h1>请点击下方链接进行激活登陆<br><a href="{0}">点我激活登陆</a>'.format(url)
    msg = MIMEText(mail_msg, 'html', 'utf-8')
    msg['From'] = formataddr(["发送者名称", my_sender])
    msg['To'] = formataddr(["接收者名称", my_user])
    msg['Subject'] = '邮箱头'
    server = smtplib.SMTP_SSL("smtp.qq.com", 465)
    server.login(my_sender, my_pass)
    server.sendmail(my_sender, [my_user, ], msg.as_string())
    server.quit()
    print("end")
    ret = False
    return ret



评论

本站升级中... 如有好的建议请加入QQ群!

相关文章推荐 ?
近七日热文推荐 !
回到顶部