Can I create a flask webapp in the same url with other pages(like wordpress)?

只愿长相守 提交于 2021-02-08 09:48:17

问题


I have a self-hosted server, only for my lan, with a Wordpress(miservidor.com) and Owncloud(miservidor.com/owncloud) page, those pages work perfectly, and i recentlly decided to create a webapp with flask under the same domain like miservidor.com/musicdownloader. I have tried to make it works but with no results, my config files are these:

/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-available/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-available/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>

My web app hierarchy is (in /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()

Is this the correct way to do it? It is better to use subdomains or different domains with the same ip? Thanks in advance.


回答1:


I found the solution, I can do it by changing the content I put in the file /etc/apache2/config-available/musicdownloader.conf to:

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>

Then:

sudo systemctl reload apache2

And now I can have my flask app in:

miservidor.com/musicdownloader



来源:https://stackoverflow.com/questions/64932495/can-i-create-a-flask-webapp-in-the-same-url-with-other-pageslike-wordpress

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!