Qnap [ QPostgreSQL ] [ 10.4.1 ] PostGreSQL Server

QoolBox

Représentant QNAP
postgresql_1.png


Source : http://www.postgresql.org/

https://www.qnapclub.eu/fr/qpkg/239

Note :

Before install, please create a 'postgres' user via QTS

create DB and config on first launch inside /share/CACHEDEV1_DATA/.POSTGRESQL_DB (HAL Firmware with LVM) or /share/MD0_DATA/.POSTGRESQL_DB (for Legacy ones)

About :

PostgreSQL is a powerful, open source object-relational database system. It has more than 15 years of active development and a proven architecture that has earned it a strong reputation for reliability, data integrity, and correctness. It runs on all major operating systems, including Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), and Windows. It is fully ACID compliant, has full support for foreign keys, joins, views, triggers, and stored procedures (in multiple languages). It includes most SQL:2008 data types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and TIMESTAMP. It also supports storage of binary large objects, including pictures, sounds, or video. It has native programming interfaces for C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC, among others, and exceptional documentation.

An enterprise class database, PostgreSQL boasts sophisticated features such as Multi-Version Concurrency Control (MVCC), point in time recovery, tablespaces, asynchronous replication, nested transactions (savepoints), online/hot backups, a sophisticated query planner/optimizer, and write ahead logging for fault tolerance. It supports international character sets, multibyte character encodings, Unicode, and it is locale-aware for sorting, case-sensitivity, and formatting. It is highly scalable both in the sheer quantity of data it can manage and in the number of concurrent users it can accommodate. There are active PostgreSQL systems in production environments that manage in excess of 4 terabytes of data. Some general PostgreSQL limits are included in the table below.
Limit Value
Maximum Database Size Unlimited
Maximum Table Size 32 TB
Maximum Row Size 1.6 TB
Maximum Field Size 1 GB
Maximum Rows per Table Unlimited
Maximum Columns per Table 250 - 1600 depending on column types
Maximum Indexes per Table Unlimited

PostgreSQL has won praise from its users and industry recognition, including the Linux New Media Award for Best Database System and five time winner of the The Linux Journal Editors' Choice Award for best DBMS.
 

ethali

Nouveau membre
Bonjour.

Merci pour ce package très à jour.

Cependant serait-il possible de faire en sorte que celui-ci intègre, ajoute les drivers au moteur PHP inclus dans le NAS comme peut le faire le package officiel Qnap PostgreSQL ?
J'entends par là les librairies pgsql.so et pdo_pgsql.so.

Merci.

Cordialement,
 

QoolBox

Représentant QNAP
Hello,

j'ai fait la requête à la R&D avant la migration en 4.2 pas sur que cela ait été retenu

sinon alternativement Qapache 2.4.x ou QNginx ont une version de php 5.6 embarqué incluant le pdo pgsql

;)
 

ethali

Nouveau membre
Merci du retour.

Est-il possible avec les paquets alternatifs de les mettre sur les ports standards à savoir 80 et 443 en ayant pris le soin bien évidemment de désactiver totalement le serveur Web intégré à l'OS Qnap ?

Sinon il est d'ailleurs étonnant que Qnap n'ait pas profité du passage à la 4.2 pour directement mettre PHP en 5.6 puisque de toute façon ils ont monté de version. Pourquoi pas la 5.6 alors qu'elle est stable et que d'ailleurs on arrive très bientôt en 7 également stable...
 

QoolBox

Représentant QNAP
oui c'est assez simple, il suffit de modifier les ports dans le fichier de lancement de l'app le lien symbolique /etc/init.d/nomdelapp

je met une variable que j'exporte en entête ;)
 

ethali

Nouveau membre
OK.

Bon en ce qui concerne les ports en fait on ne peux pas les mettre sur les ports standards.

En effet même si on désactive le serveur web natif, le port 80 reste malgré tout utilisé par l'interface web de l'OS.
Il faut croire que le "serveur web" fourni par Qnap pour héberger des sites n'est qu'un "méga hôte virtuel".

Bref c'est un peu dommage... de la part de Qnap pas de vous ;-)
 

ethali

Nouveau membre
Bonjour.

Bon du coup j'ai réussi à ajouter les drivers PostgreSQL dans le PHP natif de Qnap.
Pour ce faire j'ai trouvé des binaires issus d'une distro Ubuntu.
Dès lors j'ai intégré la procédure d'installation grâce à la technique du fake qpkg Autorun.
Le fake qpkg est en pièce jointe au cas où cela intéresse quelqu'un. A noter que j'ajoute également l'exécutable "php" dans le path ainsi que l'exécutable "composer" que connaissent les développeurs PHP. Au passage je fait pointer le COMPOSER_HOME vers le "vrai" home à savoir /share/home/admin/.composer et pas /root/.composer car sinon tout est cassé ;-) étant donné que /root est en fait situé en RAM si j'ai bien compris...

Voici le résultat du fichier autorun.sh

Code:
#!/bin/sh

RETVAL=0
CONF=/etc/config/qpkg.conf
QPKG_NAME="Autorun"
QPKG_INSTALL_PATH=`/sbin/getcfg ${QPKG_NAME} Install_Path -f ${CONF}`
APACHE_ROOT=`/sbin/getcfg SHARE_DEF defWeb -d Qweb -f /etc/config/def_share.info`

if [ `/sbin/getcfg ${QPKG_NAME} Enable -u -d FALSE -f ${CONF}` = UNKNOWN ]; then
    /sbin/setcfg ${QPKG_NAME} Enable TRUE -f ${CONF}
elif [ `/sbin/getcfg ${QPKG_NAME} Enable -u -d FALSE -f ${CONF}` != TRUE ]; then
    echo "${QPKG_NAME} is disabled."
fi

export_php_home(){ 
    /bin/cat /etc/profile | /bin/grep "PATH" | /bin/grep '/usr/local/apache/bin' 1>>/dev/null 2>>/dev/null 
    [ $? -ne 0 ] && /bin/echo 'export PATH=$PATH:/usr/local/apache/bin' >> /etc/profile
}

export_composer_home(){ 
    /bin/cat /etc/profile | /bin/grep "COMPOSER_HOME" | /bin/grep "/share/homes/\$(whoami)/.composer" 1>>/dev/null 2>>/dev/null
    [ $? -ne 0 ] && /bin/echo "export COMPOSER_HOME=/share/homes/\$(whoami)/.composer" >> /etc/profile

    /bin/cat /etc/profile | /bin/grep "PATH" | /bin/grep "${QPKG_INSTALL_PATH}/composer" 1>>/dev/null 2>>/dev/null 
    [ $? -ne 0 ] && /bin/echo "export PATH=$PATH:${QPKG_INSTALL_PATH}/composer" >> /etc/profile
}

add_php_pgsql(){
    /bin/ln -sf ${QPKG_INSTALL_PATH}/pgsql/usr/lib/php5/20121212/pgsql.so /usr/local/apache/modules/pgsql.so
    /bin/ln -sf ${QPKG_INSTALL_PATH}/pgsql/usr/lib/php5/20121212/pdo_pgsql.so /usr/local/apache/modules/pdo_pgsql.so
    /bin/ln -sf ${QPKG_INSTALL_PATH}/pgsql/usr/share/php5/pgsql/pgsql.ini /etc/config/php.d/pgsql.ini
    /bin/ln -sf ${QPKG_INSTALL_PATH}/pgsql/usr/share/php5/pgsql/pdo_pgsql.ini /etc/config/php.d/pdo_pgsql.ini
    #/bin/echo -e "extension = pgsql.so \nextension = pdo_pgsql.so" >> /etc/config/php.d/ext.ini
    #/sbin/setcfg "PostgresSQL" "extension" "pgsql.so" -f /etc/config/php.d/ext.ini
    #/sbin/setcfg "PostgresSQL" "extension" "pdo_pgsql.so" -f /etc/config/php.d/ext.ini
    /etc/init.d/Qthttpd.sh restart &>/dev/null
    /usr/local/apache/bin/apache -k restart -c "PidFile /var/lock/apache.pid"
}

remove_php_pgsql(){
    /bin/rm -f /usr/local/apache/modules/pgsql.so
    /bin/rm -f /usr/local/apache/modules/pdo_pgsql.so
    /bin/rm -f /etc/config/php.d/pgsql.ini
    /bin/rm -f /etc/config/php.d/pdo_pgsql.ini
    /etc/init.d/Qthttpd.sh restart &>/dev/null
    /usr/local/apache/bin/apache -k restart -c "PidFile /var/lock/apache.pid"
}

case "$1" in
  start)
        /bin/echo "Enable ${QPKG_NAME}... " 
        export_php_home
        export_composer_home
        add_php_pgsql
        ;;
        
  stop)
        /bin/echo "Disable ${QPKG_NAME}... "
        export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
        remove_php_pgsql
        /bin/sync
        /bin/sleep 1
        ;;
  restart)
        $0 stop
        $0 start
        ;;
  *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
sac

exit $RETVAL
 

Pièces jointes

  • autorun.zip
    310 KB · Affichages: 71

QoolBox

Représentant QNAP
va falloir que je regarde cela de plus près , pour l'inclure dans QPGMyAdmin... qui gueule car il manque les pdo

bon boulot ;)
 

ethali

Nouveau membre
Merci.

Ceci dit ne penses-tu pas qu'il serait préférable d'inclure les drivers dans le package QPostgreSQL plutôt ?

Pourquoi parce qu'une personne qui installe QPostgreSQL veut peut-être développer en PHP sur une base PostgreSQL mais n'a pas pour autant besoin de phpPgAdmin. L'inverse n'est pas vrai ou plutôt quelqu'un qui installe phpPgAdmin aura forcément installé QPostgreSQL auparavant et aura donc un PHP qui inclue les bons drivers.

C'est mon cas et mon avis uniquement ;-) Qu'en penses-tu ?

Bonne soirée.
 
Haut Bas