|
|
|
@ -8,7 +8,7 @@ For kirsle.net I needed to set it up using `mod_fcgid` because my site has a lot |
|
|
|
|
of legacy URLs to old static files, so Rophako needs to serve the main website |
|
|
|
|
pages and Apache needs to serve everything else. |
|
|
|
|
|
|
|
|
|
* Apache configuration: |
|
|
|
|
## Apache configuration: |
|
|
|
|
|
|
|
|
|
```apache |
|
|
|
|
# Rophako www.kirsle.net |
|
|
|
@ -36,7 +36,9 @@ pages and Apache needs to serve everything else. |
|
|
|
|
</VirtualHost> |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
* `~/www/.htaccess` configuration: |
|
|
|
|
## .htaccess configuration: |
|
|
|
|
|
|
|
|
|
This goes in `~/www/.htaccess` |
|
|
|
|
|
|
|
|
|
```apache |
|
|
|
|
<IfModule mod_rewrite.c> |
|
|
|
@ -48,3 +50,38 @@ pages and Apache needs to serve everything else. |
|
|
|
|
RewriteRule ^$ /fcgi/index.fcgi/ [QSA,L] |
|
|
|
|
</IfModule> |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
## FastCGI script |
|
|
|
|
|
|
|
|
|
This is my FastCGI script I wrote to launch Rophako. Important things to note: |
|
|
|
|
|
|
|
|
|
* The shebang line points to the Python binary in my virtualenv. |
|
|
|
|
* I modify sys.path and chdir to my git checkout folder for Rophako. |
|
|
|
|
* The `ScriptNameStripper` allows `mod_rewrite` to work best. Without it you'll |
|
|
|
|
sometimes get URL paths like `/fcgi/index.fcgi/blog/entry/...` etc. from Flask |
|
|
|
|
because that's what it thinks its path is. |
|
|
|
|
|
|
|
|
|
```python |
|
|
|
|
#!/home/kirsle/.virtualenv/rophako/bin/python |
|
|
|
|
|
|
|
|
|
import os |
|
|
|
|
import sys |
|
|
|
|
sys.path.append("/home/kirsle/git/rophako") |
|
|
|
|
os.chdir("/home/kirsle/git/rophako") |
|
|
|
|
|
|
|
|
|
from flup.server.fcgi import WSGIServer |
|
|
|
|
from rophako import app |
|
|
|
|
|
|
|
|
|
class ScriptNameStripper(object): |
|
|
|
|
def __init__(self, app): |
|
|
|
|
self.app = app |
|
|
|
|
|
|
|
|
|
def __call__(self, environ, start_response): |
|
|
|
|
environ["SCRIPT_NAME"] = "" |
|
|
|
|
return self.app(environ, start_response) |
|
|
|
|
|
|
|
|
|
app = ScriptNameStripper(app) |
|
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
|
WSGIServer(app).run() |
|
|
|
|
``` |
|
|
|
|