Yup, it works, but I think I left out a key step. In more detail:

- In the webfaction control panel, set up two different applications. one 
is a "custom" type, and one is a "static" type.
- Put a link from the static folder under the web2py application to the 
static application's home folder
- In the control panel, create a website for your domain. A website can be 
handled by multiple applications. Set it up so that the root "/" is served 
by the custom app, and "/static" is served by the static app. I also have a 
wordpress app that serves "/blog". You can have any number of other 
applications.

For example, with my website any request to:
http://www.ai-therapy.com/
is handled by the custom app, which is uwsgi/web2py. All static content is 
under:
http://www.ai-therapy.com/static
Webfaction's nginx server knows to direct this to the static app, so uwsgi 
never even knows the request has occurred. Similarly, /blog/* goes directly 
to the wordpress app. Anything else handled by the "Custom on /" app, so 
gets mapped to web2py applications, controllers, functions, etc..

Hope that makes more sense.


On Wednesday, December 19, 2012 5:48:09 AM UTC, HittingSmoke wrote:
>
> So I've been thinking more and more about this over the past few days and 
> I'm 99% sure that would just serve the static content in the same exact way 
> it would otherwise (through uwsgi) just from the folder of the other app... 
> Can you confirm that nginx is actually serving the static 
> content separately?
>
> On Monday, December 17, 2012 11:34:51 AM UTC-8, Neil wrote:
>>
>> What I've done for that is set up another webfaction application of type 
>> "static" to server all the css, images, audio, videos, etc. That creates a 
>> new folder, for example:
>>
>> /home/[USER]/webapps/static_web2py_myapp
>>
>> Then, in my web2py/applications/[my_app]/ folder, I put a symbolic link 
>> called "static" to the above folder. Seems to do the trick.
>>
>> On Monday, December 17, 2012 7:17:35 PM UTC, HittingSmoke wrote:
>>>
>>> Bah, I actually asked a Webfaction staff member if this were possible 
>>> and I was told no, that the frontend Nginx server could only be used on 
>>> static/PHP sites.
>>>
>>> Now that I'm looking into it I'm seeing one major issue that without 
>>> proper configuration of Nginx for web2py, it would be serving static files 
>>> through uwsgi instead of directly though Nginx. That requires a special 
>>> entry in nginx.conf. Would that not mean reduced performance and higher RAM 
>>> usage from uwsgi?
>>>
>>> On Monday, December 17, 2012 4:32:21 AM UTC-8, Neil wrote:
>>>>
>>>> I'm also not a sysadmin, but I did go through the process of setting up 
>>>> web2py on webfaction recently as well. I also found that script but it 
>>>> seemed to be overly complicated. In particular, there is no need to 
>>>> download, build & run nginx, as you can use webfaction's instance. If 
>>>> there 
>>>> is an advantage to running your own I'd be curious to hear about it. 
>>>> Simplified steps I followed:
>>>>
>>>> 1. download & build latest uwsgi
>>>> 2. download & unpack latest web2py
>>>> 3. set up a "custom app" using webfaction's control panel, taking note 
>>>> of the port
>>>> 4. run the uwsgi binary, specifying parameters in the command line. For 
>>>> the socket parameter use 127.0.0.1 and the port webfaction assigned for 
>>>> your custom app. There are a few other posts in this group about selecting 
>>>> good uwsgi parameters so that you don't run out of memory (seems to be a 
>>>> common pitfall on webfaction)
>>>>
>>>> Hope that's useful.
>>>>
>>>> Neil
>>>>
>>>>
>>>> On Monday, December 17, 2012 6:53:31 AM UTC, HittingSmoke wrote:
>>>>>
>>>>> I've been learning web2py on Webfaction off and on for a while now. 
>>>>> The web2py install script on the Webfaction wiki is quite outdated and 
>>>>> runs 
>>>>> on an Apache instance that can barely stay within the default memory 
>>>>> limits 
>>>>> without serious tweaking. Responsiveness with web2py/apache out of the 
>>>>> box 
>>>>> with the default install script is unimpressive as well.
>>>>>
>>>>> A while back I tried a lighttpd setup with web2py on Webfaction. The 
>>>>> memory usage went way down and responsiveness was better but the web 
>>>>> server 
>>>>> was quite unstable. I found myself having to restart it constantly and I 
>>>>> couldn't track down the cause of the breakages. After the host upped the 
>>>>> default RAM limit on CentOS6 systems to 256MB things got better as it 
>>>>> made 
>>>>> Apache more manageable on custom installs but it still sucked overall.
>>>>>
>>>>> So I found an install script for nginx/uWSGI on the WF community 
>>>>> support 
>>>>> forum<http://community.webfaction.com/questions/7193/install-web2py-with-nginx-and-uwsgi>but
>>>>>  it was horribly outdated and had multiple issues pointed out in the 
>>>>> comments that went unfixed. I spent a couple hours today fixing the 
>>>>> ignored 
>>>>> errors, updating it to the latest nginx and uwsgi versions and fixing the 
>>>>> errors which that brought on. After getting it working my RAM usage has 
>>>>> decreased and responsiveness of my web2py apps has noticeably increased. 
>>>>> I 
>>>>> figured I'd share the script for anyone interested.
>>>>>
>>>>> I'm not a sysadmin, more of a hobbyist so any critique of my server 
>>>>> configs here are greatly welcome. Please note that the comments are not 
>>>>> mine. I merely updated the parts of the script that were required for it 
>>>>> to 
>>>>> work. All else was left as-is.
>>>>>
>>>>> Also, if anyone with knowledge of XML-RPC want's to make an actual 
>>>>> Webfaction install 
>>>>> script<https://docs.webfaction.com/xmlrpc-api/tutorial.html> for 
>>>>> nginx/uwsgi/web2py that would be awesome. It could be added to the script 
>>>>> wiki.
>>>>>
>>>>> #!/bin/sh
>>>>>
>>>>>
>>>>> # TODO's:
>>>>> # * find free port for communication for nginx and uwsgi
>>>>> # * test conjob creation properly
>>>>>
>>>>>
>>>>> echo 'Install script for nginx (1.2.6), uwsgi (1.4.3) and web2py 
>>>>> (latest stable)'
>>>>> echo 'If you wish to create cronjobs comment out the last lines of 
>>>>> this script'
>>>>>
>>>>>
>>>>> # port betweet nginx and uwsgi
>>>>> nginx_uwsgi_port=9001
>>>>>
>>>>>
>>>>> # Get web2py admin password
>>>>> echo "Web2py admin password:"
>>>>> read  web2py_password
>>>>>
>>>>>
>>>>> # Get webfaction application name
>>>>> echo "Webfaction application name:"
>>>>> read  webfaction_app_name
>>>>>
>>>>>
>>>>> # Get webfaction port number
>>>>> echo "Webfaction application port:"
>>>>> read  webfaction_app_port
>>>>>
>>>>>
>>>>> # port betweet nginx and uwsgi
>>>>> echo "Port number for communication between nginx and uswgi (eg. 
>>>>> 9001):"
>>>>> read nginx_uwsgi_port
>>>>>
>>>>>
>>>>> ### 
>>>>> ### web2py
>>>>> ###
>>>>> cd ~/webapps/${webfaction_app_name}
>>>>> wget http://www.web2py.com/examples/static/web2py_src.zip
>>>>> unzip web2py_src.zip
>>>>> rm web2py_src.zip
>>>>> cd web2py
>>>>> python -c "from gluon.main import save_password; 
>>>>> save_password('${web2py_password}',${webfaction_app_port})"
>>>>> cd ..
>>>>>
>>>>>
>>>>> ###
>>>>> ### nginx
>>>>> ###
>>>>> mkdir downs
>>>>> cd downs
>>>>>
>>>>>
>>>>> # download and install nginx in the appname directory
>>>>> wget http://nginx.org/download/nginx-1.2.6.tar.gz
>>>>> tar xvf nginx-1.2.6.tar.gz
>>>>> cd nginx-1.2.6
>>>>>
>>>>>
>>>>> ./configure \
>>>>>   --prefix=/home/${USER}/webapps/${webfaction_app_name}/nginx \
>>>>>   
>>>>> --sbin-path=/home/${USER}/webapps/${webfaction_app_name}/nginx/sbin/nginx 
>>>>> \
>>>>>   --conf-path=/home/${USER}/webapps/${webfaction_app_name}/nginx/nginx
>>>>> .conf \
>>>>>   --error-log-path=/home/${USER}/webapps/${webfaction_app_name}/nginx/
>>>>> log/error.log \
>>>>>   --pid-path=/home/${USER}/webapps/${webfaction_app_name}/nginx/run/
>>>>> nginx.pid  \
>>>>>   --lock-path=/home/${USER}/webapps/${webfaction_app_name}/nginx/lock/
>>>>> nginx.lock \
>>>>>   --with-http_gzip_static_module \
>>>>>   --http-log-path=/home/${USER}/webapps/${webfaction_app_name}/nginx/
>>>>> log/access.log \
>>>>>   --http-client-body-temp-path=/home/${USER}/webapps/${
>>>>> webfaction_app_name}/nginx/tmp/client/ \
>>>>>   --http-proxy-temp-path=/home/${USER}/webapps/${webfaction_app_name}/
>>>>> nginx/tmp/proxy/ \
>>>>>   --http-fastcgi-temp-path=/home/${USER}/webapps/${webfaction_app_name
>>>>> }/nginx/tmp/fcgi/
>>>>> make && make install
>>>>> cd ..
>>>>>
>>>>>
>>>>> # configure nginx
>>>>> cd ..
>>>>> mkdir nginx/tmp
>>>>> mkdir nginx/tmp/client
>>>>> cd nginx
>>>>>
>>>>>
>>>>> echo "
>>>>> worker_processes  2;
>>>>>
>>>>>
>>>>> events {
>>>>>     worker_connections  1024;
>>>>> }
>>>>>
>>>>>
>>>>> http {
>>>>>     access_log  /home/${USER}/logs/user/access_appname.log  combined;
>>>>>     error_log   /home/${USER}/logs/user/error_appname.log   crit;
>>>>>
>>>>>
>>>>>     include                mime.types;
>>>>>     client_max_body_size   5m;
>>>>>     default_type           application/octet-stream;
>>>>>     gzip_static            on;
>>>>>     gzip_vary              on;
>>>>>     sendfile               on;
>>>>>     tcp_nodelay            on;
>>>>>
>>>>>
>>>>>     server {
>>>>>         listen ${webfaction_app_port};
>>>>>         location ~* /(\w+)/static/ {
>>>>>             root 
>>>>> /home/${USER}/webapps/${webfaction_app_name}/web2py/applications/;
>>>>>         }
>>>>>         location / {
>>>>>             uwsgi_pass      127.0.0.1:${nginx_uwsgi_port};
>>>>>             include         uwsgi_params;
>>>>>         }
>>>>>     }
>>>>> }
>>>>> " > nginx.conf
>>>>>
>>>>>
>>>>> echo "#!/bin/sh
>>>>> kill -s QUIT \$( cat 
>>>>> /home/${USER}/webapps/${webfaction_app_name}/nginx/run/nginx.pid )
>>>>> " > stop
>>>>> chmod +x stop
>>>>>
>>>>>
>>>>> # start nginx
>>>>> ./sbin/nginx -c /home/${USER}/webapps/${webfaction_app_name}/nginx/
>>>>> nginx.conf
>>>>> cd ..
>>>>>
>>>>>
>>>>> ### 
>>>>> ### uwsgi
>>>>> ###
>>>>> mkdir uwsgi
>>>>> cd downs
>>>>>
>>>>>
>>>>> # download and install uwsgi in the appname directory
>>>>> wget http://projects.unbit.it/downloads/uwsgi-1.4.3.tar.gz
>>>>> tar xvf uwsgi-1.4.3.tar.gz
>>>>>
>>>>>
>>>>> cd uwsgi-1.4.3
>>>>> make -f Makefile
>>>>> cp uwsgi ../../uwsgi/
>>>>>
>>>>>
>>>>> cd ../../uwsgi
>>>>> echo "<uwsgi>
>>>>>     <socket>127.0.0.1:${nginx_uwsgi_port}</socket>
>>>>>     <workers>4</workers>
>>>>>     <no-orphans/>
>>>>>     
>>>>> <pythonpath>/home/${USER}/webapps/${webfaction_app_name}/web2py</pythonpath>
>>>>>     
>>>>> <pidfile>/home/${USER}/webapps/${webfaction_app_name}/uwsgi/uwsgi.pid</pidfile>
>>>>>     
>>>>> <daemonize>/home/${USER}/webapps/${webfaction_app_name}/uwsgi/uwsgi.log</daemonize>
>>>>>     <module>wsgihandler</module>
>>>>>  <master/>
>>>>>  <memory-report/>
>>>>> </uwsgi>" > uwsgi.xml
>>>>>
>>>>>
>>>>> echo "#!/bin/sh
>>>>> kill -s QUIT \$( cat 
>>>>> /home/${USER}/webapps/${webfaction_app_name}/uwsgi/uwsgi.pid )
>>>>> " > stop
>>>>> chmod +x stop
>>>>>
>>>>>
>>>>> # start uwsgi
>>>>> ./uwsgi -x /home/${USER}/webapps/${webfaction_app_name}/uwsgi/uwsgi.
>>>>> xml
>>>>> cd ..
>>>>>
>>>>>
>>>>> ###
>>>>> ### cleanup
>>>>> ###
>>>>> rm -rf downs
>>>>>
>>>>>
>>>>> ##
>>>>> ## create start/stop scripts
>>>>> ##
>>>>> echo "#!/bin/sh
>>>>> /home/${USER}/webapps/${webfaction_app_name}/nginx/sbin/nginx -c 
>>>>> /home/${USER}/webapps/${webfaction_app_name}/nginx/nginx.conf
>>>>> /home/${USER}/webapps/${webfaction_app_name}/uwsgi/uwsgi -x 
>>>>> /home/${USER}/webapps/${webfaction_app_name}/uwsgi/uwsgi.xml
>>>>> " > start
>>>>> chmod +x start
>>>>>
>>>>>
>>>>> echo "#!/bin/sh
>>>>> kill -s QUIT \$( cat 
>>>>> /home/${USER}/webapps/${webfaction_app_name}/uwsgi/uwsgi.pid )
>>>>> kill -s QUIT \$( cat 
>>>>> /home/${USER}/webapps/${webfaction_app_name}/nginx/run/nginx.pid )
>>>>> " > stop
>>>>> chmod +x stop
>>>>>
>>>>>
>>>>> ###
>>>>> ### create cronjobs
>>>>> ###
>>>>>
>>>>>
>>>>> #nginx_cron="10,30,50 * * * * 
>>>>> /home/${USER}/webapps/${webfaction_app_name}/nginx/sbin/nginx -c 
>>>>> /home/${USER}/webapps/${webfaction_app_name}/nginx/nginx.conf"
>>>>> #(crontab -l; echo "$nginx_cron" ) | crontab -
>>>>> # 
>>>>> #uwsgi_cron="10,30,50 * * * * 
>>>>> /home/${USER}/webapps/${webfaction_app_name}/uwsgi/uwsgi -x 
>>>>> /home/${USER}/webapps/${webfaction_app_name}/uwsgi/uwsgi.xml"
>>>>> #(crontab -l; echo "$uwsgi_cron" ) | crontab -
>>>>>
>>>>>
>>>>>

-- 



Reply via email to