《筆記》apache2 mod_wsgi的配置


接手了一台古老的服務器的還使用的是mod_wsgi,所以需要配置一下。其實這里有點懷念,記得當年自己折騰第一個app的時候,還是個什么都不懂的菜雞。當時用django搜方案的時候,還不知道有uwsgi或者tornado之類的東西。就知道apache2可以有可以handle wsgi的服務器。就用了一下mod_wsgi。這次這個項目坑,但是接手了多半還是有點情懷想還自己多年以前的技術債吧。

 

 廢話不多說還是上配置吧:

WSGIPythonHome /home/piperck/kn
WSGIPythonPath
/home/piperck/project/xxx/x
<VirtualHost 127.0.0.1:8085>
DocumentRoot
/home/piperck/project/xxx/x
WSGIScriptAlias
/ /home/piperck/project/xxx/x/apache/sogoke_dev.wsgi
WSGIDaemonProcess xxx_piperck user
=ubuntu group=ubuntu processes=4
WSGIApplicationGroup xxx_piperck
WSGIProcessGroup xxx_piperck
Errorlog
/var/log/apache2/player_piperck_error.log
Customlog
"|/usr/bin/rotatelogs /var/log/apache2/piperck_access_%Y_%m_%d.log 86400 480" combined
</VirtualHost>

一行一行的解釋

1. 是設置project的工作路徑。

2. 設置virtualenv或者miniconda的python包管理路徑。

然后下面就是apache 的 vhost配置

1. 設置project的工作路徑。

2. 應用wsgi的文件路徑。這個路徑下面要確保wsgi服務器能獲取到wsgi application。

3. 告訴mod_wsgi你要使用daemon模式運行,並且設置processes 和 threds數量。 另外這里的xxx_piperck是一個wsgi后台,可以填寫一個 自己的,user和 group 這里設置是linux的user和group 要確保這個用戶有足夠的權限可以操作你下面的設置的配置文件。比如下面設置了日志存放的地方,要確保你的用戶有權限讀寫日志,否則運行會出錯。

4. ApplicationGroup 和 ProcessGroup 似乎都沒有特別的意思,我設置為跟后台一個名字的參數。

5. 剩下兩行是設置日志的。錯誤日志存放地方,和一個訪問日志特別說下那個CustomLog,他調用了一個rotatelogs這個linux工具,來做日志切分。

格式是:rotatelogs [ -l ] logfile [ rotationtime [ offset ]] | [ filesizeM ]

logfile: /var/log/apache2/piperck_access_%Y_%m_%d.log

rotationtime:86400 ----24hours切一次

offset:480 ----utf+8

 

這樣只要能讓apache2正確找到wsgi文件的application,就能跑起來了。實際上我在配置的時候還遇到一點別的坑,我在配置nginx轉發到這台機器的過程中,還是遇到一點坑。由於我是新配服務器,我試了各種辦法都沒有辦法正確將流量轉發過來,這個時候我應該排除是apache2服務器問題,因為如果nginx流量轉發過來了,apache的日志是會看到的,只是會報500或者別的錯誤。不會完全邊日志沒有反應。后來我查了一大波nginx服務器配置也沒有發現為啥不能轉發我新設置在 nginx的800端口。 后來我突然想到,我操不會是設置了防火牆只允許之前那幾個接口吧。

sudo iptables -L

一看果然,沒有開放的端口全部都被攔截了。

 

其實遇到這種問題第一個應該想到的是雲服務器那邊是不是做了安全策略,二是看防火牆設置,最后再次檢查nginx配置是否有誤。按照這個思路還是能比較快查出問題的所在的。

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com