Hmm, interesting. I'll give it a try and compare RAM usage/performance 
after I've had more time to record data tinkering with the custom Nginx 
install.

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