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

Sari la navigare Sari la căutare
Linia 1: Linia 1:
Codul ''dexonline'' este disponibil liber (și gratuit) sub licența Affero GPL. Iată cum puteți să creați o copie funcțională a ''dexonline'' și să contribuiți cu patch-uri.
== Docker ==


Aceste instrucțiuni sunt pentru un sistem GNU/Linux. Pentru alte sisteme, încercați:
Urmați aceste [https://github.com/david-batranu/dexonline-docker instrucțiuni pentru instalarea cu Docker].


* '''Vagrant''': Alex Morega a scris o [https://github.com/mgax/dexonline-vagrant listă de instrucțiuni] (neîntreținute) pentru dezvoltarea într-un mediu virtual prin Vagrant. Poate fi mai rapid de instalat -- YMMV.
== Linux ==
* [https://github.com/dexonline/dexonline/wiki/Instruc%C8%9Biuni-de-instalare:-OS-X-cu-MAMP OS X cu MAMP]


== 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'''.
* 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 sau Nginx
* 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).
* 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. :-)
* Majoritatea identificatorilor sunt „camelCased”, fără underscores: <tt>$numeVariabilă</tt>, <tt>NumeClasă</tt>, <tt>$this->numeCâmp</tt>.
* 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.
 
<syntaxhighlight lang="php">
if (($y > 3) && ($y < 10)) {
  while ($z < 10) {
    $z++;
    callMyFunction($y, $z);     
  }
}
</syntaxhighlight>
 
== Variante de instalare ==
 
În Apache 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ă.
 
* '''userdir''': în directorul utilizatorului, de obicei <tt>/home/user/public_html/DEX</tt>. URL-ul de acces este <tt><nowiki>http://localhost/~user/DEX/wwwbase</nowiki></tt>
* '''document root''': în directorul-rădăcină al lui Apache, de obicei <tt>/var/www/DEX</tt>. URL-ul de acces este <tt><nowiki>http://localhost/DEX/wwwbase</nowiki></tt>
 
Opțional:
 
* '''virtual host''': pentru oricare din variantele 1 și 2, puteți crea un site virtual. URL-ul de acces este <tt><nowiki>http://dex.domeniulmeu.com</nowiki></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).
 
Nginx nu are suport nativ pentru directoare utilizator, deci alegeți orice cale doriți, să zicem <tt>/var/www/DEX</tt>.
 
== Instalarea și configurarea codului și a bazei de date ==
 
Alegeți-vă directorul unde doriți să lucrați, conform secțiunii precedente. Descărcați o copie a codului sursă:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
cd /home/user/public_html
sudo pacman -S apache mariadb php php-apache git
# sau cd /var/www
git clone https://github.com/dexonline/dexonline DEX
cd DEX
</syntaxhighlight>
</syntaxhighlight>


Configurați codul pentru prima dată. Acest pas poate produce diverse erori, deoarece scriptul setup.sh nu este bine pus la punct.
=== Clonați și inițializați repo-ul dexonline ===


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
cd /srv/http/
git clone https://github.com/dexonline/dexonline
cd dexonline
tools/setup.sh
tools/setup.sh
</syntaxhighlight>
</syntaxhighlight>


Modificați fișierul <tt>dex.conf</tt> conform cu setările sistemului. Acest fișier nu este sub controlul Git, deci este acceptabil să stocați parola pentru baza de date. În special:
=== Editați dex.conf ===


* Modificați valoarea variabilei <tt>database</tt> conform [http://pear.php.net/manual/en/package.database.db.intro-dsn.php specificației DSN].
Probabil va trebui să modificați doar valoarea pentru '''database''' și doar dacă folosiți alte valori pentru conexiune.
* Dacă veți avea nevoie să testați pagini ale moderatorului, setați <tt>developmentMode = 1</tt>. Aceasta va modifica pagina de login pentru a vă putea să vă conectați cu orice permisiuni.


Descărcați baza de date a ''dexonline'' și importați-o în MySQL. De asemenea, migrați schema bazei de date la ultima versiune pentru cazul (improbabil) în care codul din Git este mai nou decât codul care rulează pe dexonline.ro.
=== Descărcați baza de date ===
 
Importarea poate dura 5-10 minute. Nu avem o bază de date minimală, o folosim pe cea publică.


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
mysql -u ... -p ... -e "create database DEX character set utf8"
mysql -u root -e "create database dexonline charset utf8"
wget -O /tmp/dex-database.sql.gz https://dexonline.ro/static/download/dex-database.sql.gz
wget -O /tmp/dex-database.sql.gz https://dexonline.ro/static/download/dex-database.sql.gz
zcat /tmp/dex-database.sql.gz | mysql -u ... -p ... DEX
zcat /tmp/dex-database.sql.gz | mysql -u root dexonline
php tools/migration.php
php tools/migration.php
</syntaxhighlight>
</syntaxhighlight>


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 63 le include pe toate (cu OR).
=== Modificați /etc/httpd/conf/httpd.conf (ca root) ===


== Configurarea Apache ==
Activați modulul rewrite: decomentați linia
 
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.
 
<syntaxhighlight lang="bash">
apt-get install libapache2-mod-php5
</syntaxhighlight>
 
* Activați modulul rewrite:
 
<syntaxhighlight lang="bash">
a2enmod rewrite
</syntaxhighlight>
 
* Numai pentru '''userdir''': Activați modulul userdir
 
<syntaxhighlight lang="bash">
a2enmod userdir
</syntaxhighlight>
 
* Numai pentru '''userdir''': În <tt>/etc/apache2/mods-available/php5.conf</tt> comentați secțiunea


<syntaxhighlight lang="apache">
<syntaxhighlight lang="apache">
# <IfModule mod_userdir.c>
LoadModule rewrite_module modules/mod_rewrite.so</tt>
#    <Directory /home/*/public_html>
#        php_admin_value engine Off
#    </Directory>
# </IfModule>
</syntaxhighlight>
</syntaxhighlight>


* Numai pentru '''userdir''': Permiteți fișiere <tt>.htaccess</tt>. În <tt>/etc/apache2/mods-available/userdir.conf</tt> modificați secțiunea
Configurați [https://wiki.archlinux.org/index.php/Apache_HTTP_Server#Using_libphp php-apache] conform instrucțiunilor (secțiunea ''Using libphp'').


<syntaxhighlight lang="apache">
Permiteți fișiere '''.htaccess''':
<Directory /home/*/public_html>
    ...
    AllowOverride All
    ...
</Directory>
</syntaxhighlight>
 
* Numai pentru '''document root''': Permiteți fișiere <tt>.htaccess</tt>. În <tt>/etc/apache2/sites-available/default</tt> modificați secțiunea


<syntaxhighlight lang="apache">
<syntaxhighlight lang="apache">
<Directory /var/www/>
<Directory "/srv/http">
     ...
     ...
     AllowOverride All
     AllowOverride All
Linia 140: Linia 63:
</syntaxhighlight>
</syntaxhighlight>


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


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


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


<syntaxhighlight lang="apache">
Acum http://localhost/dexonline/wwwbase/ ar trebui să meargă.
RewriteBase /~user/DEX/wwwbase/
</syntaxhighlight>


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


<syntaxhighlight lang="apache">
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>
</syntaxhighlight>


apoi
== Ținerea la zi ==
 
<syntaxhighlight lang="bash">
a2ensite dex.domeniulmeu.com
</syntaxhighlight>


* Reporniți Apache:
Actualizați codul:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
sudo /etc/init.d/apache2 restart
git pull
</syntaxhighlight>
</syntaxhighlight>


* Accesați una din paginile
Git vă va anunța dacă au apărut modificări:
** '''userdir''': <tt><nowiki>http://localhost/~user/DEX/wwwbase</nowiki></tt>
** '''document root''': <tt><nowiki>http://localhost/DEX/wwwbase</nowiki></tt>
** '''virtual host''': <tt><nowiki>http://dex.domeniulmeu.com</nowiki></tt>


Dacă întâmpinați probleme netratate aici, vă rugăm contactați-ne ca să actualizăm acest document.
* în baza de date: rulați '''php tools/migration.php''';
* în fișierul de configurare: preluați noutățile din '''dex.conf.sample''' în '''dex.conf''';
* în fișierul de configurare Apache: preluați noutățile din '''wwwbase/.htaccess.sample''' în '''wwwbase/.htaccess''';


== Configurarea Nginx ==
== Convenții de codare ==


Această secțiune este mai puțin detaliată. Tratăm un singur caz: combinația Ubuntu + Nginx + php-fpm + instalare în <tt>/var/www/DEX</tt>.
* 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).
* 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. :-)
* Majoritatea identificatorilor sunt „camelCased”, fără underscores: <tt>$numeVariabilă</tt>, <tt>NumeClasă</tt>, <tt>$this->numeCâmp</tt>.
* 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.


* Instalați nginx și php5-fpm:
<syntaxhighlight lang="php">
 
if (($y > 3) && ($y < 10)) {
<syntaxhighlight lang="bash">
  while ($z < 10) {
sudo apt-get install nginx php5-fpm
    $z++;
    callMyFunction($y, $z);     
  }
}
</syntaxhighlight>
</syntaxhighlight>


* Creați un server Nginx pentru instalarea de DEX. Copiați [https://github.com/CatalinFrancu/dexonline/blob/master/docs/nginx.conf.sample acest conținut] în <tt>/etc/nginx/sites-available</tt>.
== Configurări opționale ==
* Creați un symlink către acest fișier în <tt>/etc/nginx/sites-enabled</tt>.
* Editați prima secțiune conform nevoilor dumneavoastră. Aproape sigur nu aveți nevoie să modificați nimic în secțiunile <tt>location</tt>.
* Vizitați <tt><nowiki>http://localhost/DEX</nowiki></tt>


== Configurarea OpenID Connect ==
Aceste configurări sunt necesare doar dacă lucrați în mod explicit la componentele respective.


Această secțiune vă interesează doar dacă lucrați, în mod explicit, la autentificarea în ''dexonline'' folosind un cont Google. Vă reamintim că, pentru a vă putea conecta la instalarea dumneavoastră locală cu orice drepturi, trebuie doar să activați <tt>developmentMode = 1</tt> în <tt>dex.conf</tt>.
=== OpenID Connect ===


Pe 20 aprilie 2015, [https://developers.google.com/identity/protocols/OpenID2Migration Google a întrerupt suportul pentru OpenID 2.0] și recomandă migrarea la OpenID Connect (sau la alte sisteme, dar noi am ales OpenID Connect). Pentru a vă putea conecta cu contul Google pe instalarea dumneavoastră locală, trebuie să urmați o procedură care nu este grea, dar este migăloasă. Urmați acești pași:
Pe 20 aprilie 2015, [https://developers.google.com/identity/protocols/OpenID2Migration Google a întrerupt suportul pentru OpenID 2.0] și recomandă migrarea la OpenID Connect (sau la alte sisteme, dar noi am ales OpenID Connect). Pentru a vă putea conecta cu contul Google pe instalarea dumneavoastră locală, trebuie să urmați o procedură care nu este grea, dar este migăloasă. Urmați acești pași:
Linia 208: Linia 131:
# În fișierul de configurare <tt>dex.conf</tt>, în secțiunea <tt>[openid]</tt>, adăugați o linie cu ID-ul de client și secretul, în formatul
# În fișierul de configurare <tt>dex.conf</tt>, în secțiunea <tt>[openid]</tt>, adăugați o linie cu ID-ul de client și secretul, în formatul
#* <tt>credentials[accounts.google.com] = "ID_client|secret"</tt> (înlocuiți valorile <tt>ID_client</tt> și <tt>secret</tt> cu valorile din Google Developers Console)
#* <tt>credentials[accounts.google.com] = "ID_client|secret"</tt> (înlocuiți valorile <tt>ID_client</tt> și <tt>secret</tt> cu valorile din Google Developers Console)
== (Posibil) Descărcați un certificat pentru Curl ==
Unele părți ale Dexonline au nevoie să descarce pagini web prin Curl. Unele din aceste pagini sunt pe protocolul https (în special pentru autentificarea cu OpenId). Unii utilizatori au raportat că nu pot descărca pagini https cu Curl decât dacă instalează un certificat în prealabil.
Dacă întâlniți probleme similare, puteți instala certificatul astfel:
* Descărcați http://curl.haxx.se/ca/cacert.pem și salvați-l undeva pe disc.
* Editați <tt>php.ini</tt> și adăugați <tt>curl.cainfo = "/calea/spre/cacert.pem"</tt>.
Vedeți și [http://stackoverflow.com/questions/6400300/https-and-ssl3-get-server-certificatecertificate-verify-failed-ca-is-ok o discuție pe StackOverflow].
== Ținerea la zi ==
Pentru a ține ulterior clientul la zi, rulați:
<syntaxhighlight lang="bash">
git pull
php tools/migration.php
</syntaxhighlight>
Modificările schemei bazei de date se fac exclusiv prin patchuri în directorul <tt>patches/</tt>. De aceea, ultimii pași nu sunt necesari decât atunci când apar fișiere noi în directorul <tt>patches/</tt>.
O situație mai delicată o au fișierele <tt>dex.conf</tt> și <tt>wwwbase/.htaccess</tt>. Acestea nu sunt sub controlul lui Git, deoarece sunt prea dependente de sistem. Ele sunt copiate după fișierele-șablon <tt>dex.conf.sample</tt> și respectiv <tt>docs/.htaccess</tt>. 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 ==
Această secțiune este în curs de rescriere. Vom adopta politica standard de contribuții pe GitHub. Trebuie doar să o documentăm și aici.