1.树莓派4B 64bit 8GB 启动配置(换源/Miniconda/SSH/Xrdp远程桌面/仪表盘/固件更新)
2.django如何启动服务器(部署django到服务器)
3.LNMP LNMPA 504 Gateway Time-out错误解决方法
4.å¦ä½å®è£
nginx
树莓派4B 64bit 8GB 启动配置(换源/Miniconda/SSH/Xrdp远程桌面/仪表盘/固件更新)
树莓派4B bit 8GB 启动配置分为以下几个关键步骤:更换源、码注安装SSH、码注Xrdp远程桌面、码注备份、码注进阶配置安装仪表盘、码注安装php7.4和nginx、码注欢乐夹娃娃微信源码安装pi-dashboard、码注检查EEPROM固件、码注安装GPIO Zero Python、码注基于MiniConda配置Python虚拟环境、码注添加环境变量、码注创建虚拟环境、码注换源以及安全关机、码注重启。码注
首先,码注注释掉所有源,padavan源码替换为国内源,执行Ctrl+O+回车保存,Ctrl+X退出。进行完整更新。
配置SSH部分,设置静态IP,添加相关配置到xorg.conf文件中,保存后重启。
使用Xrdp实现远程桌面,输入你的ip地址、账号和密码即可。
进行备份,全备份参考网上教程,部分备份需要先检查剩余空间是否足够。
安装仪表盘并配置php7.4和nginx,hl源码访问mand_line() 通过命令行参数,创建一个管理类。然后运行他的 execute() 。
如果设置了reload,将会在启动前先 check_errors 。
check_errors() 是个闭包,所以上文结尾是 (django.setup)() 。
直接看最后一句 settings.INSTALLED_APPS 。从settings中抓取app
注意,这个settings还不是我们项目中的settings.py。而是一个对象,位于 django\conf\__init__.py
这是个Settings类的懒加载封装类,直到 __getattr__ 取值时才开始初始化。然后从Settings类的实例中取值。且会讲该值赋值到自己的源码接口 __dict__ 上(下次会直接在自己身上找到,因为 __getattr__ 优先级较低)
为了方便debug,我们直接写个run.py。不用命令行的方式。
项目下建个run.py,模拟runserver命令
debug抓一下setting_module
回到 setup() 中的最后一句 apps.populate(settings.INSTALLED_APPS)
开始看 apps.populate()
首先看这段
这些App最后都会封装成为AppConfig。且会装载到 self.app_configs 字典中
随后,分别调用每个appConfig的 import_models() 和 ready() 方法。
App的装载部分大体如此
为了方便debug我们改写下最后一句
res的类型是Command django.contrib.staticfiles.management.commands.runserver.Command object at 0xEDA0
重点是第二句,让我们跳到 run_from_argv() 方法,这里对参数进行了若干处理。
用pycharm点这里的handle会进入基类的方法,无法得到正确的走向。实际上子类Commond重写了这个方法。
这里分为两种情况,如果是idea源码reload重载时,会直接执行 inner_run() ,而项目启动需要先执行其他逻辑。
django 项目启动时,实际上会启动两次,如果我们在项目入口(manage.py)中设置个print,会发现它会打印两次。
第一次启动时, DJANGO_AUTORELOAD_ENV 为None,无法进入启动逻辑。会进入 restart_with_reloader() 。
在这里会将 DJANGO_AUTORELOAD_ENV 置为True,随后重启。
第二次时,可以进入启动逻辑了。
这里创建了一个django主线程,将 inner_run() 传入。
随后本线程通过 reloader.run(django_main_thread) ,创建一个轮询守护进程。
我们接下来看django的主线程 inner_run() 。
当我们看到wsgi时,django负责的启动逻辑,就此结束了。接下来的工作交由wsgi服务器了
这相当于我们之前在fastapi中说到的,将fastapi的app交由asgi服务器。(asgi也是django提出来的,两者本质同源)
那么这个wsgi是从哪来的?让我们来稍微回溯下
这个settings是一个对象,在之前的操作中已经从 settings.py 配置文件中获得了自身的属性。所以我们只需要去 settings.py 配置文件中寻找。
我们来寻找这个 get_wsgi_application() 。
它会再次调用 setup() ,重要的是,返回一个 WSGIHandler 类的实例。
这就是wsgiapp本身。
load_middleware() 为构建中间件堆栈,这也是wsgiapp获取setting信息的唯一途径。导入settings.py,生成中间件堆栈。
如果看过我之前那篇fastapi源码的,应该对中间件堆栈不陌生。
app入口→中间件堆栈→路由→路由节点→endpoint
所以,wsgiapp就此构建完毕,服务器传入请求至app入口,即可经过中间件到达路由进行分发。
django如何启动服务器的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于部署django到服务器、django如何启动服务器的信息别忘了在本站进行查找喔。
LNMP LNMPA Gateway Time-out错误解决方法
systems的VPS放那里很久没用,刚好W2被停了一些时日,实在无聊,想把美女还是放在上面,所以,直接卡擦重装了systems的VPS的系统,$刀的小内存,自然不弄面板了,直接LNMP,结果出现了意想不到的问题。VPS安装LNMPA一路比较顺利,貌似时间比较长,花了2小时左右(哎,够郁闷的,晚点写个systems$/年VPS的评测吧),下载源码,解压都不错,安装dedecms,完全OK。这个源码,是别人提供的,上传空间需要安装后再还原下数据,问题就在还原数据的时候出现了,每次均很快提示: Gateway Time-out!
因为后台要还原的数据文件很多,我发现,前面比较小的没问题,问题总是出现在恢复某个大的数据库文件上,首先想到可能是php执行时间问题,打开/usr/local/php/etc/,编辑php.ini文件:
max_execution_time 设置为0(或者高于目前值的数值)
重启过LNMP之后,忐忑的重新还原数据,OH,仍然,头疼,继续搜索解决方法。
编辑:/usr/local/apache/conf/extra/下的/softdown/.htm
nginx
windowså®è£ é ç½®æ¹æ³
第ä¸æ¥ãå®è£ æ¹æ³
ä¸ãä¸è½½å¥½åï¼ænginx
windowsç软件解åå°cçæ ¹ç®å½ã
äºãåå»nginx.exeå¾æ ï¼å¯è§é»çªå£ä¸éªèè¿ï¼å¯å¨å®æ¯ã
ä¸ãæä¸win+Rå¿«æ·é®ï¼è¾å ¥cmdæå¼å½ä»¤è¡ã
åãå½ä»¤è¡å°nginxç®å½ï¼è¾å ¥nginxå¯å¨ãï¼æ³¨ï¼æ¤æ¹å¼å½ä»¤è¡çªå£æ ä»»ä½æ示ï¼ä¸è¢«éå®ï¼
äºãæå¼æµè§å¨ï¼è¾å ¥http://.0.0.1ï¼å¦æçå°ä¸å¾çåå®è£ æåã
å ã以åå¯å¨è½¯ä»¶ç´æ¥åå»å¾æ å³å¯ã
ä¸ãå¯å¨åï¼é»è®¤æ åµä¸ï¼æ ä¿®æ¹é ç½®ï¼ï¼å¯è§å°æ两个nginxçè¿ç¨ï¼ä¸ä¸ªæ¯master
processï¼ä¸ä¸ªæ¯worker
processesæµè¯ã
第äºæ¥ãé ç½®æ¹æ³
é ç½®ç®æ ï¼è½æ£å¸¸è¿è¡PHPèæ¬ç¨åº
大é¨åæ åµä¸ï¼æ们éè¦ä¿®æ¹çé ç½®æ件åªæä¸ä¸ªï¼é£å°±æ¯nginx.confï¼è¯¥æ件ä½äºconfç®å½ä¸ãå ·ä½é 置项ç®ä¸ºï¼
1.
server_tokens
off;
åºäºå®å ¨æ¹é¢çèèï¼æ好æ¯éènginxçæ¬å·ä¿¡æ¯
2.
listen
;
为çå¬ç«¯å£ï¼æ ¹æ®éè¦å¯ä»¥å¡«åå ¶å®ç«¯å£å·
3.
server_name
localhost;
localhost为æå¡å¨è®¿é®å称ï¼ä¹å°±æ¯æ们å¨æµè§å¨éè¾å ¥çé£ä¸ªurlå°å
4.
charset
utf-8;
å符éç¼ç
5.
å·¥ä½ç®å½
å°å¦ä¸é ç½®
ä¿®æ¹ä¸ºï¼
root
å®ä¹äºå·¥ä½ç©ºé´ï¼ä¹å°±æ¯æ们php项ç®æå¨çç®å½ã
å å ¥index.phpæ¯ä¸ºäºè®©nginxè½å¤è¯å«phpèæ¬ï¼å¦åï¼å¨è®¿é®phpæ件æ¶ï¼ä¼åºç°ç´æ¥ä¸è½½çæ åµã
6.
æ´åphp
å°location
~
\.phpé ç½®é¨åç注éå ¨é¨å»æï¼æç»é ç½®å¦ä¸ï¼
注æè¿éé¢ç$document_rootåéï¼å®å¯¹åºçå 容就æ¯rootåæ°å¼ï¼å¦ææ们没æå®ä¹rootåæ°æè æroot注éæï¼å¨è®¿é®phpçæ¶åï¼é¡µé¢ä¸å°±ä¼åºç°No
input
file
specified.æ示ã
7.
å¯å¨php-cgi
æå¼cmdå½ä»¤çªå£ï¼åæ¢å°phpçå®è£ ç®å½ï¼æ§è¡php-cgi
-b
.0.0.1:ï¼å³å¯å¯å¨php-cgiï¼å¯å¨å®æåï¼cmdçªå£åå¿å ³éï¼å¦åphp-cgiä¹ä¼è¢«å ³æçã
ç¹å«æéï¼åªæå¨å¼å¯php-cgiçæ åµä¸ï¼nginxæè½æ£å¸¸è®¿é®phpã
8.
éå¯nginx
æå¼cmdå½ä»¤çªå£ï¼åæ¢å°nginxæå¨ç®å½ï¼æ§è¡nginx
-s
reloadå³å¯éå¯nginxãå ¶å®ç¸å ³nginxç¸å ³å½ä»¤å¦ä¸ï¼
å¯å¨ï¼start
nginx
åæ¢ï¼nginx
-s
stop
éåºï¼nginx
-s
quit