I have started a migration of our startup-ish project from a basic webhosting at http://www.webfaction.com to a linode 512 account over at http://www.linode.com today, which is a VPS with root access and all the related perks. The project is Django based and uses MySQL as well as some C++.
I was really afraid of the configuration, but so far it is turning out quite easy, although I am a COMPLETE noob. The steps I took so far:
- Use the one click StackScript - this installs essential components of your application stack, which is Apache with mod_wsgi, MySQL (other databases available too) and some other stuff
- For database interface install phpmyadmin, which is immediately accessible when you point your browser to IP_of_your_linode/phpmyadmin
sudo apt-get install phpmyadmin
- Note here, that the DB itself is configured by the StackScript, so in the install pick the option that doesn't reinstall the database
- Added some helpful aliases to ~/.bash_aliases (this gets automatically loaded on relog, or by typing bash, also you may need to change paths):
alias memhttpd="ps -u $LOGNAME -o pid,rss,command | grep httpd | grep -v -e mpm | awk 'BEGIN {sum=0} {sum=sum+\$2} END {printf(\"%f MB\n\",sum/1024)}'" alias memtotal="ps -u $LOGNAME h -o rss | grep -e mpm -v | (tr '\n' +; echo 0) | bc" alias memtot="~/webapps/misc/mem/check_mem_console" alias memcheck="ps -u $LOGNAME -o pid,etime,rss,command | grep -v -e mpm" alias memcheckhttpd="ps -u $LOGNAME -o pid,etime,rss,command | grep httpd | grep -v -e mpm" alias apache_restart="/etc/init.d/apache2 restart"
- Configure your virtualhosts. It is generally known that you should not serve static content with Django, so you should pick a directory outside of the Django folder and create a virtualhost record for it in:
/etc/apache2/sites-available/yourwebsitename
- Check general, subdomains, ...
- Don't forget to restart Apache to see the changes in configuration. You can do so by using the apache_restart alias we registered one step above
- I have started adding some more StackScripts, which allow me to simplify some tasks (like starting a django project). To keep things clean, I created a folder ~/stackscripts, where I just copy them. Then for each, I add a line to the end of my .bashrc:
. ~/stackscripts/scriptname
which includes them in. Just type bash in the command line and enjoy. Especially neat feature is that bash auto-completes functions defined in .bashrc and you can tab over them. Nice! - Now this is no longer chronological, but next tip is that if you install a library like OpenCV, that you intend to use with python, you will need to put the OpenCV/lib folder in the python path (sys.path). For this, I found that the easiest thing to do is to put a .pth file in a folder that already is in the python path and list folders you want to add each on a separate line. Then upon execution of python, these folders get added to sys.path by site.py.
- ... to be continue
No comments:
Post a Comment