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