簡體   English   中英

在 linux apache 2.4 上運行 python3 腳本

[英]run python3 script on linux apache 2.4

我到處尋找並嘗試了許多建議的解決方案,但仍然沒有得到所需的結果:從我的燈服務器運行 python 文件 我似乎無法整合所有的難題......讓故事變得復雜的是,許多解決方案要么使用舊的 apache 版本(<2.4),這顯着改變了配置文件。 沒有更多的httpd.conf! 所以這個execution-a-python-script-in-apache2沒有幫助; 但是python版本> 3也使問題復雜化。

眼鏡:

  • linux Kubuntu、apache 2.4、python 3.5
  • 阿帕奇正在運行
  • 網站文件在 root/var/www/html/ 中,我可以 sudo 訪問此文件夾。
  • apache2 cgi 模塊已啟用:a2enmod cgi
  • python 3.5 路徑是 usr/bin/env python3
  • 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM