合作公司的MM今天送來第六份文檔,我在開發之處留意並擔心的問題最終還是被提出來了。文檔中大多數為細節調整,重點問題集中在全站商品分類(goodcat)的增刪改查和前端展開特效、current_item定位以及數據篩查。修改完成后上傳到服務器時出現了問題,kill掉Supervisor后重啟發現遇到了新問題。
問題觸發環境
我在Linux(Centos)系統的服務器上部署Tornado實例的時候,啟動Supervisor遇到的socket.error問題,
項目部署是Supervisor + Apache完成的,關鍵參數配置:
Supervisor:user=apache;
Apache:
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:8899/
ProxyPassReverse / http://127.0.0.1:8899/
錯誤詳細信息:
error: <class 'socket.error'>, [Errno 101] Network is unreachable: file: /usr/local/lib/python2.7/socket.py line: 571
解決方案
通過查閱,我發現StackOverflow上kelorek的一個回答可以解決此類問題,It does work,thank you。(@kelorek)先看他的回答:
You have to start supervisord before you can use supervisorctl. In my case:
sudo supervisord -c /etc/supervisor/supervisord.conf
sudo supervisorctl -c /etc/supervisor/supervisord.conf
即通過配置文件來啟動supervisor,然后再使用supervisorctl。所以我執行命令:
# /usr/local/bin/supervisord –c /etc/supervisor/supervisor.conf
其實到這里我的問題已經解決了,無需繼續使用命令:supervisorct start yourappname開啟tornado項目。
Tips:題主的問題中提到的錯誤是:
error: <class 'socket.error'>, [Errno 111] Connection refused: file: /usr/lib64/python2.6/socket.py line: 567
Supervisor知識點補充
supervisord & supervisorctl是Supervisor的兩個可執行程序,其關系相當與Apache下的httpd & apachectl。
- supervisord 是后台管理服務器, 用來依據配置文件的策略管理后台守護進程, 它會隨系統自動啟動;
- supervisorctl 用於管理員向后台管理程序發送 啟動(start)/重啟(restart)/停止(stop) 等指令。
=======分隔線,一下內容僅為隨筆記錄,可不看=========
好吧,又無恥地水了一篇文章(記錄操作錯誤類的文章在我看來確實有些應付),其實這並並不是我的本意。我在文章首段提到了,重點問題在分類的設計上。湊巧在前幾天瀏覽高級Web架構師面試題時看到了一個同種類型的題目——“數據庫設計范疇中的樹形數據結構設計”。
樹形數據,主要關注的是:
- 如何將數據高效地以樹形的形式展現給用戶。
- 通過某個節點找到所有的父節點。
- 獲取某個節點的所有的后繼節點(包括子節點的子節點)
樹形數據結構設計我並不是第一次接觸,之前開發商城系統時也讓它折騰過。但是目前將它從無到有、設計完善也不是幾分鍾就能搞定的事兒,不容易!而且這只是上一批開發者挖的坑之一,尤其是Python + Mongodb還不是我的強項(我的怨言就是從這來的)。之前有篇文章《初試MongoDB數據結構設計及$in查詢—多層級分類目錄》,簡單探討在Python + Mongdb架構下設計category以及如何查詢,以后會單獨寫篇文章深入研究總結。
https://www.gznotes.com/supervisor-socket-error-errno-101/