16/9/2017

Mysql, MariaDB databank: welk type sleutel of id, en hoe groot?

Filed under: — cybrarian @ 10:27 am

Hoe groot kan een id worden? Meestal zet je de waarde van de sleutel op auto-increment.
Maar je wil liefst niet verrast worden door een databank waar je geen records meer kan toevoegen.

UNSIGNED INT: 4.294.967.295
UNSIGNED BIGINT: 18.446.744.073.709.551.615

Ik zie aangeraden worden om
– niet te spaarzaam te zijn op ruimte
– werk je op een 32 bit of 64 bit systeem?
– UNSIGNED te gebruiken als het kan; als je niet van plan bent om negatieve waarden te gebruiken kan je het bereik van een type als INT of BIGINT verdubbelen.
– INT(8) of INT(44) maakt geen verschil, aangezien dat getal enkel slaat op de weergave van de getallen, niet op de (maximum) waarde.

Waarschijnlijk is het niet slecht om in je applicatie een test in te bouwen bij het aanmaken van records, en het niet kunnen maken van een nieuw record op te vangen met een foutafhandeling. Maar zelfs dan kan het moeilijk worden om je applicatie overeind te houden, en levert het zeker problemen op voor de gebruiker. Misschien iets inbouwen voor als je in de richting van het maximum gaat?

8/9/2017

phpMyAdmin logt uit na 1440 seconden

Filed under: — cybrarian @ 9:22 am

Het is nu eenvoudig om de instelling van phpMyAdmin te veranderen zonder zelf in de configuratie bestanden te moeten gaan zoeken:

  • Start phpMyAdmin, log in
  • Kies het hoofdscherm (bv server:localhost) met General Settings en Appearance settings in het midden, en Database server – Web server – phpMyAdmin in de rechterkolom
  • Appearance settings, klik onderaan op “More settings”
  • Klik op het tweede tabblad met een steeksleutel: “Features”
  • Login cookie validity (seconden): verander 1440 naar een gepast getal.
  • Klik “Apply” om te bevestigen.

Helaas is deze instelling enkel geldig voor de huidige sessie!

Voor een meer permanente moet je toch op de server zijn:

In config.inc.php :
$cfg['LoginCookieValidity'] = 36000;

en in .htaccess bestand in de phpMyAdmin site:
php_value session.gc.maxlifetime 36000

Voor het gemak wat omrekeningen:

1140 seconden = 24 minuten
3600 seconden = 1 uur
28800 seconden = 8 uur
86400 seconden = 24 uur
432000 seconden = 5 dagen.

enz.

16/3/2017

PostgreSQL

Filed under: — pinguim @ 1:25 pm

Postgres

Een databank met SQL-taal, PostgreSQL – soms afgekort tot Postgres (vroegere naam Postgres95, Postgres verwees naar Ingres), is ontworpen voor gebruik op unix-achtige systemen, en is beschikbaar in de meeste Linux distributies, bij hosting providers enz.

LAMP?

De PostgreSQL wereld vertaalt de LAMP afkorting anders dan “Linux Apache MySQL Php”, en eigenlijk is hun afkorting zelfs logischer: Linux Apache Middleware PostgreSQL, waarbij Middelware staat voor de taal, bv php, python, …

De clients

Er zijn verschillende clients, als psql (commmandolijn), pgAdmin3, en phpPgAdmin.

  • psql

    Deze werkt pas als alles juist geconfigureerd is (zie PostgreSQL installeren)

    postgres@linuxbox:~> psql

    psql (9.4.9)
    Type "help" for help.
     
    postgres=#

    Of geef opties als:
    cybr@linuxbox:~> psql -d mydatabase
    cybr@linuxbox:~> psql -U myusername

    zoniet :
    psql

    psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket “/tmp/.s.PGSQL.5432”?

    psql

    psql: FATAL: role “myusername” does not exist

    (als je geen username opgeeft wordt standaard de linux user gebruikt)

    psql: FATAL: database “cybr” does not exist

    (als je geen database opgeeft en die van de user die dan als standaard genomen wordt, niet bestaat)

  • pgAdmin3 of pgAdminIII?

    Op commandolijn starten met :
    pgAdmin3
    wat een applicatie start (met een olifantfoto), en als titel heeft “pgAdminIII”

WebInterface

De bijhorende web-interface (vergelijkbaar met phpMyAdmin) is phpPgAdmin.
http://localhost/phpPgAdmin/

En MySQL?

Kan PostgreSQL geïnstalleerd worden op dezelfde server waar al een MySQL databank draait? Ja, in principe wel. Maar een praktijkvoorbeeld leert toch voorzichtig te zijn met je productieserver; bij na-installatie van postgreSQL op een bestaande distributie, eindigde ik met een fout die de webserver verhinderde te starten:
Syntax error on line 15 of /etc/apache2/conf.d/phpPgAdmin.conf
Dit heeft blijkbaar met phpPgAdmin te maken, en waarschijnlijk niets met PostgreSQL op zich, maar het effect is duidelijk.
Het heeft ook te maken met de distributie OpenSUSE 13.1, en de standaard daarin niet geladen Apache module mod_version.
Het is even snel verholpen door het toevoegen van die module in de apache configuratie /etc/sysconfig/apache2:

APACHE_MODULES=”… version”

Dan wordt het iets als:

# fairly minimal
# APACHE_MODULES=”authz_host alias auth dir log_config mime setenvif”
#
# apache’s default installation
# APACHE_MODULES=”authz_host actions alias asis auth autoindex cgi dir imap include log_config mime negotiation setenvif status userdir”
# your settings
APACHE_MODULES=”actions alias auth_basic authn_file authz_host authz_groupfile authz_user autoindex cgi dir env expires include log_config mime negotiation setenvif ssl userdir reqtimeout authn_core authz_core version”

De server

Installeer in Suse via Yast, zoek “postgreSQL” of
zypper in postgresql94 postgresql94-contrib postgresql94-server

Starten gebeurt net als bij de andere servers als root met:

systemctl start postgresql

Check systemctl status postgresql

systemctl status postgresql
postgresql.service – LSB: Start the PostgreSQL master daemon
Loaded: loaded (/etc/init.d/postgresql)
Active: active (exited) since Mon 2017-03-13 11:13:32 CET; 10s ago
Process: 12947 ExecStart=/etc/init.d/postgresql start (code=exited, status=0/SUCCESS)

Mar 12 11:13:26 pgbox su[12963]: (to root) root on (null)
Mar 12 11:13:31 pgbox postgresql[12947]: Initializing PostgreSQL 9.2.14 at location /var/lib/pgsql/data..done
Mar 12 11:13:31 pgbox su[13034]: (to root) root on (null)
Mar 12 11:13:31 pgbox su[13069]: (to root) root on (null)
Mar 12 11:13:32 pgbox postgresql[12947]: Starting PostgreSQL 9.2.14 ..done
Mar 12 11:13:32 pgbox systemd[1]: Started LSB: Start the PostgreSQL master daemon.

Installatie

Zie PostgreSQL installeren

Gebruik (verschil MySQL/MariaDB)

EN-talig bondig overzicht op deze digital ocean site

Schema
In MySQL heb je een database, die verschillende tables bevat.
In PostgreSQL heb je een database, die bevat een Schema, dat bevat Tables
database.schema.table
Zonder er op te letten heb ik mijn tables in het schema “public” gemaakt.

Tabel
– “without OIDS” staat standaard aan in phpPgAdmin (**)
– Tabel zit in een Schema (database.schema.table)
– Tabel kan gemaakt worden “LIKE parent_table” (create table like ..) dan wordt die structuur al volledig overgenomen
– Tabel kan gemaakt worden met INHERITS; dat creëert een band

Veldtypes
veld “auto-increment” -> veld Type SERIAL (*)
veldtype int -> veld Type integer
veldtype varchare -> veld Type character varying (er bestaat ook Type text)
veldtype float -> numeric (voor geldbedragen, exact), anders float (inexact)
veldtype datetime -> timestamp (without time zone?).

*) SERIAL :

  • bij het maken van de tabel, creatie van het veld, kan SERIAL worden opgegeven (is eerste keuze in lijst phpPgAdmin types); dan wordt automatisch al het nodige gedaan (en wordt het uiteindelijk toch type integer). Je moet daar verder geen type, lengte, of zo bij opgeven, wel eventueel “Primary key” aanduiden.
  • Bij SERIAL wordt automatisch NOT NULL ingevuld.
  • Als je eerst integer kiest, kan je nadien niet wijzigen naar SERIAL! (je moet dan het veld verwijderen en opnieuw maken)
  • **) OIDS: Vroeger kon je in PostgreSQL ook tabellen maken zonder “id”, en toch individuele rijen aanspreken omdat PostgreSQL zelf een soort Object IDentifierS aanmaakte, die je expliciet kon opvragen en gebruiken. Nu maak je normaal tabellen met optie WITHOUT OIDS.

Commando’s

\l = show databases
\d = show tables
\d = show tables
\d table = show columns
\d+ table = describe table

14/3/2017

PostgreSQL installeren, configureren

Filed under: — cybrarian @ 11:48 pm

zie ook ons PostgreSQL artikel

Ik volg een (openSUSE) installatie met dit Engelstalig artikel, en vat het ook even samen…
https://www.howtoforge.com/tutorial/how-to-install-postgresql-and-phppgadmin-on-opensuse-leap-42.1/#step-install-postgresql

Opm: Ik installeerde via Yast ipv met zypper; zoek “postgres” en je krijgt heel wat opties; installeer de server, de client, de management tool pgadmin3, de webtool phpPgAdmin, de odbc- en libreoffice-drivers, … De server heeft het versienummer in de naam (postgresql94), de client niet (postgresql).

  • Leap 42.2 – postgresql94 – postgres – pgadmin .. – phpPgAdmin ..
  • openSUSE 13.1 – postgres92 (9.2) – postgres (psql 9.2) – pgadmin3 1.16 – phpPgAdmin 5.0.4

Starten doe je zo:

systemctl start postgresql
vroeger: /etc/init.d/postgresql start

… en checken of hij draait in details als (* volledig log zie onderaan):

linuxbox:/home/cybr # systemctl status postgresql

postgresql.service - PostgreSQL database server
Active: active (running) since Tue 2017-03-14 22:01:20 CET; 9s ago

linuxbox:/home/cybr # journalctl -u postgresql

Mar 14 22:01:19 linuxbox postgresql-init[4956]: 2017-03-14 22:01:19 CET HINT: Future log output will appear in directory "pg_log".
Mar 14 22:01:20 linuxbox systemd[1]: Started PostgreSQL database server.

Met veel details en uitleg:

ps aux|grep postgres

wat de hiërarchie toont van de processen (=> pid hoofdproces):

ps -AH|grep postgres

Bij installatie is er een user postgres gemaakt op de server;
compgen -u
je moet werken als die gebruiker om verder te configureren (als root wordt niet toegelaten in de standaard configuratie):

linuxbox:/home/cybr # su - postgres

postgres@linuxbox:~>

Start de commandolijn “client” psql:

postgres@linuxbox:~> psql

psql (9.4.9)
Type "help" for help.
 
postgres=#

Zet eerst een wachtwoord:

postgres=# \password postgres

Enter new password:
Enter it again:
postgres=#

Je geraakt uit de postgres commandolijn met \q

Maak, nog steeds als postgres user op je Linux systeem een nieuwe gebruiker en rol aan, en geef hem ineens superkrachten (en een database):

createuser -s nano
createdb nano_db

Geen reaktie = geen foutmeldingen.
Dan terug inloggen in psql en:

postgres=# alter user nano with encrypted password 'nano2test';

ALTER ROLE

postgres=# grant all privileges on database nano_db to nano;

GRANT


Op een andere terminal pas je de instellingen aan om op een publiek ip adres te luisteren, zodat je vanop een andere computer toegang krijgt, of een applicatie toegang kan geven.

mcedit /var/lib/pgsql/data/postgresql.conf

en wijzig de gepaste lijnen naar:

listen_addresses = 'localhost'
port = 5432

En dan de wachtwoordcontrole naar md5:

mcedit /var/lib/pgsql/data/pg_hba.conf

(de oude standaard waarde staat er nog boven)

# TYPE DATABASE USER ADDRESS METHOD

# "local" is for Unix domain socket connections only
# local all all peer
local all all md5
# IPv4 local connections:
# host all all 127.0.0.1/32 ident
host all all 127.0.0.1/32 md5
# IPv6 local connections:
# host all all ::1/128 ident
host all all ::1/128 md5

en herstart de server:

systemctl restart postgresql

Om phpPgAdmin toegang te geven:

mcedit /etc/phpPgAdmin/config.inc.php

en vul de localhost in:

$conf['servers'][0]['host'] = '';

naar

$conf['servers'][0]['host'] = 'localhost';

Bovendien heeft Apache wat extra activatie nodig; check of php5 en version geladen zijn:

a2enmod -l

Indien niet:

a2enmod php5
a2enmod version

Herstart apache en postgresql.

In phpPgAdmin (http://localhost/phpPgAdmin/)
kreeg ik voordien te zien:

Attempt to connect with invalid server parameter, possibly someone is trying to hack your system.

Maar nu krijg ik netjes een welkom, een taalkeuze en als ik op Servers klik:

Server Host Port Username Actions
PostgreSQL localhost 5432

Ik kan nu (op PostgreSQL klikken en) inloggen met de voorheen gemaakte nano account. Ik zie de nano_db database en postgres (default administrative connection database).
Inloggen met de administratieve account postgres gaat niet! (maar dat is dus de bedoeling).

En de server terug stoppen:

systemctl stop postgresql
(daarna werkt natuurlijk phpPgAdmin niet meer, en blijft hangen op : “Login to PostgreSQL”)

Klaar!

(en nu misschien eens proberen te gebruiken vanuit Gambas?)

– – –
* vervolg starten/checken server:
(meer…)

7/3/2017

LAMP commando’s (kort)

Filed under: — cybrarian @ 11:40 am

LAMP
= Linux + Apache + MySQL/*/MariaDB + Php
als de databank postgreSQL is: Linux Apache Middleware PostgreSQL (zie)
Apache en de databank zijn de serverdiensten.
Voorbeeld voor openSUSE 42.2

Werking

systemctl start mysql
journalctl -u mysql

systemctl start apache2
journalctl -u apache2

Ook:
systemctl stop apache2
systemctl restart apache2

Ook:
systemctl status apache2

http://localhost/phpMyAdmin

ps: Behalve de diensten manueel opstarten, kunnen ze ook zelfstartend ingesteld worden.

Installatie

Als de servers nog niet geïnstalleerd zijn, installeren. Dan:
which mysql

/usr/bin/mysql

Voor de Apache webserver is het:
which httpd

/usr/sbin/httpd

En phpMyAdmin kan je zo helemaal niet vinden, want die installeert als een php programma in de webserver:

/srv/www/htdocs/phpMyAdmin

met configuratiebestanden:

/etc/apache2/conf.d/phpMyAdmin.conf
/etc/phpMyAdmin
/etc/phpMyAdmin/config.inc.php

Initialisatie MySQL/MariaDB

Je moet eerst de mysql server starten alvorens je dit script kan draaien (zie ook de meldingen in journalctl -u mysql na het starten van systemctl start mysql):

mysql_secure_installation

  • wachtwoord zetten (gebeurt in die mysql_secure_installation, alsook het verwijderen van anonieme gebruikers, het verbieden van een afstandlogin als root en het verwijderen van de testtabellen).
  • Firewall openzetten: Allowed Service: MySQL server (standaard poort 3306)
  • Luisteren naar buitenwereld? mcedit /etc/my.cnf zoek “skip-networking”, # skip-networking
  • Gebruiker maken en met rechten vanaf zijn ip-adres in MySQL users.

Gebruik

  • Om phpMyAdmin te kunnen gebruiken heb je Apache nodig.
  • Om meer dan alleen op de localhost te kunnen inloggen op phpMyAdmin/Apache moet er een opening in de firewall zijn voor de webserver (bv via Yast):

    Allowed Service: HTTP server (standaard op poort 80).

  • mysql: vanuit programma’s met mysql-users; vanop localhost en/of ip-address en/of % (alle adressen)


Zelfstartend

In het systeembeheer kan nagekeken worden of de serverdiensten automatisch opstarten:
OpenSUSE, Yast, System, Services Manager: “enabled“=start bij opstarten Linux server.
bv. apache2 Enabled, Active en mysql Enabled, Active (active=huidige toestand).

De knop “Show Details” geeft ook een heel mooie samenvatting:

Apache, niet aktief:

Service apache2 Full Info

* apache2.service - The Apache Webserver
Loaded: loaded (/usr/lib/systemd/system/apache2.service; disabled; vendor preset: disabled)
Active: inactive (dead)

Apache aktief:

* apache2.service - The Apache Webserver
Loaded: loaded (/usr/lib/systemd/system/apache2.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2017-03-23 10:21:03 CET; 10s ago
Main PID: 20519 (httpd-prefork)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
Tasks: 6
CGroup: /system.slice/apache2.service
|-20519 /usr/sbin/httpd-prefork -f /etc/apache2/httpd.conf -DSYSCONFIG -C PidFile /var/run/httpd.pid -C Include /etc/apache2/sysconfig.d/ -DSYSTEMD -DFOREGROUND -k start
|-20592 /usr/sbin/httpd-prefork -f /etc/apache2/httpd.conf -DSYSCONFIG -C PidFile /var/run/httpd.pid -C Include /etc/apache2/sysconfig.d/ -DSYSTEMD -DFOREGROUND -k start
|-20593 /usr/sbin/httpd-prefork -f /etc/apache2/httpd.conf -DSYSCONFIG -C PidFile /var/run/httpd.pid -C Include /etc/apache2/sysconfig.d/ -DSYSTEMD -DFOREGROUND -k start
|-20594 /usr/sbin/httpd-prefork -f /etc/apache2/httpd.conf -DSYSCONFIG -C PidFile /var/run/httpd.pid -C Include /etc/apache2/sysconfig.d/ -DSYSTEMD -DFOREGROUND -k start
|-20595 /usr/sbin/httpd-prefork -f /etc/apache2/httpd.conf -DSYSCONFIG -C PidFile /var/run/httpd.pid -C Include /etc/apache2/sysconfig.d/ -DSYSTEMD -DFOREGROUND -k start
`-20597 /usr/sbin/httpd-prefork -f /etc/apache2/httpd.conf -DSYSCONFIG -C PidFile /var/run/httpd.pid -C Include /etc/apache2/sysconfig.d/ -DSYSTEMD -DFOREGROUND -k start

Mar 23 10:21:03 pencoed systemd[1]: Starting The Apache Webserver...
Mar 23 10:21:03 pencoed systemd[1]: Started The Apache Webserver.

Mysql aktief:

Service mysql Full Info

* mysql.service - MySQL server
Loaded: loaded (/usr/lib/systemd/system/mysql.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2017-03-23 09:47:05 CET; 8min ago
Process: 3651 ExecStartPost=/usr/lib/mysql/mysql-systemd-helper wait (code=exited, status=0/SUCCESS)
Process: 3639 ExecStartPre=/usr/lib/mysql/mysql-systemd-helper upgrade (code=exited, status=0/SUCCESS)
Process: 3630 ExecStartPre=/usr/lib/mysql/mysql-systemd-helper install (code=exited, status=0/SUCCESS)
Main PID: 3650 (mysqld)
Tasks: 23 (limit: 512)
CGroup: /system.slice/mysql.service
`-3650 /usr/sbin/mysqld --defaults-file=/etc/my.cnf --user=mysql

Mar 23 09:46:57 pencoed systemd[1]: Starting MySQL server...
Mar 23 09:47:02 pencoed mysql-systemd-helper[3650]: 170323 9:46:59 [Note] /usr/sbin/mysqld (mysqld 10.0.29-MariaDB) starting as process 3650 ...
Mar 23 09:47:02 pencoed mysql-systemd-helper[3651]: Waiting for MySQL to start
Mar 23 09:47:05 pencoed mysql-systemd-helper[3651]: MySQL is alive
Mar 23 09:47:05 pencoed systemd[1]: Started MySQL server.

26/2/2017

MariaDB, waar is /var/log/messages ?

Filed under: — cybrarian @ 11:22 pm

Op een recent geïnstalleerde Linux server installeer ik mariadb, en zoek ik hoe de database te starten en hoe te kijken of ze gestart is. Ze heet waarschijnlijk niet meer “mysql”? Of toch? En Apache?

MySQL / MariaDB

MariaDB na installatie starten:

systemctl start mysql

Check of ze gestart is:
cat /var/log/messages ? Zo was het vroeger.
Sinds de overgang naar systemctl is ook de systeemlog gewijzigd naar journalctl. Dat commanda op zich opent een nogal heel grote tekst-log-file waarin je zonder filteren niet veel bent.

Uitleg en opties:
man journalctl

journalctl -u myqsl

Elke lijn begint met de tijd, hostname, en de bron van de loglijn; er uit met q van quit.
Feb 26 23:00:39 myhost mysql-systemd-helper[3186]:
(ik heb die hieronder vervangen door _ om het wat overzichtelijker te houden)

Starting MySQL server…
_ Creating MySQL privilege database…
_ Installing MariaDB/MySQL system tables in ‘/var/lib/mysql’ …
_ 170226 23:00:40 [Note] /usr/sbin/mysqld (mysqld 10.0.29-MariaDB) starting as process 3225 _ OK
_ Filling help tables…
_ 170226 23:00:51 [Note] /usr/sbin/mysqld (mysqld 10.0.29-MariaDB) starting as process 3252 …
_ OK
_ PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
_ To do so, start the server, then issue the following commands:
_ ‘/usr/bin/mysqladmin’ -u root password ‘new-password’
_ ‘/usr/bin/mysqladmin’ -u root -h myhost password ‘new-password’
_ Alternatively you can run:
_ ‘/usr/bin/mysql_secure_installation’
_ which will also give you the option of removing the test
_ databases and anonymous user created by default. This is
_ strongly recommended for production servers.
_ See the MariaDB Knowledgebase at http://mariadb.com/kb or the
_ MySQL manual for more instructions.
_ You can start the MariaDB daemon with:
_ rcmysql start
_ You can test the MariaDB daemon with mariadb-test package
_ Please report any problems at http://mariadb.org/jira
_ The latest information about MariaDB is available at http://mariadb.org/.
_ You can find additional information about the MySQL part at:
_ http://dev.mysql.com
_ Consider joining MariaDB’s strong and vibrant community:
_ https://mariadb.org/get-involved/
_ Waiting for MySQL to start
_ 170226 23:00:54 [Note] /usr/sbin/mysqld (mysqld 10.0.29-MariaDB) starting as process 3289 …
_ MySQL is alive
Feb 26 23:00:55 myhost systemd[1]: Started MySQL server.

Check eigen mariadb server log:
cat /var/log/mysql/mysqld.log

En dan nog steeds het veilig in gebruik stellen van mariadb/mysql:
mysql_secure_installation

Apache

ps: Hetzelfde geldt voor apache, moest dat de volgende vraag zijn:

systemctl start apache

En eigenlijk is het apache2 natuurlijk, dus vind je het in de logs als:

journalctl -u apache2

Na installatie van phpMyAdmin apache stoppen en terug starten:

systemctl stop apache
systemctl start apache

of
systemctl restart apache2

22/2/2015

Databank collation (bv mysql): utf8-belgisch-ci ?

Filed under: — cybrarian @ 11:04 pm

Bij het maken van een nieuwe databank in MySQL (& -achtigen) moet je kiezen welke “collation” je wil.
Dit is de taalgevoeligheid van de databank, en komt tot uiting in sorteringen.
Voor een toepassing die enkel van belang is voor je eigen taalgroep, kies je voor een UTF8-islandic-ci (bv). Maar er komt geen “Belgisch” voor, en evenmin “Frans” of “Nederlands” of “Vlaams”, indien het al wenselijk zou zijn.

In de lijst zie je dikwijls de uitgang “_ci”: die staat voor Case Insensitive; dwz hoofdletter-ongevoelig. Dat kan een voordeel zijn bij sorteren komt “Dit” en “dit” bijeen te staan.

De meer algemene systemen zijn:
– utf8_general_ci : behandelt alle tekens als ASCII, dus behandelt “A” en “a” hetzelfde, en zet om: ù als u; mogelijk iets sneller, en mogelijk de standaard instelling (mysql 5.x)
– utf8-bin : hoofdlettergevoelig.
– utf8_unicode_ci : sorteert wel rekening houdend met aantal eigen taal-letters, bv Duitse “ß” als “ss”, niet hoofdlettergevoelig.

De twee laatsten lijken de meest aangewezen, naargelang de inhoud van de data.

  • Voor puur abstracte dingen als random productcodes wil je misschien onderscheid maken tussen hoofd- en kleine letters, en vooral tussen een mét een accent en een zonder in een lijst met sleutelwaarden (key-values); dus utf-bin.
  • Voor meer algemene tekst-data waar woorden of namen in voorkomen, voor Engels/Nederlands/Frans/Duits, is utf8_unicode_ci waarschijnlijk het handigst.

27/4/2014

Apache mysql/mariadb phpMyAdmin openSUSE 13.1

Filed under: — cybrarian @ 2:13 am

In openSUSE 13.1 is het allemaal voorzien, en eenvoudig te installeren via het menu Installa/Remove Software, of dezelfde optie in Yast (1), of natuurlijk via zypper (4). Na installatie de servers starten (2), en extra instellingen doen (3).

1. Installatie
In Yast, in het tabblad Search zoek je naar:

  • mysql

    • mysql-community-server

    met bijhorende bestanden, uit Oss/update repo

  • Ofwel, wat eerder de standaard vervanging voor mysql is, maar waarvoor je anders moet zoeken:
    mariadb

    • mariadb Server part of MariaDB

    met bijhorende bestanden, uit Oss/update repo; verder volledig te gebruiken als mysql – er zijn nodige links voorzien om het gebruik transparant te maken. Zo zullen voor phpMyAdmin, Gambas, enz nog programmaonderdelen met de naam “mysql…” voorkomen.

  • apache
    • apache2 The Apache Web Server Version 2.2

    en een aantal bijhorende bestanden, uit Oss/update repo (er zijn wat verschillende versies beschikbaar, bv 64 bit ea)

  • php

    • apache2-mod_php5 PHP5 module for Apache 2.0

    en een aantal bijhorende bestanden, uit oss/update, overeenkomende versie met Apache.

  • phpMyAdmin

    • phpMyAdmin Administration of MySQL over the web – 4.1.8

    bij deze versie van openSUSE dus aanwezig in de gewone repositories (Oss/update)

  • Nb: Volgorde
    Als je achteraan begint, bij phpMyAdmin, worden waarschijnlijk ineens de webserver, php, en de database mee geïnstalleerd uit de afhankelijkheden.

2. Starten en checken van de servers
Starten van servers gebeurt momenteel in openSUSE met systemcontrol:

  • systemctl start mysql.service
  • op de commandolijn kan je nu verbinden met mysql of mysqladmin
  • Nb: Hoewel mariadb geïnstalleerd is, wordt mysql.service aangeroepen, en de client mysql gebruikt.

  • systemctl start apache2.service
  • Vroeger kreeg je daarna in je browser een leuke welkom-pagina te zien bij openSuse, maar de frivoliteit is er wat af als je nu naar http://localhost gaat; je wordt afgesnauwd met “Access forbidden!”. Dat betekent niet dat je installatie niet werkt; integendeel. Onderaan zie je “Apache/2.4.6 (Linux/SUSE)”; het is je Apache die deze foutmelding geeft omdat er nog geen inhoud is.

3. Instellingen

  • Mysql/mariadb
    De databaseserver moet in het begin minstens voorzien worden van een wachtwoord voor de beheerder of root (in de betekenis van root voor de database, hoeft niet overeen te komen met die van het systeem). Zolang dat niet is ingesteld zal phpMyAdmin weigeren te werken:

    Login without a password is forbidden by configuration (see AllowNoPassword)

    Er is een scriptje voorzien om mysql/mariadb in te stellen, te draaien als root:

    mysql_secure_installation

    Verloop:

    • Geef het wachtwoord voor de databank als je het al gezet zou hebben; zoniet enter
    • Kies een wachtwoord voor de beheerder of root user van de databank; herhaal het. Je ziet uit de reaktie dat het wachtwoord is geupdate, en de rechten herladen worden.
    • Kies om de anonieme gebruiker te verwijderen (Y)
    • Uitschakelen van inloggen op afstand voor root gebruiker (Y voor online systeem; voor lokale installatie kan je het voor het gebruiksgemak laten aanstaan als dat nodig is. Of maak een eigen extra gebruiker aan met de nodige rechten zodat je toch root kan buitensluiten)
    • Verwijder de standaard aanwezige test databank: (Y); maak zel zelf aan als je ze nodig hebt, met een eigen relevante naam die aangeeft wat je aan het testen bent, dan kan je gemakkelijker opkuisen nadien.
    • De laatste stap is het bevestigen van het herladen van de rechten
  • PhpMyAdmin

    In je brower, bv Firefox, kan je nu inloggen op phpMyAdmin, vanop hetzelfde toestel http://localhost//phpMyAdmin

    Opmerkingen:
    Je krijgt onderaan een foutmelding die doorverwijst naar documentatie, bv over de Server relation.
    Maar niet alle documentatie lijkt aanwezig, ik miste bv http://localhost/phpMyAdmin/pmadb
    Een online link met interessante uitleg daarover is http://wiki.phpmyadmin.net/pma/control_user
    Een goed begin is waarschijnlijk het configuratie bestand aanpassen of maken config.inc.php (zie setup doc).

4. Zypper:
Goede Engelstalige uitleg met gebruik van zypper commandolijn-tool.
http://www.unixmen.com/install-lamp-server-apache-mariadb-php-opensuse-13-1/

30/8/2013

MySQL server draait door

Filed under: — pinguim @ 11:28 am

Een Proliant ML server staat lawaaierig te blazen, alsof hij het heel warm heeft. Hij werkt nog normaal, maar een blik op het processorgebruik toont dat één van de twee processoren aan 100% zit te werken. De tweede processor heeft percentages die meegaan met het starten van taken op de server, vandaar dat het niet echt direkt merkbaar is. Maar wat veroorzaakt die drukte?

De processentabel verraad dat MySQL draait aan 50% continue; wat overeen kan komen met 1 van de 2 processoren. De programma’s op de server die MySQL gebruiken draaien nog en reageren normaal (binnen lage belasting op het moment weliswaar).

Inloggen op de server.
Inloggen in MySQL: mysql -u root -p

In de mysql prompt kan je dan weer naar de processen kijken:
mysql> SHOW PROCESSLIST;

Dat geeft een typische mysql-tabel met een aantal kolommen: Id, user, Host, db, Command, Time, State en Info.

De lijnen bestaan uit de processen.

Ze hebben een nummer, net als de processen in Linux.
Je kan ze ook “killen” op dezefde manier.

Zoek het proces dat het probleem vormt en overweeg of het kwaad kan om het te verwijderen.

In mijn geval was het een sql-statement dat ik uitgeprobeerd had in phpMyAdmin, op zoek naar gegevens de dag voordien; en er zat waarschijnlijk een fout in de query waardoor die eeuwig duurt en het antwoord gigantisch groot wordt. Kill dus!

mysql> KILL 3357;

Query OK, 0 rows affected (0.04 sec)

Daarna is het process verdwenen uit de tabel.

+------+--------+-----------+--------+---------+-------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+------+--------+-----------+--------+---------+-------+-------+------------------+
| 161 | bacula | localhost | bacula | Sleep | 25525 | | NULL |
| 3438 | cms | localhost | CMS | Sleep | 2114 | | NULL |
| 3439 | cms | localhost | CMS | Sleep | 1224 | | NULL |
| 3440 | cms | localhost | CMS | Sleep | 4353 | | NULL |
| 3441 | cms | localhost | CMS | Sleep | 4334 | | NULL |
| 3442 | cms | localhost | CMS | Sleep | 3094 | | NULL |
| 3443 | cms | localhost | CMS | Sleep | 2217 | | NULL |
| 3444 | cms | localhost | CMS | Sleep | 2137 | | NULL |
| 3445 | cms | localhost | CMS | Sleep | 2244 | | NULL |
| 3446 | cms | localhost | CMS | Sleep | 4148 | | NULL |
| 3447 | cms | localhost | CMS | Sleep | 2282 | | NULL |
| 3448 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+------+--------+-----------+--------+---------+-------+-------+------------------+

Onderaan zie je het commando zelf, erboven applicaties zoals het backup programma bacula en een cms toepassing.

10/7/2013

phpMyAdmin 3.5 configuratie

Filed under: — cybrarian @ 1:41 pm

Irritatie
PhpMyAdmin 3.5.3 (op opensuse geïnstalleerd) heeft de idiote neiging om in de kolom “aktie” niet enkel de iconen te tonen, maar ook de hele beschrijving. Die wordt dus over het hele scherm herhaald en dat is ongelooflijk irritante ruimteverspilling (zie ook vroeger artikel).

Config bestand
Normaal moet je met een config.inc.php bestand instellingen doen voor phpMyAdmin.
De instelling waar het over gaat is $cfg[‘PropertiesIconic’], die standaard op “both” staat sinds kort (
volgens de wiki.phpmyadmin.net.
Ik zet ze dus op:
$cfg['PropertiesIconic'] = true;

Vuile truuk
Helaas lukte het me niet om het aangemaakte cofiguratiebestand te laten lezen door phpMyAdmin, dus ik paste die standaardinstelling aan in hun code:

phpMyAdmin/libraries/config.default.php

Let op de syntax; het is niet

  • ‘TRUE’
  • ‘true’
  • TRUE

maar gewoon true zonder tekens errond.

21/5/2013

MD5 van wachtwoord op command prompt

Filed under: — pinguim @ 10:14 am

Met MD5 wordt een berekening op een gegeven gedaan, en dat geeft een tekencombinatie van vaste lengte.

Er zijn 2 veel voorkomende gebruiken:

  • Een “checksum” berekenen van een bestand. Als je wil weten of een bestand overeenkomt met een “origineel” waarvan je de “checksum” hebt, kan van van het in vraag gestelde bestand opnieuw de checksum berekenen, en die vergelijken met de andere checksum. Als die hetzelfde zijn, waren de bestanden ook hetzelfde. (theoretisch is wel een verschil mogelijk). Wordt veel gebruikt bij Linux-distributies om een ge-download bestand te checken tov het origineel, waarvan de md5 checksum gepubliceerd is.
  • een tekst enkele-richting “versleutelen”, een mogelijkheid die veel gebruikt wordt om een “check” op het wachtwoord te bewaren in databanken van web-applicaties. Komt op hetzelfde neer als hierboven, alleen wordt de checksum berekend op een “string”, een tekenreeks.

Gebruik in CMS:
Het effect is dat in de datbank de “hash” wordt opgeslagen van het wachtwoord.
Bv: wachtwoord = “wachtwoord”, md5 hash = 701f33b8d1366cde9cb3822256a62c01
Vanuit de cms wordt de md5 berekend, zelf hoef je niet in te grijpen.
Bij het inloggen wordt op het opgegeven wachtwoord de md5sum berekend en vergeleken met die in de database. Als ze hetzelfde zijn mag de login doorgaan. Voordeel: het wachtwoord zelf wordt niet opgeslagen, en kan dus uit een “dump” van de database niet afgeleid worden.

MD5 berekenen
Om de md5 zelf te berekenen bestaat een commando op de command prompt: md5sum (“md5” op OS-X?)

je kan het commando rechtstreeks uitvoeren op een bestand:

~/Documents> md5sum wachtwoord
c125e00adfb9249aa65af1aef0e4953e wachtwoord
~/Documents> cp wachtwoord wachtwoord.txt
~/Documents> md5sum wachtwoord.txt
c125e00adfb9249aa65af1aef0e4953e wachtwoord.txt

Opgelet, dat is niet hetzelfde als het uitvoeren op een “string”:

~/Documents> echo -n "wachtwoord" | md5sum
701f33b8d1366cde9cb3822256a62c01

Dit is de md5 van die tekstlijn (zonder ‘enter’ vandaar de -n), het vorige is de md5 van het “bestand” – hoewel de bestandsnaam dus geen rol speelt.

Laat je die er wel inzitten, dan krijg je hetzelfde resultaat als het bestand:

~/Documents> echo wachtwoord | md5sum
c125e00adfb9249aa65af1aef0e4953e -

Want immers:
~/Documents> echo wachtwoord
wachtwoord
~/Documents>

Na de echo krijg je een nieuwe lijn. Wat je niet wil met:

~/Documents> echo -n wachtwoord
wachtwoordwim@wimbox2:~/Documents>

8/9/2012

Joomla 2.5 beginnen gebruiken

Filed under: — cybrarian @ 10:29 pm

Na installatie kan je inloggen op je site – tenzij je de “Login Form” hebt uitgeschakeld. Dan kan je inloggen via www.mijndomein.tld/administrator (als je in een sub-map geinstalleerd hebt moet die ertussen komen; www.mijndomein.tld/joomla/administrator).

Bij gebruik van Joomla 2.5 met de standaard templates zijn er een aantal handelingen die je waarschijnlijk snel wil uitvoeren. Ik vat ze hier even samen:
Inhoud

(meer…)

1/9/2012

Drupal 7.x: views

Filed under: — cybrarian @ 1:04 pm

Een view is een handige manier om inhoud te gebruiken op je drupal-site; vooral om die op een minder vanzelfsprekende manier te tonen; dus niet als artikel of als blog post.

Om een zinnige view te maken heb je inhoud nodig; meestal maak je daarvoor een eigen inhoudstype (content type), met velden (veldnaam, veld-inhoud-type, veld-weergave-opties).

Zover ik het begrepen heb geeft een view informatie van nodes weer, maar filtert onnodige inhoud weg en past de weergave op het scherm aan de noden aan. Drupal doet dat door middel van een aantal opties; dat levert wel wat rondklikken op, maar je moet tenminste niet programmeren. De mogelijkheden bestaan onder meer uit weergavevormen als lijsten, tabellen, enz, weergave met alternatieve labels in plaats van de namen van de velden, sortering, teaser inhoud+link, enz…

De stappen:

  • Admin menu / Structuur / > Views / + Add new View. Je geeft een naam (bv “Vw Diensten”) en er wordt een “machinenaam” aangemaakt (gestripte geconcentreerde tekst, bv “vwdiensten”)
  • Naam, beschrijving
  • Weergeven: niet alleen keuze uit node inhoud en de versies ervan in “content revisions”, maar ook reakties, en zelfs niet-node inhoud als gebruikers, bestanden, taxonomie-termen, locale source, “Module/Theme/Theme Engine”, en rules configuration. De bijhorende opties worden weergeven na selectie (bv of type – tagged with – sort by …). Bij “Inhoud” kan je “of type” (jouw content type) kiezen.
  • “Page” of “Block”.

Page

  • Bij page kan je de titel, maar ook het “pad” kiezen (maw het stuk dat in de URL zichtbaar is en je ook zelf kan gebruiken dus om er rechtstreeks naartoe te gaan). Standaard wordt daar de machinenaam van de view ingevuld – kan handig zijn dat te wijzigen van bv “vwdiensten” naar “diensten”.
  • Onder Display format heb je keuze als Grid, HTML list, Jump menu, Tabel, unformatted list.
  • Verder kan je kiezen hoeveel items van de list op het scherm/pagina zichtbaar zijn (standaard 10) en de optie een link naar de volgende pagina van de lijst te krijgen, hier “pager” genoemd.
  • Je krijgt ook een optie een menu link te maken, en opties (hoofd, management, navigatie, en user menu); nadien zien de opties bij wijzigen/maken menu er iets anders uit. De voorgestelde link Text is je viewnaam, en kan gewijzigd worden natuurlijk.
  • In Kop kan je een extra tekstje tonen onder de titel, je geeft die een “label” en een inhoud, bv Kop, toevoegen, “Global: Text area” “Dit is het overzicht van …”. Je kan een andere teskt instellen als er geen resultaten zijn: “Advanced, No Results behaviour”, toevoegen, “Global text area”, invullen.
  • Onder kop hetzelfde voor Voet.
  • De lijst kan gesorteerd worden op mogelijke kriteria (die moeten voorkomen in de velden): Sort Criteria, toevoegen, “Expose this sort to visitors, to allow them to change it”. Het “label” komt in de drop-down lijst als tekst, bv “op datum”. De rest vertalen gebeurt onder Advanced,”Exposed Form”: Style, instellingen. Hier kan je de titels boven de drop-downs geven, bv “Kies sortering” en de inhoud van de Ascending/Descending keuzes, bv “oplopend”, “aflopend”. Ook de bevestigingsknop “submit” kan je vertalen en/of automatisch laten indrukken (autosubmit = knop onzichtbaar).

icoon uitroeptekenAls je “Auto preview” aangevinkt hebt staan krijg je na save en continue onderaan het scherm al een preview te zien; die is nog niet bewaard in Drupal! Bewaren moet je nadien met de knop bovenaan doen.

In ieder geval krijg je onderaan dus al een summiere weergave van je view, die na elke wijziging/update preview aangepast wordt.

Dit artikel werd geschreven op basis van de toestand in Drupal 7.15.

29/7/2012

Joomla 2.5 installatie

Filed under: — cybrarian @ 2:08 pm

joomla Een CMS dat nog niet veel aan bod kwam op de Linuxuser CopyLeft site is Joomla, en dat komt omdat in de “begindagen” er een discussie was over hoe vrij “Mambo” was (de naam van het oorspronkelijke project).Vrij in de betekenis van de Free Software Foundation: vrij om te gebruiken, te kopieren, te wijzigen, en dat alles binnen de GPL licentie. Onze aandacht ging naar andere CMS’en, en we verloren Mambo/Joomla wat uit het oog. Maar, zoals het dikwijls gaat bij “vrije software” gaat de vrije tak zijn eigen weg, en de ontwikkelaars van Mambo openden een website “opensource matters”, splitsten hun versie van de broncode-boom af en Joomla werd één van de meestgebruikte CMS’en, ondertussen aan stabiele versie 2.5 (en 3.0 binnenkort verwacht). Er zijn veel taalversies, een aktieve Nederlandstalige joomla community en zelfs een “Flemish Translation” (maar die site is momenteel in trasitie).

Joomla let erg op gebruiksvriendelijkheid, en dat kan het effect hebben dat de Linux gebruiker (1 download 2 uitpakken 3 installeren) even moet zoeken tussen het Windows-vriendelijke aanbod:

  • De download is er niet in het .tar.gz formaat, maar alleen in “zip”:

    English (UK) 2.5.6 Full Package ZIP

  • Installatie instructies zitten wat verborgen tussen “update” uitleg, “joomla on your own computer” waar met XAMP paketten gewerkt wordt, en er van wordt uitgegaan dat “your own computer” de facto op Windows draait, ..
    Via het “installation forum” krijg je dan toch de link naar
  • de echte installatie instructies: er wordt gesproken over Joomla versie 1.7, maar aangezien de installatie (na uitpakken en uploaden) op de site helemaal in stappen uitgevoerd wordt, maakt het niet veel verschil

Zoals de meeste CMSen heb je voor Joomla nodig:

  • Domein of subdomein, of minstens een subdirectory in je webruimte (meestal /srv/www/htdocs of /var/www/html of zo) met Apache 1.3 en PHP v. 5.2+
  • MySQL database (MySQL 5.04+), user login en wachtwoord. Deze maak je via de admin tool van je provider of via phpMyAdmin op je localhost (gecombineerd: Privelages, Add new user – Database for user: Create database with same name and grant all privileges).
    Of

    CREATE USER ‘joomla’@’%’ IDENTIFIED BY ‘***’;

    GRANT USAGE ON * . * TO ‘joomla’@’%’ IDENTIFIED BY ‘***’ WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

    CREATE DATABASE IF NOT EXISTS `joomla` ;

    GRANT ALL PRIVILEGES ON `joomla` . * TO ‘joomla’@’%’;

    Check ook of je “localhost” kan gebruiken voor de verwijzing naar de database-server; bij een provider kan dat een andere server zijn, en die heb je nodig als “hostname”.

  • FTP account of ssh/scp toegang tot je webruimte of root toegang op je eigen server.

Je download is bewaard bv als Joomla_2.5.6-Stable-Full_Package.zip
Rechtsklik en uitpakken of op de command prompt:
unzip Joomla_2.5.6-Stable-Full_Package.zip

cybr@greenland:~/Downloads/Joomla> ls -lF
total 7804
drwxr-xr-x 10 cybr users 4096 2012-06-20 01:09 administrator/
-rw-r–r– 1 cybr users 714 2012-06-20 01:09 build.xml
drwxr-xr-x 2 cybr users 4096 2012-06-20 01:09 cache/
drwxr-xr-x 2 cybr users 4096 2012-06-20 01:09 cli/
drwxr-xr-x 13 cybr users 4096 2012-06-20 01:09 components/
-rw-r–r– 1 cybr users 3118 2012-06-20 01:09 htaccess.txt
drwxr-xr-x 4 cybr users 4096 2012-06-20 01:09 images/
drwxr-xr-x 2 cybr users 4096 2012-06-20 01:09 includes/
-rw-r–r– 1 cybr users 1319 2012-06-20 01:09 index.php
drwxr-xr-x 10 cybr users 4096 2012-06-20 01:09 installation/
-rw-r–r– 1 cybr users 7872678 2012-07-29 13:46 Joomla_2.5.6-Stable-Full_Package.zip
-rw-r–r– 1 cybr users 1753 2012-06-20 01:11 joomla.xml
drwxr-xr-x 4 cybr users 4096 2012-06-20 01:09 language/
drwxr-xr-x 7 cybr users 4096 2012-06-20 01:09 libraries/
-rw-r–r– 1 cybr users 17816 2012-06-20 01:09 LICENSE.txt
drwxr-xr-x 2 cybr users 4096 2012-06-20 01:09 logs/
drwxr-xr-x 15 cybr users 4096 2012-06-20 01:09 media/
drwxr-xr-x 26 cybr users 4096 2012-06-20 01:09 modules/
drwxr-xr-x 13 cybr users 4096 2012-06-20 01:09 plugins/
-rw-r–r– 1 cybr users 4244 2012-06-20 01:09 README.txt
-rw-r–r– 1 cybr users 865 2012-06-20 01:09 robots.txt
drwxr-xr-x 6 cybr users 4096 2012-06-20 01:09 templates/
drwxr-xr-x 2 cybr users 4096 2012-06-20 01:09 tmp/
-rw-r–r– 1 cybr users 1715 2012-06-20 01:09 web.config.txt

Met scp of bv Konqueror of een andere ftp-client de bestanden uploaden naar je webruimte. (* Konqueror: Window,Split Windows en dan in een vester de uitgepakte bestanden, in het andere de url ftp://user@myserver.tld is heel handig).

Dat kan wel even duren; het zijn 4852 bestanden; samen 21 Mb. De administrator map is het grootst: 6.5 Mb, 2262 bestanden; vooral components (1079 bestanden) en templates (815 bestanden) zorgen daarvoor.

Ik had een paar keer voor dat bestanden in de hoofddirectory niet juist gekopieerd werden; of juister gezegd niet konden hernoemd worden van het tijdelijke upload bestand.ext.part naar bestand.ext;
find ./ -name '*.part'
./robots.txt.part
./web.config.txt.part
./htaccess.txt.part
./joomla.xml.part
./index.php.part
./build.xml.part

Daardoor wordt de directory list zichtbaar via de webinterface.
De oorzaak is me niet direkt duidelijk, ik heb gecontroleerd of ze wel volledig waren en de exentie .part er afgehaald.

Misschien is het de moeite om met ssh in te loggen, met wget de download af te halen, en hem op de webruimte uit te pakken).

Opletten dat je de download zip-file zelf niet mee upload; die staat misschien tussen de uitgepakte bestanden nu (zoals hierboven).

Dan op de url van je installatie de instructies volgen:

Joomla! 2.5.6 Installation
Steps
1 : Language
2 : Pre-Installation check
3 : License
4 : Database
5 : FTP Configuration
6 : Configuration
7 : Finish

1. In de taalkeuze van dit algemene pakket komt alleen NL/nl voor, geen “Belgisch NL”, “Flemish” of “Vlaams”.
2. Op mijn localhost install krijg ik alleen een opmerking “Output Buffering – Recommended: Off – Actual: On “, elders “Display Errors Off On ”
3. is zoals verwacht de GNU Public General License
4. Geeft msql en msqli keuze; stelt prefix voor. Dat lijkt me wel nuttig op hosting, maar niet nodig op locale install – het is blijkbaar verplicht in te vullen; door proberen en foutmelding kom je te weten dat :”The table prefix must start with a letter, be followed by optional alphanumeric characters and by an underscore”. Lokaal kan je bv j256 (het versienummer) vermelden want de voorgestelde random string is waarschijnlijk vervelend typen als je ooit op de mysql prompt gaat werken.
5. FTP Configuratie is niet verplicht en kan je gerust overslaan
6. Configuration heeft “basic” instellingen (naam van de site) of uitgebreide als Meta Description – Meta Keywords – Site Offline (bij start)
6.b Het e-mail adres van de super-beheerder kan ingevuld worden, alsook zijn loginnaam “Admin Username” en wachtwoord “Admin Password”
6.c Voorbeeld data: je kan kiezen om een (Engelse) “Sample Data set” te installeren, zodat je wat zicht krijgt op Joomla indien eerste gebruik.
Opmerking: Er is nadien geen eenvoudige “knop” om die “sample data” terug uit je installatie te krijgen! Je kan wel manueel de artikels en rubrieken enzo manueel gaan verwijderen, maar op welk punt heb je dan uiteindelijk een “zuivere installatie”? Ik zou aanbevelen om die sample data te installeren op je laptop op andere testcomputer of testdomein, waar je wel eens kan gaan kijken/vergelijken.
7. Uit veiligheid wordt de hele installatiemap verwijderd; dat is een veiligheidsmaatregel, en je moet die bevestigen. Resultaat (bij mij althans): Error. Geen verdere uitleg; maar waarschijnlijk heeft het iets te maken met rechten van de webserver op die map. Ik verwijder handmatig de map “installation” in de joomla hoofddirectory.
Voor: 21.8 Mb, 4853 files, 1131 folders.
Na: 18.1 Mb, 4552 files, 1035 folders.

Je hebt 2 knoppen (eigenlijk een link); kies de admin knop.

Joomla! Administration Login

Hier moet een “User Name” ingevuld worden, en voorgesteld wordt “root”, hoewel in de installatie een andere naam opgegeven werd, bv “admin”.
Gebruik je de juiste, dan krijg je het typische Joomla administratiepaneel en kan je aan de slag:

14/7/2012

MySQL 5.5 – phpMyAdmin : syntax error “TYPE=” en timestamp

Filed under: — cybrarian @ 8:47 pm

Een CMS of andere applicatie overzetten van een oude server naar een nieuwe, levert soms onverwachte problemen op, die op het eerste zicht weinig te maken hebben met het programma zelf. Zoals een onverwachte fout bij het maken van de tabellen; hier herhaalbaar met phpMyAdmin.

Ik maak een export van een tabel “tabeltest” op mysql server.
Ik gebruik daarvoor phpMyAdmin (hier NL-talige versie*) met de keuzes:

  • Export.SQL,
  • Structuur (auto_increment, bbadkquotes)
  • Data (hexadicimaal voor binaire velden)
  • verzenden zonder compressie.

* “Verzenden” betekent dat je het aangeboden krijgt als bestand; “als bestand” zou betere vertaling geweest zijn.

Import op Mysql 5.5, met phpMyAdmin 3.4.10:
Geeft foutmelding op syntax ongeveer zoals hieronder:

Fout
SQL-query
….
#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
‘(14) NOT NULL, PRIMARY KEY (lclr_id) TYPE=MyISAM AUTO_INCREMENT=1896 at line 25

Ik gebruik bij het importeren “Formaatspecifieke opties, SQL-compatibiliteitsmode: MySQL 323.

Dit komt omdat phpMyAdmin op de oude server de syntax “TYPE=” gebruikt om de storage engine op te geven, en deze schrijfwijze is ondertussen afgeschaft. Je kan die echter vervangen door “ENGINE=”, zonder verder veel aan te passen.

Open het export bestand in bv Kate, vervang TYPE= door ENGINE=, bewaar.
Importeer dit gewijzigd bestand.

Dan werkt het wel:

Import is geslaagd, 978 queries uitgevoerd (test.sql)

Bij een andere tabel lukt het niet, dus er moet nog een andere fout inzitten.

Dezelfde tabel importeren op MySQL 5.1.37-2 met phpMyAdmin 3.2.3deb gaat wel !
Daar EXPORT die verschilt in een lijn met een timestamp:

export oude versie:

lclr_upddate timestamp(14) NOT NULL,

export nieuwe versie:

lclr_upddate timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

16/5/2012

Meer websites op één server: Apache virtual hosts

Filed under: — cybrarian @ 11:08 am

.. door middel van “Name-based Virtual Hosts” op Apache 2 webserver (2.2 in dit geval).

Directories op de server die verband houden met de webserver:

  • /etc/apache2 : de instellingen voor de webserver, met
    /etc/apache2/httpd.conf het (hoofd)configuratiebestand. Hierin kan een ander configuratiebestand geladen worden, bv met “include /etc/apache2/vhosts.d/vhosts.conf”.
  • /srv (alle) serverdiensten (incl ftp, webserver, etc)
  • /srv/www de webserverdiensten, met subdirs:

    /srv/www/cgi-bin/ uitvoerbare scripts
    /srv/www/htdig/ voor zoekmachine op website
    /srv/www/htdocs/ gewone webserver documenten

Standaard zijn documenten vanaf hier zichtbaar naar buiten.
Standaard hier staat ook index.html, het eerste welkom-document (bv met de tekst “it works”).

Om virtuele hosts te gebruiken op “virtserver” in een intern/lokaal netwerk “.test.loc” zijn een paar stappen nodig:

  • kies de nieuwe hostnamen, bv alfa.test.loc, beta.test.loc, gamma.test.loc.
  • zet in de dns server verwijzingen naar het ip-adres waarop die virtuele sites zullen draaien. Bv voeg de lijnen toe in de dns-server (hier dns.test.loc) in het bestand /var/named/test.loc:

    gateway IN A 192.168.1.1
    laserprinter IN A 192.168.1.110
    colorprinter IN A 192.168.1.120

    virtserver IN A 192.168.1.200

    dns IN CNAME gateway.test.local.
    mail IN CNAME gateway.test.local.
    webmail IN CNAME gateway.test.local.
    ..
    alfa IN CNAME virtserver.test.local.
    beta IN CNAME virtserver.test.local.

    Let op het puntje aan het einde van de lijn bij alfa, beta..
    Bewaar en herstart de serverdienst: /etc/init.d/named restart
    (of service named restart)
    En test met ping alfa.test.local
  • in vhosts.conf maak je een paragraaf aan voor elke virtuele server, en/of maak een file per virtuele server:
  • /etc/apache2/vhosts.d : hierin staat een template “vhost.template” die je kan kopiëren voor elke virtuele host, bv naar alfa.test.local.conf, beta.test.local.conf, ..: daarin de virtuele hosts – instellingen doen.
    Enkele parameters moeten ingesteld worden in het configuratiebestand, hier onder het kopje < VirtualHost alfa.test.local:80 >

    ServerName alfa.test.local
    Documentroot /srv/www/vhosts/alfa.test.local/htdocs
    ErrorLog /var/log/apache2/alfa.test.local-error_log
    CustomLog /var/log/apache2/alfa.test.local-access_log combined
    ScriptAlias /cgi-bin/ “/srv/www/vhosts/alfa.test.local/cgi-bin/

    Dan onder < Directory "/srv/www/vhosts/alfa.test.local/cgi-bin" >

    AllowOverride None
    Options +ExecCGI -Include
    Order allow,deny
    Allow from all

    en sluit
    < / Directory >
    En dan de document directory
    < Directory "/srv/www/vhosts/alfa.test.local/htdocs" >

    Options Indexes FollowSymLinks
    AllowOverride None

    en sluit
    < / Directory >

  • maak mappen aan in de vhosts directory voor elke virtuele webserver, bv :
    /srv/www/vhosts/alfa.test.local/ krijgt

    • cgi-bin
    • htdocs – – > hierin komen de eigenlijke website bestanden.
  • Zeg in /etc/apache2/listen.conf dat de server naar deze poort (80=standaard) moet luisteren:
    Listen 80
    NameVirtualHost *.80

Veel voorkomende problemen:

  • Als je bij ping test “ping unknown host alfa.test.local” krijgt, moet je de dns instellingen checken of het dns systeem herstarten om de instellingen te doen lezen.
  • Als je in de browser je virtuele site niet te zien krijgt (maar bv wel een “algemene” webserverpagina uit de /srv/www/htdocs dir) kan je:
    – de webserver herstarten om zijn configuratiefiles te laten lezen:
    /etc/init.d/apache2 restart
    – de documentdirectory checken: bestaat htdocs, en is hij leesbaar door de webserver?
    – is de configuratiefile in orde (vhosts.conf)?
    Na elke wijziging de webserver herstarten.

Uitgebreid 13/9/2012

5/10/2011

WordPress export – import (met xml/wxr bestand)

Filed under: — cybrarian @ 12:17 am

WordPress zelf geeft aan dat het eenvoudig is om een blog te exporteren/importeren:

1. Log into the old blog, go to Tools → Export and download the XML (WXR) file to your computer.
2. In the new blog, go to Tools → Import → WordPress and upload the file you downloaded in step 2. You can choose the option to …

En inderdaad:

  • Tools, Export (xml) bestand – komt als download naar je computer.
  • Upload het bestand via Tools, Import; je krijgt een bevestiging of foutmelding*
  • Indien gelukt start een procedure voor de import (zie onder)

De importprocedure laat je toe om de te-importeren artikels een auteur te geven die overeenkomt met bestaande auteurs op de nieuwe blog.

Voor ieder auteur worden de mogelijkheden aangegeven:

Import WordPress
Assign Authors

To make it easier for you to edit and save the imported content, you may want to reassign the author of the imported item to an existing user of this site. For example, you may want to import all the entries as admins entries.

If a new user is created by WordPress, a new password will be randomly generated and the new user’s role will be set as subscriber. Manually changing the new user’s details will be necessary.

1. Import author: abc (abc)
or create new user with login name:
or assign posts to an existing user:
2. Import author: admin (admin)
or create new user with login name:
or assign posts to an existing user:
3. Import author: defg (defg)
or create new user with login name:
or assign posts to an existing user:

Import Attachments

Download and import file attachments

Na het instellen van

  • gebruiker abc: importeren (en dus bijmaken van deze gebruiker)
  • gebruiker admin: gelijke gebruiker geselecteerd
  • gebruiker defg: toewijzen aan andere gebruiker

Volgt de melding:

Import WordPress

All done. Have fun!

Remember to update the passwords and roles of imported users.

* Het gaat fout door een (oud) xml bestand:

This does not appear to be a WXR file, missing/invalid WXR version number.

Voeg in het ge-downloade bestand volgende regel toe:
< wp:wxr_version >1.1< /wp:wxr_version >
Ik probeerde eerst bovenaan, dat leek niet te werken, en dan heb ik de instructies gevolgd en het onder de taalaanduiding gezet in “channel”:

< channel >
	< title >Gambas.noxqs.org< /title >
	< link >http://www.site.org< /link >
	< description >. . .  over dit en dat onderwerp< /description >
	< pubdate >Fri, 19 Aug 2011 21:32:46 +0000< /pubdate >
	< generator >http://wordpress.org/?v=2.3.1< /generator >
	< language >en< /language >
	< wp:wxr_version >1.1< /wp:wxr_version >
< /channel >

4/10/2011

WordPress: wijzigen van plaats op server (map)

Filed under: — cybrarian @ 10:08 pm

Situatie: Een WordPress installatie op een domein www.domein.bv. De website wordt uitgebreid met een ander/groter/veelzijdiger of gespecialiseerd pakket.
De WordPress blog blijft bestaan maar moet verplaatst worden naar de subdirectory /blog, zodat de URL wordt:
www.domein.bv/blog (in dit geval zullen bestaande links naar die blog niet meer werken!).

De eenvoudigste methode is het aanpassen van het configuratiebestand van WordPress.
Dat heet wp-config.php en staat in de hoofddirectory (of als je alles al verplaastst hebt naar /blog staat het daar natuurlijk).

Daar voeg je dan (bovenaan) in:

define(‘WP_HOME’,’http://www.domein.bv/blog’);
define(‘WP_SITEURL’,’http://www.domein.bv/blog’);

Ps: Ik dacht eerst af te kunnen leiden uit wp-config.php …


/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');

… dat ik erboven die ABSPATH moest definiëren, maar dat bleek niet te werken.

Misschien had ik even erboven moeten kijken:


/* That's all, stop editing! Happy blogging. */
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');

Kortom, boven beschreven werkt, maar er zijn ook andere methodes, misschien ook betere …
laat maar weten:

20/9/2011

Drupal7: Als mooie URL’s niet werken

Filed under: — cybrarian @ 9:27 pm

Als in Drupal de mooie URL’s niet werken, maw als je geen http://localhost/drupal/node/2 in de URL kan gebruiken, heb je enkel de vorm met http://localhost/?q=node/3. Die werkt ook natuurlijk, maar om de gemakkelijkere vorm te kunnen gebruiken, als is het maar om als beheerder snel naar een bepaalde inhoud te gaan, moet de “rewrite” werken. Ook voor opgeven van URL’s binnen Drupal, bv in de visibility settings. In een standaardinstallatie van bv openSuSe 11.3, 12.1 is dat niet het geval; mod_rewrite voor Apache is wel mee geïnstalleerd, maar niet aktief.
Ps: Check eerst of de .htaccess file bestaat, bv wel/niet mee gekopieerd werd naar htdocs/

Kort samengevat moet je volgende doen:

Wijzig als root de configuratiefile van de webserver, bv met
mcedit /etc/sysconfig/apache2

Zoek naar de lijn waarin de huidig werkende modules staan opgesomd; bv:

APACHE_MODULES=”suexec access actions alias auth auth_dbm autoindex cgi dir env expires include log_config mime negotiation setenvif userdir ssl php4″

Voeg in die lijn “rewrite” toe, bv met een spatie achter “php4”

Bewaren.

Een deel van de configuratiebestanden van Apache worden gegenereerd; draai daarom als root “suseconfig”. Dat geeft feedback ongeveer eindigend als volgt:


Executing /sbin/conf.d/SuSEconfig.gtk2…
Executing /sbin/conf.d/SuSEconfig.ispell…
Executing /sbin/conf.d/SuSEconfig.permissions…
Executing /sbin/conf.d/SuSEconfig.postfix…
Setting up postfix local as MDA…
Executing /sbin/conf.d/SuSEconfig.words…
Finished.

Herstart de webserver om de configuratiebestanden te laten lezen en toepassen:

/etc/init.d/apache2 restart

Controleer of de module nu voorkomt met apache2ctl -M:

apache2ctl -M

Loaded Modules:
core_module (static)
mpm_prefork_module (static)
http_module (static)
so_module (static)
actions_module (shared)
alias_module (shared)
auth_basic_module (shared)
authn_file_module (shared)
authz_host_module (shared)
authz_groupfile_module (shared)
authz_default_module (shared)
authz_user_module (shared)
autoindex_module (shared)
cgi_module (shared)
dir_module (shared)
env_module (shared)
expires_module (shared)
include_module (shared)
log_config_module (shared)
mime_module (shared)
negotiation_module (shared)
setenvif_module (shared)
ssl_module (shared)
userdir_module (shared)
php5_module (shared)
rewrite_module (shared)
Syntax OK

Ook in phpinfo() zou de module nu zichtbaar moeten zijn in de pagina waarin je dat zet.
echo "< ?php phpinfo(); ?>" > htdocs/phpinfo.php
(niet laten staan op een publieke server – die info is voor iedereen nuttig).

Nu moet de webserver toestemming geven voor het gebruik van .htaccess bestanden.

Wijzig het instellingen-bestand bv met:

mcedit /etc/apache2/default-server.conf

Zoek naar AllowOverride of naar de lijnen:

AllowOverride None

vervang die laatste door

AllowOverride All

Bewaar het instellingenbestand, en genereer de configuratiebestanden en laat ze lezen door de webserver:

SuSEconfig
/etc/init.d/apache2

Nu moet je een .htaccess file maken, in de directory van je drupal installatie
(bij nieuwe drupal is na uitpakken .htaccess bestand aanwezig maar het wordt soms niet mee ge-upload omdat het “onzichtbaar” staat)
of aanpassen als het bestaat; check met
/srv/www/htdocs/drupal # cat .htaccess

dat er bv zo uitziet:

#
# Apache/PHP/Drupal settings:
#

# Protect files and directories from prying eyes.

Order allow,deny

# Don’t show directory listings for URLs which map to a directory.
Options -Indexes

# Follow symbolic links in this directory.
Options +FollowSymLinks

# Multiviews creates problems with aliased URLs and is not needed for Drupal.
Options -Multiviews

# Make Drupal handle any 404 errors.
ErrorDocument 404 /index.php

# Force simple error message for requests for non-existent favicon.ico.

# There is no end quote below, for compatibility with Apache 1.3.
ErrorDocument 404 “The requested file favicon.ico was not found.

# Set the default handler.
DirectoryIndex index.php index.html index.htm

# Override PHP settings that cannot be changed at runtime. See
# sites/default/default.settings.php and drupal_initialize_variables() in
# includes/bootstrap.inc for settings that can be changed at runtime.

# PHP 5, Apache 1 and 2.

php_flag magic_quotes_gpc off
php_flag magic_quotes_sybase off
php_flag register_globals off
php_flag session.auto_start off
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_flag mbstring.encoding_translation off

# Requires mod_expires to be enabled.

# Enable expirations.
ExpiresActive On

# Cache all files for 2 weeks after access (A).
ExpiresDefault A1209600

# Do not allow PHP scripts to be cached unless they explicitly send cache
# headers themselves. Otherwise all scripts would have to overwrite the
# headers set by mod_expires if they want another caching behavior. This may
# fail if an error occurs early in the bootstrap process, and it may cause
# problems if a non-Drupal PHP file is installed in a subdirectory.
ExpiresActive Off

# Various rewrite rules.

RewriteEngine on

# Block access to “hidden” directories whose names begin with a period. This
# includes directories used by version control systems such as Subversion or
# Git to store control files. Files whose names begin with a period, as well
# as the control files used by CVS, are protected by the FilesMatch directive
# above.
#
# NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite, it is
# not possible to block access to entire directories from .htaccess, because
# is not allowed here.
#
# If you do not have mod_rewrite installed, you should remove these
# directories from your webroot or otherwise protect them from being
# downloaded.
RewriteRule “(^|/)\.” – [F]

# If your site can be accessed both with and without the ‘www.’ prefix, you
# can use one of the following settings to redirect users to your preferred
# URL, either WITH or WITHOUT the ‘www.’ prefix. Choose ONLY one option:
#
# To redirect all users to access the site WITH the ‘www.’ prefix,
# (http://example.com/… will be redirected to http://www.example.com/…)
# uncomment the following:
# RewriteCond %{HTTP_HOST} !^www\. [NC]
# RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
#
# To redirect all users to access the site WITHOUT the ‘www.’ prefix,
# (http://www.example.com/… will be redirected to http://example.com/…)
# uncomment the following:
# RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
# RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]

# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
# VirtualDocumentRoot and the rewrite rules are not working properly.
# For example if your site is at http://example.com/drupal uncomment and
# modify the following line:
# RewriteBase /drupal
#
# If your site is running in a VirtualDocumentRoot at http://example.com/,
# uncomment the following line:
# RewriteBase /

# Pass all requests not referring directly to files in the filesystem to
# index.php. Clean URLs are handled in drupal_environment_initialize().
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]

# Rules to correctly serve gzip compressed CSS and JS files.
# Requires both mod_rewrite and mod_headers to be enabled.

# Serve gzip compressed CSS files if they exist and the client accepts gzip.
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.css $1\.css\.gz [QSA]

# Serve gzip compressed JS files if they exist and the client accepts gzip.
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.js $1\.js\.gz [QSA]

# Serve correct content types, and prevent mod_deflate double gzip.
RewriteRule \.css\.gz$ – [T=text/css,E=no-gzip:1]
RewriteRule \.js\.gz$ – [T=text/javascript,E=no-gzip:1]

# Serve correct encoding type.
Header append Content-Encoding gzip
# Force proxies to cache gzipped & non-gzipped css/js files separately.
Header append Vary Accept-Encoding

# $Id: .htaccess,v 1.111 2010/11/23 02:59:05 dries Exp $

In Drupal,
http://localhost/drupal/?q=admin/config/search/clean-urls
Toont het scherm:

Home » Administration » Configuration » Search and metadata

Clean URLs
[ ] Enable clean URLs
Use URLs like example.com/user instead of example.com/?q=user.

(Save Configuration)

Daarna zouden de schuine streepjes moeten werken in de URL’s.

Referenties:

http://drupal.org/node/15365
http://enarion.net/web/htaccess/mod_rewrite-on-suse/
http://drupal.org/node/5590

13/9/2011

Drupal 7 : terminologie en concepten

Filed under: — cybrarian @ 9:06 pm

Hieronder eerste een opsomming van termen die gebruikt worden bij het werken met Drupal (7), eronder verklaring van een aantal begrippen of concepten.

Terminologie (opsomming)

node
block
comment
bundle : entity type + velden + configuratie
files
taxonomie terms & vocum
users
CCK / Content Construction Kit
Fields (module) :CCK
Theme
field instance setting; bv het label (CCK )
inhoudstype:

veldtype:

  • imagefield
  • Filefield
  • Link
  • Date
  • email
  • Embedded media field (flickr, youtube..)

weight: gewicht om plaats van item op scherm te bepalen.
menu; standaard:

  • Main menu
  • Management
  • Navigation
  • User menu

weight
region: plek op het scherm (in standaard theme):

  • Header (bovenste rij naast logo en onder login)
  • Featured (eerste rij onder menu “Home” enz tabs)
  • Sidebar first (mogelijk als eerste linkse kolom)
  • Highlighted (tussen sidebars first en second)
  • Sidebar second (mogelijk als rechtse kolom)
  • (Home) Help (mogelijk boven de eigenlijk inhoud, onder highlighted)
  • Content (eigenlijke inhoud)
  • Triptych first (afsluiter onder artikel als linkse kolom)
  • Triptych middle (afsluiter onder artikel als middelste kolom)
  • Triptych last (afsluiter onder artikel als rechtse kolom)
  • Footer first column (Eerste lijn van de footer; kolom 1)
  • Footer second column (Eerste lijn van de footer; kolom 2)
  • Footer third column (Eerste lijn van de footer; kolom 3)
  • Footer fourth column (Eerste lijn van de footer; kolom 4)
  • Footer (onderste footerlijn)

Hierboven de opsomming van termen die gebruikt worden bij het werken met Drupal (7), hieronder de verklaring van een aantal begrippen of concepten.

Begrippen en Concepten

article
Artikel is een node die inhoud (tekst, ..) bevat, die aangemaakt wordt door een gebruiker (die daar de rechten voor heeft). Artikel is als inhoudsvorm bedoeld voor nieuwsberichten, blog berichten, enz.; normaal vormt een artikel onderdeel van een in de tijd opeenvolgende reeks artikels.

Taxonomy:
Labels die aan inhoud worden gehangen om hun samenhang aan te tonen met andere inhoud; “tagging of content” (term, tags, vocabulary)

Comment:
Comment is een reaktie op een inhoud; bv
– article comment,
– basic page comment
– forum comment
Comment is zelf niet van het type node!

Views:
(views module – simpleviews module)
– lijst met titels, stukje van inhoud, afbeelding..
– RSS feeds
– als pagina of als blok

Block:
Site onderdeel dat bedoeld is deel uit te maken van de struktuur, en aldus herhaald te worden op meer websitepagina’s; meestal verwijst het naar een ander deel van de site (bv inhoudstabel, menu met links), maar het kan ook gewone tekst bevatten als contactgegevens bv. Een “block” wordt in een “region” gezet. Dit gebeurt per “theme”; dus voor het admin theme kan het op een andere plaats terechtkomen dan voor de gewone bezoeker.
ps: een block is geen node!

Node
Drupal ziet alle door gebruikers gemaakte inhoud voor publicatie als een node. Een page, een post, een news item: allemaal “nodes”.
In tegenstelling daarmee géén nodes: een comment, een block.
De node wordt getoond in een struktuur, de structuur van de site wordt gemaakt met views, blocks en menu’s,

De hierarchie van Drupal:

Datapool (node) – Module – block/menu – user (permission) – Template

  • Datapool: bv de data van de nodes ; laagste niveau
  • Module: programmering, functies, bepaalt mogelijkheden site
  • Block / Menu: geeft (selectie-combinatie) van inhoud weer; kan worden gebruikt op verschillende plaatsen in theme, kan ook beperkt worden in zijn uitvoer voor bepaalde pagina’s/gebruikers (volgens visibility settings).
  • User permissions: wie kan/ziet wat. Eerst wordt een “rol” gedefinieerd, daarna krijgen gebruikers een rol toegewezen.

Theme/skin; xhtml, css, php variabelen.

Visibility Settings:
Bijkomende instellingen van bv een “block”; je kan fijntunen om het blok zichtbaar te maken met uitzonderingen; toon overal behalve op een gedefinieerde pagina of toon enkel op bepaalde pagina. Het doel van de setting kan zijn: een bepaalde node, een theme, een usergroup, een user. Het idee is het block enkel te tonen waar het zin heeft, en niet perse altijd overal te tonen. Bv: een ingelogde admin moet niet altijd het block met contactgegevens op het scherm hebben.

Menu:
Er zijn verschillende soorten menu’s voorzien; main, management, navigation, user.

  • main: er is een algemeen menu voor de site (bv: menu-items “Blogposts, Over ons, Diensten” leiden naar de hoofd-onderdelen van de site).
  • management: er is een menu voor de administrators dat enkel zichtbaar is als ze ingelogd zijn met die rechten, en dat linkt naar allerlei instellingen en onderhoudsschermen.
  • navigation: menu voor de bezoekers van de site; de links erin evolueren met de opbouw van de site, sommige modules vullen het aktief aan.
  • user: er is een gebruikersmenu; eenvoudigste mogelijk is “login/logout”, maar kan ook “mijn profiel” bevatten om publieke gebruikersgegevens te laten wijzigen.

Menu’s kunnen bijgemaakt worden, hebben eigenschappen als naam, beschrijving, kunnen sub-menu’s krijgten, en worden als block ingesteld om te gebruiken op de site. ()

weight
Overal waar Drupal de mogelijkheid heeft om de volgorde van items te kiezen, wordt gebruik gemaakt van een eigenschap “gewicht”. Die kan je zelf aan de items “hangen” door een getal in te geven; een groter getal is meer gewicht dus zakt het dieper naar beneden (eigenaardigheid: de getallen staan negatief; -50 zakt dieper dan -30)

Theme: bepaalt uitzicht (niet inhoud) voor bezoekers (skin)

Book
Een node kan aangemaakt worden van het type “book page”; pagina van een boek. Vanop de eerste pagina kan je het tabblad “Outline” kiezen; bij “book outline”, onder “book”: “new book”; waarop de huidige pagina de hoofdpagina van het book wordt.

This is the top-level page in this book.

Je krijgt bij de pagina volgende nieuwe links:

* Add child page
* Printer-friendly version

Een nieuwe book-page krijgt de mogelijkheid om bij outline dit “book” te kiezen (titel van deze pagina komt in drop-down lijst).
Bij meer pagina’s krijg je onderaan het bladermechanisme van het boek: je kan van de ene pagina naar de volgende gaan, en terug naar de vorige in de betekenis bepaald door het “boekbinden”. In het midden krijg je de link “up” die naar de eerste pagina gaat.

CCK: Content Construction Kit: zelf bijmaken van velden in de databank om eigen inhoud toe te voegen.
bundle (CCK): entity type + velden + configuratie

Powered by WordPress