[英]run python3 script on linux apache 2.4
我到處尋找並嘗試了許多建議的解決方案,但仍然沒有得到所需的結果:從我的燈服務器運行 python 文件。 我似乎無法整合所有的難題......讓故事變得復雜的是,許多解決方案要么使用舊的 apache 版本(<2.4),這顯着改變了配置文件。 沒有更多的httpd.conf! 所以這個execution-a-python-script-in-apache2沒有幫助; 但是python版本> 3也使問題復雜化。
眼鏡:
python 腳本,最簡單的腳本,已經可以執行了
#!/usr/bin/env python3 print ("Content-type: text/html\\n") print ("Hello world!")
讓我們把它歸結為最簡單的情況:我想讓 apache 解釋 spark.py 腳本並吐出 html:“Hello world!”
問題:
我知道出於安全原因,您的根目錄中不應該有 apache 運行腳本。
modwsgi 的 python 文檔似乎符合您的要求。 下面的網頁有一個非常簡單的例子和 python3-apache2 設置的必要配置。
http://modwsgi.readthedocs.io/en/develop/user-guides/quick-configuration-guide.html
您需要安裝 mod_wsgi 才能使配置工作。 請注意 apt 和 pip3 中使用的不同的“_”下划線和“-”破折號字符。
$ sudo apt install apache2-dev libapache2-mod-wsgi-py3
$ sudo pip3 install mod_wsgi
libapache2-mod-wsgi-py3 和 mod_wsgi 似乎是一回事。 但是,我的測試部署僅在安裝 mod_wsgi 后才有效。 可能是配置問題。 以下是我在 Ubuntu 16.04.2 上測試過的詳細配置。
應用文件/home/user/wsgi_sample/hello.wsgi:
def application(environ, start_response):
status = '200 OK'
output = b'Hello World!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
Apache2 配置 /etc/apache2/sites-available/000-test.conf
<VirtualHost *:80>
ServerName testmachine
<Directory /home/user/wsgi_sample>
Order allow,deny
Allow from all
Require all granted
</Directory>
WSGIScriptAlias /hello /home/user/wsgi_sample/hello.wsgi
</VirtualHost>
在 apache2 中啟用站點。
sudo a2ensite 000-test.conf
打開你的瀏覽器testmachine/hello
。
wsgi 也可以使用passenger 部署在Apache2 上。 它需要稍長的配置。 如果需要乘客/python3,請提出一個新問題。
是的,您的最低代碼似乎是正確的。 Apache 配置信息在這里回答https://stackoverflow.com/a/57531411/4084546
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.