[Bash]
- 启动:
$sudo systemctl restart nginx[issue]
$uwsgi uwsgi.ini
or
$sudo service nginx restart[issue]
$uwsgi --reload uwsgi.pid
############ nginx log
gedit /var/log/nginx/error.log
sudo rm -f /var/log/nginx/*.log # clear
############ nginx conf
sudo gedit /etc/nginx/sites-available/default # setting
sudo gedit /etc/nginx/nginx.conf #
[admin手册]
- 修改密码
项目根目录下,$python manage.py shell
from django.contrib.auth.models import User
user = User.objects.get(username='admin')
user.set_password('new_password')
user.save()
[部署手册]
django + nginx + uwsgi
注:nginx监听端口需是打开的
[Documents]
本地启动:$python manage.py runserver 8080
- 请求与响应
app:
每一个应用(app)都是一个 Python 包。通常都将它们放在与manage.py脚本同级的目录下
$python manage.py startapp myapp
- 视图:
1)myapp/views.py
2)myapp/urls.py #为了调用该视图
3)myproj/urls.py #主urls.py文件
include语法相当于多级路由
- 模型与后端
数据库配置 >> 定义model,... >> 启用模型(建表+建python数据库API)
(每一个类都是django.db.models.Model的子类。每一个字段都是Field类的一个实例)
- 修改模型三步:
models.py
中修改模型
$python manage.py makemigrations webapp
创建迁移记录文件
$python manage.py migrate
操作同步到数据库
admin.py
中注册,同步到管理后台
[Method]
- method: 正则查找 [参考]
Problem: 通过后台页面上传到服务器的图片大小是任意的,现需将图片以固定大小显示在主页。已知读入字符串img如下:
img = "<p><img alt="" src="....jpg" style="height:4632px; width:7952px" /></p>"
Algorithm: { 字符串匹配,取得src值;根据src值,新建标签了;}
p = re.compile(r'src=".*?(.*?)"')
src = p.findall(img).pop()
[Issue]
issue: 启动Nginx出现
Failed to start nginx.service:unit not found
之前为修复服务器头文件披露的风险,将Ngnix卸载后并编译安装,因此Nginx启动方式变了。应该采用./nginx
的方式运行服务。issue: 标签未渲染 >> [添加"
|safe
"]
将{{ ele.body }}
修改为{{ ele.body|safe }}
的格式
- issue: css资源404(部署管理员后台)[仅参考]
[ 将本地css资源复制至项目内 ]
在python shell中:
>>>import django
>>>django.__file__
'.../python3.8/site-packages/django/__init__.py'
[ 通常'.../python3.8/site-packages/django/contrib/admin/static/' ]
[ 通常'.../python3.8/site-packages/ckeditor/static/' ]
issue: Server端只有500,看不到错误信息 >> [打开Debug模式]
修改配置文件,webproject/webproject/settings.pyissue: nginx重启失败
>> [80端口占用,kill相关进程],$sudo netstat -tnlp | grep 80
>> [nginx语法错误],$sudo nginx -t
>> [换命令],$sudo service nginx restart
- issue: 413
nginx报错,查看nginx-log如下:
[error] client intended to send too large body: 3667175 bytes,
解决:
1.打开nginx配置文件 nginx.conf, 路径一般是:/etc/nginx/nginx.conf。
2.在http{}段中加入client_max_body_size 20m;
20m为允许最大上传的大小。
3.保存后重启nginx,问题解决。$sudo service nginx restart
- issue: 304
第二天刷新页面时,服务器出现304状态码。
- issue:
403
Forbidden >> [资源没有权限]
$chmod -R +r *
nginx/error.log
[error] open() "/.../js/jquery.js" failed (13: Permission denied)
- issue:
500
Server Error >> [Django项目运行异常] - issue:
500
Server Error 只能查不能增删改 >> [alert] Nginx access.logfailed
(No space.) 删除日志并重启nginx.
- issue:
502
>> [uwsgi配置错,修改ini文件]
修改uwsgi.ini文件,运行,查看输出日志run.log,
$uwsgi uwsgi.ini
浏览器访问,查看nginx日志/var/log/nginx/error.log
- issue: uWSGI安装失败 >> [gcc=4.8]
参考[csdn]
[Future]
- 主页展示多张合影
主页考虑滚动切换效果,管理后台有管理照片入口 - 新闻详情页优化布局