Instalace Gentoo web serveru
Příspěvek obsahuje moje poznámky ke zprovoznění gentoo webserveru.
Instalace MySQL
cd /etc/init.d/ ./mysql start
Pokud není nainstalována db:
/usr/bin/mysql_install_db Installing MySQL system tables... 090521 20:21:02 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295 090521 20:21:02 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295 OK Filling help tables... 090521 20:21:02 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295 090521 20:21:02 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295 OK
./mysql start /usr/bin/mysqladmin -u root password 'login_rootra' /usr/bin/mysqladmin -u root -p -h czechit.net password 'login_rootra' mysql -u root -p create database tony_blog; grant usage on *.* to tony@localhost identified by 'heslo_tony'; grant all privileges on tony_blog.* to tony@localhost ; flush privileges;
Nastavení automatického startu apache
rc-update add apache2 default rc-update show
Přidání dalších uživatelů
czechit ~ # useradd -m -U michal czechit ~ # passwd michal
Předělání vlastníků rekurzivně (tvar: uživatel:skupina):
czechit www # chown -R michal:michal michalInstalace mod wsgi
Mod WSGI je jednoduchý Apache modul na spouštění Python skriptů jako CGI skriptů. Instalace se provede následovně:
czechit ~ # emerge mod_wsgi Calculating dependencies... done! !!! All ebuilds that could satisfy "www-apache/mod_wsgi" have been masked. !!! One of the following masked packages is required to complete your request: - www-apache/mod_wsgi-2.4 (masked by: ~x86 keyword) - www-apache/mod_wsgi-2.3 (masked by: ~x86 keyword) - www-apache/mod_wsgi-2.1 (masked by: ~x86 keyword) For more information, see the MASKED PACKAGES section in the emerge man page or refer to the Gentoo Handbook.
Nejde nainstalovat, protože jde o takzvaný masked balíček. Je nutno explicitně potvrdit instalaci, to se udělá např. přes alias:
alias aemerge='ACCEPT_KEYWORDS="~x86" emerge'
Nyní můžeme instalovat:
aemerge mod_wsgi
Tím jsme nainstalovali modul WSGI do Apache, automaticky se dostal i do /etc/apache2/modules.d, ale s direktivou
APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D LANGUAGE -D SSL -D SSL_DEFAULT_VHOST -D PHP5 -D WSGI"
Nyní můžeme napsat první WSGI skript viz návod. Do vhosts.d do 05_other_hosts.conf doplníme:
<VirtualHost *:80> # ServerName www.example.com # ServerAlias example.com # ServerAdmin webmaster@example.com DocumentRoot "/var/www/py/htdocs" ServerName py.czechit.net <Directory "/var/www/py/htdocs"> Order allow,deny Allow from all </Directory> WSGIScriptAlias /myapp /var/www/py/htdocs/myapp.wsgi </VirtualHost>
Instalace DJANGO
Sice by to šlo přes emerge, ale nebylo patrné jaká je přesně verze v nabídce, proto instaluji ručně:
wget http://www.djangoproject.com/download/1.0.2/tarball/ tar xzvf Django-1.0.2-final.tar.gz cd Django-1.0.2-final python setup.py install czechit / # django-admin.py Type 'django-admin.py help' for usage. czechit / # cd /home/tonda/django/ czechit django # django-admin.py startproject site1
Nyní je nutno vytvořit WSGI skript, který zavolá Django kód (viz tento návod):
import os, sys sys.path.append('/home/tonda/django') os.environ['DJANGO_SETTINGS_MODULE'] = 'site1.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
Podstatné je, že musí být vyplněna absolutní cesta v sys.path, protože WSGI skript je spouštěn z jiného adresáře.
Pak již stačí nastavit 05_other_hosts.conf:
<VirtualHost *:80> # ServerName www.example.com # ServerAlias example.com # ServerAdmin webmaster@example.com DocumentRoot "/var/www/py/htdocs" ServerName py.czechit.net <Directory "/var/www/py/htdocs"> Order allow,deny Allow from all </Directory> WSGIScriptAlias / /home/tonda/django/django.wsgi <Directory "/home/tonda/django"> Order allow,deny Allow from all </Directory> </VirtualHost>