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