You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<p>Ze względu na przetwarzanie dużej ilości danych program działa w środowisku serwerowym (Apache, PHP, MySQL). Nie jest wymagany konkretny system, ale testy były wykonywane na Windows (konkretnie na Windows 10).</p>
3
+
<h2>Wymagania sprzętowe</h2>
4
+
<p>Za serwer może posłużyć w miarę dowolny, współczesny komputer. Zalecane parametry:</p>
5
+
<ul>
6
+
<li>CPU: 3 GHz, quad, 64-bit.</li>
7
+
<li>RAM: 8 GB.</li>
8
+
<li>Dysk: 20 GB wolnego miejsca. Uwaga! Zalecana jest instalacja na dysku typu SSD!</li>
9
+
</ul>
10
+
<p>Zamiast dysku SSD można ew. użyć dwóch dysków HDD, ale program będzie działał zauważalnie wolniej (nawet 10 razy wolniej).</p>
11
+
<p>Można też spróbować użyć dwóch wolniejszych komputerów. Jeden na serwer SQL, a drugi na serwer Apache+PHP. Ważne! Ze na wydajność oraz <strong>ze względów bezpieczeństwa</strong> zalecane jest korzystanie wyłącznie z sieci lokalnej.</p>
12
+
<h2>Instalacja oprogramowania</h2>
13
+
<h3>Klient</h3>
14
+
<p>Dostęp do programu odbywa się przez przeglądarkę (najlepiej Firefox lub Chrome). W starych IE (starszym niż ten z Windows 7), wygląd niektórych elementów może być dziwny -- zwłaszcza losowania.</p>
15
+
<p>Zalecany jest dostęp lokalny, czyli z tego samego komputera, na którym jest Apache. Wówczas niepotrzebne jest szyfrowanie połączenie i konfigurowanie uwierzytelniania (logowania).</p>
16
+
<p>Do obsługi plików CSV najlepiej zainstalować <atarget="_blank" href="https://www.openoffice.org/pl/download/index.html">Apache Open Office</a> lub ew. Libre Office . MS Excel może wystarczyć do eksportu plików CSV, ale nie poradzi sobie z kodowaniem UTF-8 przy eksporcie plików CSV.</p>
17
+
<h3>Serwer</h3>
18
+
<p>Na komputerze muszą być zainstalowane i skonfigurowane następujące programy serwerowe: </p>
19
+
<ul>
20
+
<li>Apache 2.2 lub nowszy.</li>
21
+
<li>PHP 5.3 lub nowszy. Wymagane rozszerzenie <code>mysql</code>.</li>
22
+
<li>MySQL 5.1 lub nowszy. Uwaga! Musi być skonfigurowany na obsługę UTF-8.</li>
23
+
</ul>
24
+
<p>Poza tym, że używane jest rozszerzenie <code>mysql</code>, to nie ma konkretnych wymagań do wersji PHP. Można próbować instalować POLos na zintegrowanych pakietach serwerowych typu XAMPP, czy WampServer.</p>
<p>Na serwerze należy zainstalować Apache, PHP i MySQL.</p>
33
+
<p><strong>Ważne! Niektóre rzeczy powinny być skonfigurowane podczas instalacji</strong>! Szczegóły poniżej.</p>
34
+
<ol>
35
+
<li>Instalacja Apache.</li>
36
+
<li>Instalacja PHP. Ważne etapy:
37
+
<ol>
38
+
<li>Przy instalacji zaznacz moduł <code>mysql</code> jeśli nie jest domyślnie zaznaczony.</li>
39
+
<li>Wskaż folder <code>conf</code> z zainstalowanego Apache. Bez tego PHP nie będzie działał poprawnie.</li>
40
+
</ol></li>
41
+
<li>Instalacja MySQL.
42
+
<ol>
43
+
<li>Najlepiej wybrać wstępną konfigurację, która będzie w stanie obsłużyć dużą ilość danych (serwerową).</li>
44
+
<li>Musisz wybrać obsługę kodowanie UTF-8.</li>
45
+
</ol></li>
46
+
</ol>
47
+
<p><strong>Uwaga!</strong> Instalator PHP 5.3 może mieć problem z ustawieniem ścieżki w konfiguracji Apache. Po instalacji upewnij się, że na końcu <code>httpd.conf</code> znajduje się coś w rodzaju:</p>
48
+
<pre><codeclass="language-ini">#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL</code></pre>
52
+
<h3>Konfiguracja serwera</h3>
53
+
<h4>Apache</h4>
54
+
<p>W pliku <code>httpd.conf</code> znajduje się główna konfiguracja Apache. </p>
55
+
<ol>
56
+
<li>Należy zmienić konfigurację głównego folderu ze skryptami. W wypadku typowej instalacji Windows to <code><Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"></code>. Należy zmienić w niej <code>AllowOverride None</code> na <code>AllowOverride All</code>.</li>
57
+
<li>W dyrektywę <code>DirectoryIndex</code> należy dodać <code>index.php</code>. Czyli zmienić ją na: <code>DirectoryIndex index.php index.html</code>.</li>
58
+
</ol>
59
+
<p>Dodatkowo w wypadku użycia poza siecią lokalną należy włączyć moduły:</p>
60
+
<ol>
61
+
<li><code>mod_rewrite</code> -- do przekierowań.</li>
62
+
<li><code>mod_ssl</code> -- do szyfrowania (HTTPS).</li>
63
+
</ol>
64
+
<p>Należy pamiętać, że <strong>po zmianie konfiguracji konieczny jest restart usługi Apache</strong>.</p>
65
+
<h4>PHP</h4>
66
+
<p>W pliku <code>php.ini</code> znajduje się główna konfiguracja PHP.</p>
67
+
<p>Należy ustawić:</p>
68
+
<ol>
69
+
<li><code>short_open_tag</code> na <code>On</code>.</li>
70
+
<li><code>display_errors</code> na <code>Off</code>.</li>
71
+
<li><code>upload_max_filesize</code> na <code>30M</code> (lub więcej - ogranicza wielkość przesyłanych plików).</li>
72
+
<li><code>memory_limit</code> na <code>512M</code> (lub więcej).</li>
73
+
<li><code>post_max_size</code> musi być większe <code>upload_max_filesize</code>, ale mniejsze od <code>memory_limit</code>. Zalecane jest ustawienie przynajmniej o 10M większe od <code>upload_max_filesize</code>.</li>
74
+
</ol>
75
+
<p>Upewnij się także, że <code>upload_tmp_dir</code>, <code>session.save_path</code> oraz <code>error_log</code> wskazują na istniejący folder.</p>
76
+
<p>Należy pamiętać, że <strong>po zmianie konfiguracji konieczny jest restart usługi Apache</strong>.</p>
77
+
<h4>MySQL</h4>
78
+
<p>O ile pamiętało się, żeby podczas instalacji MySQL skonfigurować przez kreator usługę, to większość domyślnych ustawień powinna wystarczyć.</p>
79
+
<p>Należy jedynie <code>my.ini</code> należy powiększyć <code>max_allowed_packet</code> na około 2 razy więcej niż plik CSV. Jeśli w pliku <code>my.ini</code> nie ma wpisu "max_allowed_packet", to należy go dodać w sekcji <code>[mysqld]</code>. Powinno to wyglądać tak:</p>
80
+
<pre><codeclass="language-ini">max_allowed_packet = 100M </code></pre>
81
+
<h4>Baza danych</h4>
82
+
<p>Na początek należy utworzyć bazę danych. Można to zrobić w konsoli MySQL lub przez <atarget="_blank" href="https://www.phpmyadmin.net/downloads/">phpMyAdmin</a>.</p>
<li>Najpierw skopiuj pliki na serwer Apache np. do folderu <code>htdocs\polos</code>.</li>
94
+
<li>Utwórz plik <code>polos\inc\dbConnect.php</code> i wpisz w nim polecenia połączenia z bazą MySQL. Przykładowa zawartość pliku <code>dbConnect.php</code> znajduje się w <atarget="_blank" href="https://github.com/Eccenux/POLos/blob/master/inc/dbConnect.example.php">dbConnect.example.php</a>. Oczywiście należy w nim wpisać właściwe hasło.</li>
95
+
<li>Utwórz plik <code>polos\js\random-org\key.js</code> i wpisz w nim klucz API uzyskany z Random.org. Przykładowa zawartość pliku <code>key.js</code> znajduje się w <atarget="_blank" href="https://github.com/Eccenux/POLos/blob/master/js/random-org/key.example.js">key.example.js</a>.</li>
96
+
</ol>
97
+
<h2>Typowe problemy</h2>
98
+
<h3>Apache nie uruchamia się</h3>
99
+
<ol>
100
+
<li>Upewnij się, że ścieżka do pliku <code>php5apache2_2.dll</code> jest prawidłowa.</li>
101
+
<li>Upewnij się, że folder podany w dyrektywie <code>DocumentRoot</code> w <code>httpd.conf</code> istnieje.</li>
102
+
<li>Upewnij się, że port podany w dyrektywie <code>Listen</code> w <code>httpd.conf</code> jest wolny. Można to zrobić poleceniem <code>netstat -aon | findstr 80</code> (zakładając, że <code>80</code> to numer portu). </li>
103
+
</ol>
104
+
<h3>PHP nie uruchamia się</h3>
105
+
<ol>
106
+
<li>Upewnij się, że w <code>conf\mime.types</code> znajdują się wpisy:
<li>Upewnij się także, że w pliku <code>httpd.conf</code> znajdują się polecenia <code>PHPIniDir</code> oraz <code>LoadModule php5_module</code> podane powyżej.</li>
110
+
<li>Upewnij się też, że plik <code>php5apache2_2.dll</code> jest w folderze PHP.</li>
111
+
</ol>
112
+
<h3>Import nie działa</h3>
113
+
<p>Spróbuj najpierw z importu mniejszej ilości danych (np. pierwsze 1000 wierszy). POLos powinien wyświetlić komunikat z informacją co jest nie tak z danymi. </p>
114
+
<p>Jeśli nie działa import dużych plików:</p>
115
+
<ol>
116
+
<li>W <code>php.ini</code> powiększ <code>upload_max_filesize</code> tak by był większy niż plik CSV.</li>
117
+
<li>W <code>php.ini</code> powiększ <code>post_max_size</code> tak by był przynajmniej o 10M większy od <code>upload_max_filesize</code>.</li>
118
+
<li>W <code>php.ini</code> powiększ <code>memory_limit</code> (zwłaszcza jeśli w logu PHP pojawia się komunikat o problemie przydziału pamięci).</li>
119
+
<li>W <code>my.ini</code> powiększ <code>max_allowed_packet</code> na około 2 razy więcej niż plik CSV. </li>
120
+
</ol>
121
+
<h3>Import działa zbyt wolno</h3>
122
+
<p>Import danych osobowych dla dużego miasta może trwać bardzo długo na powolnym lub silnie obciążonym komputerze. To znaczy import 100 tysięcy może nawet trwać godzinę, podczas gdy na szybkim, dobrze skonfigurowanym komputerze potrwa minutę. Dlatego zalecane jest przetwarzanie danych na dysku SSD. </p>
123
+
<p>Na dysku SSD (lub innym szybkim dysku) powinny być przede wszystkim:</p>
124
+
<ul>
125
+
<li>Folder tymczasowy PHP (określony przez <code>upload_tmp_dir</code> w pliku <code>php.ini</code>).</li>
126
+
<li>Folder danych MySQL (określony przez <code>datadir</code> w pliku <code>my.ini</code>).</li>
127
+
</ul>
128
+
<p>Można także spróbować dostosować konfigurację MySQL (w pliku <code>my.ini</code>) tak, żeby używała więcej pamięci RAM. Można w tym celu skorzystać z pliku <code>my-huge.ini</code> (z folderu MySQL). Ale można go wykorzystać jedynie jako wzorzec (wskazówki), bo może zawierać inne ścieżki niż używany plik <code>my.ini</code>.</p>
129
+
<h3>W nazwach dzielnic nie ma polskich znaków</h3>
130
+
<ol>
131
+
<li>Sprawdź kodowanie plików CSV. Powinny być zapisanie jako pliku UTF-8. Najlepiej użyć Apache Open Office do tworzenia plików CSV.</li>
132
+
<li>Należy pamiętać, że MySQL musi być skonfigurowany tak, żeby obsługiwać kodowanie UTF-8. Najlepiej to wybrać podczas instalacji.</li>
133
+
</ol>
134
+
<h3>Nie udaje się import niektórych wierszy</h3>
135
+
<p>Podczas importu wykonywana jest walidacja danych. Odrzucane są m.in. wiersze z nieprawidłowym zakresem wieku (w wypadku profili), czy z nieprawidłowym PESEL (w wypadku danych osobowych).</p>
136
+
<p>Błędne dane można sprawdzić w bazie danych. Do wykonywania zapytań SQL można np. skorzystać z <atarget="_blank" href="https://www.phpmyadmin.net/downloads/">phpMyAdmin</a>.</p>
137
+
<p>Zapytanie do sprawdzania błędnych rekordów profili:</p>
138
+
<pre><codeclass="language-sql">SELECT *
139
+
FROM profile
140
+
WHERE row_state <> 0</code></pre>
141
+
<p>Sprawdzenie błędnych rekordów osobowych w ten sposób jest obecnie niemożliwe, ponieważ import błędnych wierszy został wyłączony ze względów wydajnościowych. Jeśli przy wstawianiu danych osobowych do bazy pojawi się błąd, to zrzut zapytania SQL powinien pojawić się w <code>polos\temp\last.personal.sql</code>.</p>
142
+
<p>Żeby spróbować sprawdzić, które rekordy osobowe nie zostały zaimportowane można spróbować zrobić pełny eksport zaimportowane danych za pomocą poniższego zapytania. Wyniki zapytania można wyeksportować do pliku CSV i porównać z importowanym plikiem.</p>
<p>Żeby wykonać eksport wyników zapytania w phpMyAdmin, musisz wykonać zapytanie, a potem <strong>pod tabelką wyników</strong> wybrać operację eksportu.</p>
147
+
<h3>Inne problemy?</h3>
148
+
<ol>
149
+
<li>Na stronie <code>sys-test.php</code> znajdują się wymagania co do niektórych parametrów PHP oraz MySQL. Sprawdź czy wszystko się zgadza. Pamiętaj, że zalecane wartości tam podane są przewidziane na przetwarzanie plików CSV między 20-30 MB. W razie wątpliwości lepiej jest wybrać większe wartości. </li>
150
+
<li>Sprawdź zawartość pliku z błędami POLos (w wypadku złapanych błędów w folderze polos utworzy się <code>.err.log</code>).</li>
151
+
<li>Sprawdź zawartość pliku z błędami PHP (systemowe błędy PHP powinny pojawić się w pliku wskazanym przez opcję <code>error_log</code>; zazwyczaj nazywa się <code>php-errors.log</code> lub <code>php_errors.log</code>).</li>
152
+
<li>Sprawdź zawartość pliku z błędami Apache (błędy uruchamia i funkcjonowania Apache powinny pojawić się w pliku <code>logs\error.log</code>, w folderze Apache).</li>
0 commit comments