Skocz do zawartości

MySQL


Fizren

Rekomendowane odpowiedzi

Pomoc jest darmowa, ale proszę rozważ przekazanie dotacji na utrzymanie serwisu: klik.

Sprawdź czy mysql na pewno jest aktywny (usługa uruchomiona i proces widoczny w menedżerze zadań), potem wykonaj proponowane przez komunikat polecenie telnetowe i sprawdź odpowiedź.

 

 

ps.

Zamiast newpassword wpisz rzeczywiste hasło, "newpassword" może być ciągiem zabronionym.

Sprawdź czy w katalogu data tworzą się logi, zajrzyj do nich, może coś konkretnego mówią, jeżeli się nie tworzą to mysql się nie odpala prawidłowo.

 

pzdr

Odnośnik do komentarza

Tak, tak wiem o newpassword, jak swoje wpisywałem też tak było.

 

Musiałem uruchomić telnet w "Funkcjach systemu Windows", ale wszystko jest ok.

 

W menadżerze nie ma aplikacji mysql.exe

 

To info z telnet:

 

Logi (nie wiem, nie umiem ich znaleźć) (screeny):

 

Chciałem jeszcze na pewno sprawdzić ten menadżer zadań i wpisałem mysql po przejściu do danego folderu, mam taki błąd:

post-394-0-30015100-1332772547_thumb.png

post-394-0-03777800-1332772715_thumb.png

post-394-0-21188300-1332772721_thumb.png

post-394-0-59252700-1332772844_thumb.png

Odnośnik do komentarza

Ciekawe - zakładam, że zrzuty są świeże więc logi powinny być aktualne, tym czasem w katalogu są logi z 22/23 a więc wtedy ostatni raz startował mysql.

Po zaznaczeniu "Pokaż procesy wszystkich użytkowników" powinieneś widzieć odpalony demon mysqld.exe, jeżeli jest inaczej usługa nie startuje, pamiętaj że instalowana wg. podawanych tu opisów usługa jest utworzona w trybie odpalania ręcznego więc po każdym restarcie należy ją ponowie odpalić bądź po prostu przestawić w tryb automatyczny.

 

Przyszła mi na mysl jeszcze jedna rzecz do sprawdzenia, instalator mógł utworzyć jeden z domyślnych plików z configiem który może mieszać, sprawdź czy nie pałęta ci się któraś z opcji:

C:\windows\my.ini, C:\windows\my.cnf, C:\my.ini, C:\my.cnf, jeżeli istnieją to usuń.

 

pzdr

Odnośnik do komentarza

W plikach Windowsa nic nie ma.

 

Logi są świeże.

 

Mam "Pokaż procesy wszystkich użytkowników", ale mysqld.exe nie ma.

 

Jak mam ją uruchamiać? (jeśli chodzi o "Automatycznie" w usługach to mam włączone"

 

Gdy odpalam mysql.exe znika cmd. (wcześniej normalnie się włączało)

 

Logi:

 

 

  Pokaż ukrytą zawartość

 

 

Wrzucam jeszcze screen z usług i kilku komend cmd (wpisywałem coś związanego z mysql żebyś wyłapał jak najwięcej błędów)

post-394-0-77458300-1332784053_thumb.png

Odnośnik do komentarza

Usuń pliki (logi) z katalogu data (tylko te z głównego drzewa, nie ruszaj podkatalogów).

 

W logach znów mamy "Can't start server: bind-address refers to multiple interfaces!" czyli błąd związany z rozmnożeniem interfejsów, zajrzyj do my.ini czy w międzyczasie nie przywróciłeś/przywróciło się localhost zamiast 127..., sprawdź też ponownie status IPv6.

 

Mam wrażenie krążenia w kółko. może czas spróbować od nowa, od zera, ew. postaw sobie jakąś maszynę wirtualną i przetestuj konfigurację a później dopiero przenieś na hosta.

 

pzdr

Odnośnik do komentarza

Jest! Udało się. Mój błąd był z tym localhost. Przepraszam bardzo, nie zauważyłem.

 

Co mam teraz zrobić aby dostać się do phpMyAdmin itd., itp. Czy ta instrukcja wystarczy (http://eksith.wordpress.com/2010/11/07/nginx-php-mysql-windows/)?

 

Proszę mi powiedzieć czy wszystko co tam jest opisane pomoże mi w zakończeniu tego procesu.

 

Bardzo Panu dziękuję za Pana dokładną pomoc (pomimo moich głupich błędów).

 

Pozdrawiam :)

post-394-0-64305900-1332786432_thumb.png

Odnośnik do komentarza

Zrobiłem instrukcje podane w linku w powyższym poście i podczas uruchamiania serwera mam ten błąd.

 

Proszę o pomoc w przebadaniu całego procesu, mogę usunąć to co zrobiłem i zostać przy mysql'u i zacznę od początku, gdyż pewnie gdzieś zrobiłem błąd.

 

Ma Pan siłę mi jeszcze trochę pomóc?

 

Pozdrawiam.

post-394-0-30391900-1332796525_thumb.png

Odnośnik do komentarza

Skoro zdecydowałeś się na nginx (całkiem niezły wybór) to jeszcze kwestia czy bawisz się w instalacje czy też (tak jak mysql) w wersje rozpakowywane.

nginx nie wymaga specjalnie wielkiej ingerencji, proponuję tą wersję: http://nginx.org/download/nginx-1.1.17.zip, trzeba kilka opcji ustawić w konfigu.

Podstawa to ustawienie katalogu z zawartością www, domyślnie serwer ustawia katalog html wewnątrz katalogu nginx, można to zmienić podając pełną ścieżkę lokalną w zakładce "location /" pliku nginx.conf, przykładowo może on wyglądać tak:

       location / {
           root   d:\programy\html
           index  index.php index.html index.htm default.html default.htm;
           autoindex  on;
      }

dodatkowo ustawiono w przykładzie kilka opcji dla plików indexu, "autoindex on;" oznacza że jeżeli żaden z domyślnych indexów nie zostanie znaleziony zostanie wygenerowany podgląd katalogu.

Druga rzecz która będzie potrzebna to włączenie obsługi php, nginx robi to przez interfejs cgi z pomocą mechanizmu lokalnego proxy, żeby to zadziałało (oprócz oczywiście samego php ale to za chwilę) należy ustawić sekcję:

       location ~ \.php$ {
           root           d:\programy\html;
           fastcgi_pass   127.0.0.1:12345;
           fastcgi_index  index.php;
           fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
           include        fastcgi_params;
       }

Oczywiście w root podajemy ścieżkę do katalogu który będzie zawierał pliki php, w przykładzie jest to ta sama lokacja która widnieje dla głównej lokalizacji, "12345" to port dla serwera proxy, z takim samym portem musi startować php.

I tyle dla serwera, teraz php, tu jest troszkę więcej możliwości ustawień, nie wiem czy uda mi się wyłapać wszystko no ale spróbujmy.

Po rozpakowaniu php (wersja rozpakowywalna tutaj: http://windows.php.net/downloads/releases/php-5.4.0-Win32-VC9-x86.zip) kopiujemy plik php.ini-production do tego samego katalogu z nazwą php.ini (zasadniczo plik php.ini można umieścić w innej lokacji ale to jest jedna z domyślnych), teraz należy wyedytować kilka wierszy tego pliku.

Należy ustawić katalog do serwera www, katalog do modułów (wewnątrz katalogu php), włączyć obsługę wymaganych modułów (cgi) ew. ustawić wielkość możliwych transferów, użycia pamięci itp. (wiele ustawień wpływa bezpośrednio na bezpieczeństwo serwera więc jeżeli ma być widoczny z zewnątrz należy mieć to na uwadze)

Przykładowe ustawienia (większość uruchamiamy poprzez usunięcie # na początku wiersza):

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = On
include_path = ".;d:\Programy\php\PEAR"
doc_root = "d:/programy/html"
extension_dir = "d:/Programy/php/ext"
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_bz2.dll
extension=php_gd2.dll
extension=php_imap.dll
extension=php_mbstring.dll

I to powinno wystarczyć.

 

Teraz kwestia odpalenia (i dalej ew. wyłączeni) odpowiednich programów w odpowiedniej kolejności, ja preferuję ręczny start ale można też stworzyć usługi, nginx standardowo powinien być zabity przed wyłączeniem komputera, inaczej będą wyświetlane błędy.

 

Najwygodniej chyba odpalać z pomocą vbs, ja używam serwerów dla zabawy i np nginx i pozostałe odpalam tak:

Set objShell = WScript.CreateObject ("WSCript.shell")

objShell.Run("%comspec% /c nginx.exe"),0,false
objShell.Run("%comspec% /c d:\Programy\php\php-cgi.exe -b 127.0.0.1:12345 -c d:\Programy\php\php.ini"),0,false
objShell.Run("%comspec% /c d:\Programy\mysql\bin\mysqld.exe --install-manual MySql --defaults-file=d:\Programy\mysql\my.ini"),0,false
objShell.Run("%comspec% /c net start mysql"),0,false

Set objShell = Nothing

Skrypt vbs znajduje się w katalogu nginx w przeciwnym wypadku należy podać pełną ścieżkę, oczywiście ścieżki przykładowe, ścieżki oczywiście mogą być inne ale należy to uwzględnić również w plikach konfiguracyjnych poszczególnych pakietów.

 

Całość zatrzymujemy w taki sposób (znów vbs):

Set objShell = WScript.CreateObject ("WSCript.shell")

objShell.Run("%comspec% /c nginx.exe -s quit"),0,false
objShell.Run("%comspec% /c taskkill /f /IM nginx.exe"),0,false
objShell.Run("%comspec% /c taskkill /f /IM php-cgi.exe"),0,false
objShell.Run("%comspec% /c net stop mysql"),0,true
objShell.Run("%comspec% /c d:\Programy\mysql\bin\mysqld.exe --remove"),0,false

Set objShell = Nothing

 

W przykładach które podałem usługa dla mysql jest za każdym razem tworzona na nowo i potem znów budowana przy uruchomieniu, tak jak napisałem dla mnie to zabawka a nie system produkcyjny więc nie potrzebuję cały czas uruchomionych tasków, to oczywiście zależy od zastosowania ale jeżeli ma to być serwer publiczny to oczywiście powinny być dostępne ciągle, dodatkowo w takiej sytuacji musisz zadbać o bezpieczeństwo ale to już inny temat a ja nie czuję się władnym o tym pisać (jak już wspomniałem - dla mnie to zabawka).

 

phpMYadmin należny po prostu rozpakować do katalogu który był podany jako root dla plików php (albo do jego podkatalogu) i wpisać w przeglądarce: 127.0.0.1/phpMyAdmin (jeżeli będzie w root).

 

pzdr

Odnośnik do komentarza

Mój config nginx (czy wszystko dobrze ustawiłem?)

 

 

  Pokaż ukrytą zawartość

 

 

Php config:

 

 

  Pokaż ukrytą zawartość
Odnośnik do komentarza

doc_root = "d:/programy/nginx/html" <> root d:\programy\nginx\php\html

Mała niekonsekwencja, oczywiście można odseparować pliki php od czystego html ale również dla nich należny wtedy ustawić lokalizację.

Myślę, że nie potrzebujesz serwerów wirtualnych, wystarczy pojedynczy katalog html/www, załóż go w ścieżce do której jest łatwy dostęp bo pewnie będziesz często zaglądał.

 

extension_dir = "d:/Programy\nginx/php/ext" > pomieszane slashe i backslashe, co prawda php potrafi interpretować oba "łamańce" ale nie wiem czy w jednej linii.

 

żeby sprawdzić czy działa wrzuć sobie do katalogu ustawionego w "root" plik o takiej zawartości:

<?php
phpinfo();
?>

zapisz go jako index.php i wpisz w przeglądarce adres http://localhost

 

a tu w bonusie kod wyświetlający datę i czas w momencie otwarcia strony, zapisz np. jako czas.php i w przeglądarce daj http://localhost/czas.php

<?php 
$arrLocales = array('pl_PL', 'pl','Polish_Poland.28592');
setlocale( LC_ALL, $arrLocales );
date_default_timezone_set('Europe/Warsaw');

function strftimeV($format,$timestamp){
return iconv("ISO-8859-2","UTF-8",ucfirst(strftime($format,$timestamp)));
}

echo strftimeV('%A %d %B %Y',strtotime('now'));
echo strftime(' %H:%M:%S');
?>

 

Powinna się wyświetlić strona zawierająca sformatowane ustawienia php i serwera oraz zmienne lokalne, to oznacza że serwer http działa i obsługuje pliki php.

 

phpMyAdmin rozpakuj do tego samego katalogu (lub jego podkatalogu).

 

pzdr

 

Odnośnik do komentarza
  W dniu 27.03.2012 o 17:16, maggreg napisał(a):

doc_root = "d:/programy/nginx/html" <> root d:\programy\nginx\php\html

Mała niekonsekwencja, oczywiście można odseparować pliki php od czystego html ale również dla nich należny wtedy ustawić lokalizację.

Myślę, że nie potrzebujesz serwerów wirtualnych, wystarczy pojedynczy katalog html/www, załóż go w ścieżce do której jest łatwy dostęp bo pewnie będziesz często zaglądał.

 

extension_dir = "d:/Programy\nginx/php/ext" > pomieszane slashe i backslashe, co prawda php potrafi interpretować oba "łamańce" ale nie wiem czy w jednej linii.

 

żeby sprawdzić czy działa wrzuć sobie do katalogu ustawionego w "root" plik o takiej zawartości:

<?php
phpinfo();
?>

zapisz go jako index.php i wpisz w przeglądarce adres http://localhost

 

a tu w bonusie kod wyświetlający datę i czas w momencie otwarcia strony, zapisz np. jako czas.php i w przeglądarce daj http://localhost/czas.php

<?php
$arrLocales = array('pl_PL', 'pl','Polish_Poland.28592');
setlocale( LC_ALL, $arrLocales );
date_default_timezone_set('Europe/Warsaw');

function strftimeV($format,$timestamp){
return iconv("ISO-8859-2","UTF-8",ucfirst(strftime($format,$timestamp)));
}

echo strftimeV('%A %d %B %Y',strtotime('now'));
echo strftime(' %H:%M:%S');
?>

 

Powinna się wyświetlić strona zawierająca sformatowane ustawienia php i serwera oraz zmienne lokalne, to oznacza że serwer http działa i obsługuje pliki php.

 

phpMyAdmin rozpakuj do tego samego katalogu (lub jego podkatalogu).

 

pzdr

 

Stworzyłem ten folder html, tam dałem czas.php i index.php, ale nie rozumiem kiedy mam wpisać 'localhost' do przeglądarki (po uruchomieniu serwera?)

 

 

 

  Pokaż ukrytą zawartość

 

 

Gdy wrzucam phpMyAdmin do folderu html (domyślam się, że tak miałem zrobić) podmienia mi plik index.php, co zrobić w takim razie.

 

Jak widzi Pan w ogóle nie ogarniam niestety i przepraszam, że Pan się ze mną męczy, jednak proszę o dokładne wytłumaczenie.

 

Może jakieś screeny podesłać dla wyjaśnienia?

Odnośnik do komentarza

O takim układzie katalogu myślałem.

Jeżeli nginx nie startuje to uruchom go bezpośrednio z konsoli, powinien wypisać co mu się nie podoba (pewnie jakaś pierdółka w konfigu typu nawias itp.).

Po odpaleniu powinien się pojawić w menedżerze (nawet kilka razy, o ile dobrze pamiętam to zależnie od rdzeni procesora)*.

Jak serwer http nie działa to localhost jest niezrozumiały dla przeglądarki, jak już serwer wystartuje i przeglądarka będzie się jednak upierać przy wyszukiwarce to spróbuj z adresem bezpośrednim >127.0.0.1 albo adres połączenia sieciowego (np. z dhcp).

 

* > jednak nie zależy to od procesora, nginx tworzy jeden proces master i przynajmniej jeden proces worker (ilość do skonfigurowania).

pzdr

Odnośnik do komentarza

Ten błąd wyskakuje w konsoli, rozumiem że coś w configu?

 

Mój nginx.conf:

 

 

  Pokaż ukrytą zawartość

post-394-0-62891700-1332970296_thumb.png

Odnośnik do komentarza

Gdy wpisuję 127.0.0.1, localhost lub localhost/phpmyadmin/ mam takie coś na stronie (daję przy okazji screen z menadżera zadań).

 

Jeszcze jedno pytanie: czy po wyłączeniu usługi w procesach dalej powinno być mysqld.exe?

 

Co mam zmienić tutaj aby nie usuwało mi usługi MySql za każdym razem? (screen)

 

 

  Pokaż ukrytą zawartość

post-394-0-92382100-1332975091_thumb.png

post-394-0-11731100-1332975527_thumb.png

Odnośnik do komentarza

objShell.Run("%comspec% /c net stop mysql"),0,true

wyłącza usługę

 

objShell.Run("%comspec% /c d:\Programy\nginx\mysql\bin\mysqld.exe --remove"),0,false

usuwa usługę (usługa znika zarówno z listy usług jak i z rejestru).

 

Analogicznie (w odwrotnej kolejności) działa skrypt uruchamiający, czyli jeżeli chcesz ustawić mysql permanentnie to również ze skryptu startowego należy odpowiednie wpisy skasować.

 

Natomiast nie widzę jakiegoś specjalnego powodu dla którego serwer generuje błąd 50x, konfig wygląda ok, nawet przy braku indexu powinien wygenerować zawartość katalogu, w "spojlerze" powyżej fragment kodu odpowiadający za obsługę tego błędu jest dziwnie kolorowany przez stronę, tak jakby był zamknięty w komentarzy, prześledź czy nie wkradł ci się tam jakiś znak niedrukowalny, być może to tylko kwestia BBCode na stronie mam na myśli fragment:

           error_page   500 502 503 504  /50x.html;
           location = /50x.html {
                   root   html;
           }

 

ps.

wysłałem ci na priv mój konfig który działa poprawnie (tylko dla ciebie do wglądu).

Jedyne czego nie mogę wymusić mimo różnych prób to przekierowanie indexu na podstawie ip referera.

 

pzdr

Odnośnik do komentarza

Czy będzie jakaś różnica kiedy mysql w usługach będzie wyłączany lub kasowany?

 

Znalazłem chyba coś ciekawego w logach (error.txt):

 

 

  Pokaż ukrytą zawartość

 

 

Znalazłem jeszcze plik access.txt, ale myślę, że nie jest ważny:

 

 

  Pokaż ukrytą zawartość

 

 

Mój config (jeszcze raz), trochę różni się od Pańskiego:

 

 

  Pokaż ukrytą zawartość

 

 

Może powinienem przy niektórych funkcjach usunąć '#'?

Odnośnik do komentarza

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...