Diferență între revizuiri ale paginii „Instrucțiuni de instalare”

De la dexonline wiki
Sari la navigare Sari la căutare
 
(Nu s-au afișat 43 de versiuni intermediare efectuate de alți 2 utilizatori)
Linia 1: Linia 1:
Codul ''DEX online'' este disponibil liber (și gratuit) sub licența Affero GPL. Iată cum puteți să creați o copie funcțională a ''DEX online'' și să contribuiți cu patch-uri.
== Docker ==


== Vagrant ==
Urmați aceste [https://github.com/david-batranu/dexonline-docker instrucțiuni pentru instalarea cu Docker].


Ca alternativă la această pagină, Alex Morega menține o [https://github.com/mgax/dexonline-vagrant listă de instrucțiuni] pentru dezvoltarea într-un mediu virtual prin Vagrant. Poate fi mai rapid de instalat -- YMMV.
== Linux ==


== Cerințe de sistem ==
=== Presupuneri ===


El a fost testat pe sisteme Ubuntu și Fedora standard. Aveți nevoie cel puțin de:
* Rulați Arch Linux + MariaDB + Apache.
* Codul-sursă va fi instalat în '''/srv/http/dexonline'''.
* Codul-sursă va fi accesat la http://localhost/dexonline/www/.
* MariaDB folosește utilizator=root, parolă=<vidă>, host=localhost, database=dexonline.


* PHP >= 5.0
Pentru orice deviere de la aceste presupuneri, va trebui să adaptați instrucțiunile de mai jos.
** Modulele '''curl''', '''mbstring''', '''mysql''' și '''zlib''' sunt strict necesare.
** Modulul '''php5-imagick''' este necesar pentru dicționarul vizual.
** Modulele '''apc''' și '''memcache''' sunt opționale.
* MySQL >= 5.0
* Apache HTTP Server >= 2.0
* Git


== Convenții de codare ==
=== Instalați pachetele necesare ===


* Asigurați-vă că sistemul dumneavoastră permite citirea și tastarea diacriticelor românești ĂÂÎȘȚ.  În particular, asigurați-vă că puteți folosi diacriticele Ș și Ț cu virgulă (nu Ş și Ţ cu sedilă). Editorul dumneavoastră trebuie să poată deschide și salva fișiere fără a corupe semnele diacritice din ele. Orice sistem GNU/Linux modern se descurcă perfect cu aceste simboluri. Sub Gnome, singura operație necesară este adăugarea unei mapări românești de tastatură ''(System / Preferences / Keyboard / Layouts / Add / Country:Romania).'' Cătălin folosește varianta simplă (Romania), care practic lasă tastatura originală nemodificată și adaugă diacriticele românești folosind talta !AltGr (Alt din dreapta).
<syntaxhighlight lang="bash">
* Fișierele sunt scrise cu indentare de două spații, fără taburi. Aceasta este doar o convenție. Dacă preferați un alt stil, putem să îl adoptăm, dar trebuie să scrieți un script care să modifice toată baza de cod. Dacă ne oferiți și un fișier .emacs care să formateze codul în stilul dumneavoastră, este și mai bine. :-)
sudo pacman -S apache mariadb php php-apache git gettext
* Majoritatea identificatorilor sunt „camelCased”, fără underscores: <tt>$numeVariabilă</tt>, <tt>NumeClasă</tt>, <tt>$this->numeCâmp</tt>.
</syntaxhighlight>
* Constantele sunt scrise cu litere mari și cu underscore: <tt>NUME_CONSTANTĂ</tt>.
* Lățimea ecranului nu este bătută în cuie; credem că până la 160 de caractere nu se va supăra nimeni.
* Pentru cuvintele-cheie (<tt>for, foreach, if, while, case</tt> etc.) se lasă spațiu în afara parantezelor, nu și înăuntrul lor.
* Pentru apeluri de funcții, nu se lasă loc între numele funcției și paranteza deschisă.
* Se lasă spațiu în afara acoladelor.
* Se lasă spațiu după virgule.
* Orice acoladă deschisă stă pe aceeași linie cu instrucțiunea if / else etc. precedentă și este urmată de o linie nouă.
* Orice acoladă închisă este singură pe linia ei.
* Folosim acolade și dacă blocul if / else / while etc. constă dintr-o singură instrucțiune.


<pre>
=== Pachete opționale ===
if (($y > 3) && ($y < 10)) {
  while ($z < 10) {
    $z++;
    callMyFunction($y, $z);     
  }
}
</pre>


== Variante de instalare ==
Anumite scripturi (neesențiale pentru funcționarea clonei) folosesc funcții din pachete suplimentare:
<syntaxhighlight lang="bash">
sudo pacman -S php-curl php-xml
</syntaxhighlight>


Există două variante de instalare a codului și un pas opțional pentru oricare dintre ele. Instrucțiunile de instalare depind în mică măsură de alegerea făcută.
=== Clonați și inițializați repo-ul dexonline ===


* '''userdir''': în directorul utilizatorului, de obicei <tt>/home/user/public_html/DEX</tt>. URL-ul de acces este <tt>http://localhost/~user/DEX/wwwbase</tt>
<syntaxhighlight lang="bash">
* '''document root''': în directorul-rădăcină al lui Apache, de obicei <tt>/var/www/DEX</tt>. URL-ul de acces este <tt>http://localhost/DEX/wwwbase</tt>
cd /srv/http/
sudo git clone https://github.com/dexonline/dexonline
sudo chown -R utilizator.utilizator dexonline
cd dexonline
tools/setup.sh
</syntaxhighlight>


Opțional:
=== Editați Config.php ===


* '''virtual host''': pentru oricare din variantele 1 și 2, puteți crea un site virtual. URL-ul de acces este <tt>http://dex.domeniulmeu.com<tt> (desigur, presupunând că dețineți domeniul <tt>domeniulmeu.com</tt>, ați creat subdomeniul <tt>dex.domeniulmeu.com</tt> și sunteți pe o conexiune cu IP static).
Probabil va trebui să modificați doar valorile pentru


Pe parcursul acestui document ne vom referi la aceste trei variante pentru instrucțiuni specifice.
* '''URL_HOST''' și '''URL_PREFIX''' dacă accesați instalarea la altă adresă;
* '''DATABASE''' dacă folosiți alte valori pentru conexiune.


== Instalarea și configurarea codului și a bazei de date ==
Creați fișierul descris în '''LOG_FILE''' și dați-i drept de scriere universal:


Alegeți-vă directorul unde doriți să lucrați ('''userdir''': `/home/user/public_html/DEX` sau '''document root''': `/var/www/DEX`). Descărcați o copie a codului sursă:
<syntaxhighlight lang="bash">
sudo touch /var/log/dexonline.log
sudo chmod 666 /var/log/dexonline.log
</syntaxhighlight>


{{{
=== Descărcați baza de date ===
#!sh
cd /home/user/public_html
# sau cd /var/www
svn checkout http://voronet.francu.com/repos/DEX
cd DEX
}}}


Dacă preferați Git în loc de Subversion, Alex Morega întreține și o clonă Git a codului:
Importarea poate dura 5-10 minute. Nu avem o bază de date minimală, o folosim pe cea publică. Puteți citi [https://github.com/dexonline/dexonline/wiki/Database-Schema documentația schemei] bazei de date.


{{{
<syntaxhighlight lang="bash">
#!sh
mysql -u root -e "create database dexonline charset utf8mb4 collate utf8mb4_romanian_ci"
git clone git://github.com/mgax/DEXonline
wget -O /tmp/dex-database.sql.gz https://dexonline.ro/static/download/dex-database.sql.gz
}}}
zcat /tmp/dex-database.sql.gz | mysql -u root dexonline
 
 
Configurați codul pentru prima dată. Acest pas poate produce diverse erori, deoarece scriptul setup.sh nu este bine pus la punct.
 
{{{
#!sh
tools/setup.sh
}}}
 
Modificați fișierul {{{dex.conf}}} conform cu setările sistemului. Acest fișier nu este sub controlul lui Subversion, deci este acceptabil să stocați parola pentru baza de date. În special:
 
* Modificați valoarea variabilei {{{database}}} conform [http://pear.php.net/manual/en/package.database.db.intro-dsn.php specificației DSN].
 
Descărcați baza de date a ''DEX online'' și importați-o în MySQL. De asemenea, migrați schema bazei de date la ultima versiune pentru cazul (improbabil) în care codul din Subversion este mai nou decât codul care rulează pe dexonline.ro.
 
{{{
#!sh
mysql -u ... -p ... -e "create database DEX character set utf8"
wget -O /tmp/dex-database.sql.gz http://dexonline.ro/download/dex-database.sql.gz
zcat /tmp/dex-database.sql.gz | mysql -u ... -p ... DEX
php tools/migration.php
php tools/migration.php
}}}
</syntaxhighlight>
 
Dacă veți avea nevoie să testați pagini ale moderatorului, trebuie să vă creați un cont cu permisiuni de moderator. Dacă aveți deja cont pe DEX online, rulați comanda MySQL:
 
{{{
#!sql
update User set moderator = 31 where email = 'adresa_de_email';
}}}
 
Altfel, creați-vă un cont și apoi executați comanda de mai sus. Puteți să vă creați un cont chiar pe dexonline.ro, altfel cel creat local se va pierde când veți recopia baza de date. Există diferite niveluri de privilegii, pentru editarea definițiilor, editare LOC, gestionarea cuvântului zilei etc. Valoarea 31 le include pe toate (cu OR).
 
== Configurarea Apache ==
 
Aceste instrucțiuni sunt pentru Apache cu mod_php5 sub Ubuntu. Le puteți folosi cu titlu orientativ pe orice alt sistem, dar fișierele exacte pe care trebuie să le modificați pot diferi. Toate comenzile și editările se execută ca root.
 
* Permiteți execuția de cod PHP.


{{{
Dacă spațiul pe disc este o problemă, puteți economisi circa 1,7 GB prin [[Minimizarea bazei de date]].
#!sh
apt-get install libapache2-mod-php5
}}}


* Activați modulul rewrite:
=== Modificați /etc/httpd/conf/httpd.conf (ca root) ===


{{{
Activați modulul rewrite: asigurați-vă că următoarea linie nu este comentată:
#!sh
a2enmod rewrite
}}}


* Numai pentru '''userdir''': Activați modulul userdir
<syntaxhighlight lang="apache">
LoadModule rewrite_module modules/mod_rewrite.so
</syntaxhighlight>


{{{
Configurați [https://wiki.archlinux.org/index.php/Apache_HTTP_Server#Using_libphp php-apache] conform instrucțiunilor (secțiunea ''Using libphp'').
#!sh
a2enmod userdir
}}}


* Numai pentru '''userdir''': În `/etc/apache2/mods-available/php5.conf` comentați secțiunea
Permiteți fișiere '''.htaccess''':


{{{
<syntaxhighlight lang="apache">
# <IfModule mod_userdir.c>
<Directory "/srv/http">
#    <Directory /home/*/public_html>
#        php_admin_value engine Off
#    </Directory>
# </IfModule>
}}}
 
* Numai pentru '''userdir''': Permiteți fișiere `.htaccess`. În `/etc/apache2/mods-available/userdir.conf` modificați secțiunea
 
{{{
<Directory /home/*/public_html>
    ...
    AllowOverride All
    ...
</Directory>
}}}
 
* Numai pentru '''document root''': Permiteți fișiere `.htaccess`. În `/etc/apache2/sites-available/default` modificați secțiunea
 
{{{
<Directory /var/www/>
     ...
     ...
     AllowOverride All
     AllowOverride All
     ....
     ....
</Directory>
</Directory>
}}}
</syntaxhighlight>


* Alegeți setul de caractere UTF-8. În `/etc/apache2/conf.d/charset`, decomentați sau adăugați linia
=== (Re)porniți serviciile ===


{{{
<syntaxhighlight lang="bash">
AddDefaultCharset UTF-8
sudo systemctl restart mariadb
}}}
sudo apachectl restart
</syntaxhighlight>


* Numai pentru '''userdir''', fără '''virtual host''': Editați `DEX/wwwbase/.htaccess` și decomentați/modificați linia:
=== Testați ===


{{{
Acum http://localhost/dexonline/www/ ar trebui să meargă.
RewriteBase /~user/DEX/wwwbase/
}}}


* Numai pentru '''virtual host''': Creați fișierul `/etc/apache2/sites-available/dex.domeniulmeu.com`:
== OS X ==


{{{
Urmați aceste [https://github.com/dexonline/dexonline/wiki/Instruc%C8%9Biuni-de-instalare:-OS-X-cu-MAMP instrucțiuni de instalare pentru OS X cu MAMP]
<VirtualHost *:80>
        DocumentRoot /path/to/DEX/wwwbase
        ServerName dex.domeniulmeu.com
</VirtualHost>
}}}


apoi
== Ținerea la zi ==


{{{
Actualizați codul:
#!sh
a2ensite dex.domeniulmeu.com
}}}


* Reporniți Apache:
<syntaxhighlight lang="bash">
git pull
</syntaxhighlight>


{{{
Git vă va anunța dacă au apărut modificări:
#!sh
sudo /etc/init.d/apache2 restart
}}}


* Accesați una din paginile
* în baza de date: rulați '''php tools/migration.php''';
  * '''userdir''': `http://localhost/~user/DEX/wwwbase`
* în fișierul de configurare: preluați noutățile din '''Config.php.sample''' în '''Config.php''';
  * '''document root''': `http://localhost/DEX/wwwbase`
* în fișierul de configurare Apache: preluați noutățile din '''www/.htaccess.sample''' în '''www/.htaccess'''.
  * '''virtual host''': `http://dex.domeniulmeu.com`


Dacă întâmpinați probleme netratate aici, vă rugăm contactați-ne ca să actualizăm acest document.
== Convenții de codare ==
 
== Ținerea la zi ==
 
Pentru a ține ulterior clientul la zi, rulați:
 
{{{
#!sh
svn update
php tools/migration.php
}}}
 
Modificările schemei bazei de date se fac exclusiv prin patchuri în directorul {{{patches/}}}. De aceea, ultimii pași nu sunt necesari decât atunci când apar fișiere noi în directorul {{{patches/}}}.
 
O situație mai delicată au fișierele {{{dex.conf}}} și {{{wwwbase/.htaccess}}}. Acestea nu sunt sub controlul lui Subversion, deoarece sunt prea dependente de sistem. Ele sunt copiate după fișierele-șablon {{{dex.conf.sample}}} și respectiv {{{docs/.htaccess}}}. Când fișierele-șablon se modifică, trebuie să încorporați noutățile și în fișierele propriu-zise.


== Contribuții la baza de cod ==
Folosim [https://google.github.io/styleguide/javaguide.html stilul Google pentru Java]. În principiu, dacă urmați stilul existent în cod, va fi cum trebuie.


Accesul anonim la cod oferă doar drept de citire; nu veți avea permisiunea rulați {{{svn commit}}}. Pentru a ne trimite modificările făcute, executați comenzile:
În plus, referitor la limba română, veți avea nevoie să:


{{{
* vedeți corect diacriticele ĂÂÎȘȚ și alte câteva simboluri Unicode;
#!sh
* tastați corect diacriticele românești; în particular, Ș și Ț cu virgulă, nu Ş și Ţ cu sedilă;
svn update            # pentru a fi siguri că diff-ul se aplică pe cea mai nouă versiune a codului
* folosiți diacritice în orice mesaje afișate către utilizator.
svn diff > /tmp/diff.txt
}}}


Apoi trimiteți-ne prin [mailto:contact@dexonline.ro email] fișierul {{{/tmp/diff.txt}}}. Atenție, trebuie să anexați fișierul separat, nu doar să îl includeți în corpul mesajului. De asemenea, trebuie să includeți separat orice fișiere nou adăugate -- Subversion nu le include automat în diff.
== Localizare ==


Dacă doriți să contribuiți pe termen lung, vă vom oferi (destul de ușor) drept de commit.
Vedeți [https://github.com/dexonline/dexonline/wiki/Localization Localization].

Versiunea curentă din 3 decembrie 2021 11:01

Docker

Urmați aceste instrucțiuni pentru instalarea cu Docker.

Linux

Presupuneri

  • Rulați Arch Linux + MariaDB + Apache.
  • Codul-sursă va fi instalat în /srv/http/dexonline.
  • Codul-sursă va fi accesat la http://localhost/dexonline/www/.
  • MariaDB folosește utilizator=root, parolă=<vidă>, host=localhost, database=dexonline.

Pentru orice deviere de la aceste presupuneri, va trebui să adaptați instrucțiunile de mai jos.

Instalați pachetele necesare

sudo pacman -S apache mariadb php php-apache git gettext

Pachete opționale

Anumite scripturi (neesențiale pentru funcționarea clonei) folosesc funcții din pachete suplimentare:

sudo pacman -S php-curl php-xml

Clonați și inițializați repo-ul dexonline

cd /srv/http/
sudo git clone https://github.com/dexonline/dexonline
sudo chown -R utilizator.utilizator dexonline
cd dexonline
tools/setup.sh

Editați Config.php

Probabil va trebui să modificați doar valorile pentru

  • URL_HOST și URL_PREFIX dacă accesați instalarea la altă adresă;
  • DATABASE dacă folosiți alte valori pentru conexiune.

Creați fișierul descris în LOG_FILE și dați-i drept de scriere universal:

sudo touch /var/log/dexonline.log
sudo chmod 666 /var/log/dexonline.log

Descărcați baza de date

Importarea poate dura 5-10 minute. Nu avem o bază de date minimală, o folosim pe cea publică. Puteți citi documentația schemei bazei de date.

mysql -u root -e "create database dexonline charset utf8mb4 collate utf8mb4_romanian_ci"
wget -O /tmp/dex-database.sql.gz https://dexonline.ro/static/download/dex-database.sql.gz
zcat /tmp/dex-database.sql.gz | mysql -u root dexonline
php tools/migration.php

Dacă spațiul pe disc este o problemă, puteți economisi circa 1,7 GB prin Minimizarea bazei de date.

Modificați /etc/httpd/conf/httpd.conf (ca root)

Activați modulul rewrite: asigurați-vă că următoarea linie nu este comentată:

LoadModule rewrite_module modules/mod_rewrite.so

Configurați php-apache conform instrucțiunilor (secțiunea Using libphp).

Permiteți fișiere .htaccess:

<Directory "/srv/http">
    ...
    AllowOverride All
    ....
</Directory>

(Re)porniți serviciile

sudo systemctl restart mariadb
sudo apachectl restart

Testați

Acum http://localhost/dexonline/www/ ar trebui să meargă.

OS X

Urmați aceste instrucțiuni de instalare pentru OS X cu MAMP

Ținerea la zi

Actualizați codul:

git pull

Git vă va anunța dacă au apărut modificări:

  • în baza de date: rulați php tools/migration.php;
  • în fișierul de configurare: preluați noutățile din Config.php.sample în Config.php;
  • în fișierul de configurare Apache: preluați noutățile din www/.htaccess.sample în www/.htaccess.

Convenții de codare

Folosim stilul Google pentru Java. În principiu, dacă urmați stilul existent în cod, va fi cum trebuie.

În plus, referitor la limba română, veți avea nevoie să:

  • vedeți corect diacriticele ĂÂÎȘȚ și alte câteva simboluri Unicode;
  • tastați corect diacriticele românești; în particular, Ș și Ț cu virgulă, nu Ş și Ţ cu sedilă;
  • folosiți diacritice în orice mesaje afișate către utilizator.

Localizare

Vedeți Localization.