我可以在与其他页面(如wordpress)相同的url中创建flask webapp吗?

2024-04-18 15:28:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个自托管服务器,只用于我的局域网,有Wordpress(miservidor.com)和Owncloud(miservidor.com/Owncloud)页面,这些页面工作得非常好,最近我决定在同一个域下创建一个webapp,比如miservidor.com/musicdownloader。我已尝试使其工作,但没有结果,我的配置文件如下:

/etc/apache2/sites available/000 default.conf

<VirtualHost *:80>
    ServerName miservidor.com
    Redirect / https://miservidor.com/
</VirtualHost>

/etc/apache2/sites available/default ssl.conf

<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                ServerAdmin webmaster@localhost

                DocumentRoot /var/www/html

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined

                SSLEngine on

                SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
                SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key

                <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                </Directory>
                <Directory />
                        AllowOverride ALL
                </Directory>
        </VirtualHost>
</IfModule>

/etc/apache2/config可用/musicdownloader.conf

<VirtualHost *:80>
                WSGIScriptAlias /musicdownloader /var/www/musicdownloader/musicdownloader.wsgi
                <Directory /var/www/musicdownloader/musicdownloader/>
                        Order allow,deny
                        Allow from all
                </Directory>
                Alias /musicdownloader/static /var/www/musicdownloader/musicdownloader/static
                <Directory /var/www/musicdownloader/musicdownloader/static/>
                        Order allow,deny
                        Allow from all
                </Directory>
                ErrorLog ${APACHE_LOG_DIR}/error.log
                LogLevel warn
                CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

/etc/apache2/config可用/owncloud.conf

Alias /owncloud "/var/www/owncloud/"

<Directory /var/www/owncloud/>
  Options +FollowSymlinks
  AllowOverride All

 <IfModule mod_dav.c>
  Dav off
 </IfModule>

 SetEnv HOME /var/www/owncloud
 SetEnv HTTP_HOME /var/www/owncloud

</Directory>

我的web应用程序层次结构是(在/var/www/):

|--musicdownloader/
|----musicdownloader.wgsi
|----musicdownloader/
|------app.py
|------static/
|--------main.css
|------templates/
|--------musicdownloader.html
|--------download.html

musicdownloader.wgsi

#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/musicdownloader/")

from musicdownloader import app as application

app.py

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route('/musicdownloader', methods=["POST","GET"])
def musicdownloader():
    return render_template('musicdownloader.html')

if __name__ == "__main__":
    app.run()

这是正确的方法吗?最好使用子域或具有相同ip的不同域?提前谢谢


Tags: comappsslvarconfhtmlwwwetc
1条回答
网友
1楼 · 发布于 2024-04-18 15:28:22

我找到了解决方案,我可以通过将文件/etc/apache2/config available/musicdownloader.conf中的内容更改为:

WSGIScriptAlias /musicdownloader /var/www/musicdownloader/musicdownloader.wgsi

WSGIDaemonProcess musicdownloader python-path=/var/www/musicdownloader:/var/www/musicdownloader/musicdownloader/venv/lib/python3.8/site-packages
WSGIProcessGroup musicdownloader

<Directory /var/www/musicdownloader/musicdownloader/>
     Require all granted
</Directory>
Alias /musicdownloader/static /var/www/musicdownloader/musicdownloader/static
<Directory /var/www/musicdownloader/musicdownloader/static/>
Require all granted
</Directory>

然后:

sudo systemctl reload apache2

现在我可以在以下位置使用我的烧瓶应用程序:

miservidor.com/musicdownloader

相关问题 更多 >