[linux]APACHE2+SSL+MOD_REWRITE+CGI +PHP4+PHP5+MySQ |
[linux]APACHE2+SSL+MOD_REWRITE+CGI +PHP4+PHP5+MySQ |
18.05.2005, 22:59:48
Post
#1
|
|
Grupa: Zarejestrowani Postów: 401 Pomógł: 0 Dołączył: 18.04.2003 Skąd: Trójmiasto Ostrzeżenie: (0%) |
Chwila wolnego w robocie, fajeczka, kaweczka i pisze teraz to co chiałem od jakiegoś czasu dla forumowiczów napisać
Niniejszy tutorial zaznaczam iż piszę : => aby początkującym użytkownikom linux'a pomóc. => aby od osób które znają się na serwerach i montażu oprogramowania usłyszeć - lepsze propozycje dotyczące instalacji niżej opisanego oprogramowania, aby więcej się nauczyć i jednocześnie sprawdzić czy ja sam nie zrobiłem tutaj gdzieś niedociągnięć. słowo wstępu : instalacja oprogramowania przeprowadzona została wg. poniższych wskazówek pomyślnie na dystrybucjach : debian sarge oraz slackware 10.0 znak : # - oznacza iż polecenie wykonywane było jako użytkownik root. użytkownik [user] : oznacza zwykłego użytkownika - nie mającego praw root'a. Użytkownika takiego możemy stworzyć poprzez wykonanie jako root następującego polecenia : [quote]# adduser[/quote] i odpowiedzeniu na wyświetlane pod konsolą pytania takie jak : nazwa użytkownika, hasło itp. 1. instalacja bazy danych MySQL => źródła : http://dev.mysql.com/downloads/mysql/4.0.html ==> instalowana wersja przez mnie : http://dev.mysql.com/get/Downloads/MySQL-4...om/pick#mirrors => dokumentacja : http://dev.mysql.com/doc/ pierwszym krokiem będzie pobranie źródeł oraz dodanie grupy i użytkownika systemowego pod którym uruchamiany jest serwer baz danych MySQL [quote]# su - c [user] # wget http://sunsite.icm.edu.pl/mysql/Downloads/...l-4.0.24.tar.gz # exit # groupadd mysql # useradd -g mysql mysql[/quote] następnie rozpakowywujemy pobrane źródła: [quote]# tar -zxvf mysql-4.0.24.tar.gz[/quote] przechodzimy do katalogu do którego ów źródła zostały rozpakowane i przystępujemy do procesu kompilacji: [quote]# cd mysql-4.0.24 # ./configure --prefix=/usr/local/mysql --with-charset=latin2 # make # make install[/quote] po pomyślnej instalacji bazy danych, musimy zainstalować jeszcze bazę danych mysql - bez której nasz mysql nie będzie poprawnie funkcjonować : [quote]# ./scripts/mysql_install_db[/quote] po zainstalowaniu się w katalog /usr/local/mysql/var bazy mysql zmieniamy właściciela i grupę katalogu w którym egzystuje mysql : [quote]# chown -R mysql /usr/local/mysql # chgrp -R mysql /usr/local/mysql[/quote] dzięki temu zabiegowi nasz serwer baz danych będzie uruchamiany z prawami normalnego użytkownika ( mysql ). następnie do katalogu, który określiliśmy przy kompilacji parametrem --sysconfdir kopiujemy plik my.cnf [quote]# cp ./support-files/my-medium.cnf /etc/my.cnf [/quote] uruchamiamy serwer mysql : [quote]# /usr/local/mysql/bin/mysqld_safe &[/quote] i sprawdzamy czy rzeczywiście zaczął on funkcjonować : [quote]# /usr/local/mysql/bin/mysqladmin ping [/quote] powinna zostać wyświetlona następująca informacja : [quote]# mysqld is alive[/quote] zdefiniujemy teraz hasło do naszego serwera mysql tak aby nie pozostał on otwarty : [quote]# /usr/local/mysql/bin/mysqladmin -u root password nasze_hasło[/quote] aby uprościć sobie dostęp do najważniejszych narzędzi, utworzymy do nich symboliczne dowiązania : [quote]# ln -s /usr/local/mysql/bin/mysqladmin /usr/local/bin/mysql.admin # ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql.console[/quote] zobaczmy jeszcze czy aby napewno do naszego serwera nie można się dostać bez hasła : [quote]# mysql.console ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)[/quote] tak więc bez hasła nikt na root'a mysql się nie dostanie, sprawdźmy jeszcze tylko czy my możemy się do niego dostać : [quote]# mysql.console -u root -p Enter password : ***** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 13 to server version: 4.0.23a-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. # exit [/quote] aby nasz serwer mysql po restarcie maszyny został uruchomiony dokładamy odpowiedni wpis : [quote]=> dla slackware : # echo '/usr/local/mysql/bin/mysqld_safe &' >> /etc/rc.d/rc.local => dla debian'a : # touch /etc/init.d/initialization # echo '/usr/local/mysql/bin/mysqld_safe &' >> /etc/init.d/initialization[/quote] jeżeli nie chcemy aby dostęp do mysql był rónież z zewnątrz ( poza localhost ) w [B]/etc/my.cnf dokonujemy małych modyfikacji, dopisujemy w sekcji [mysqld] : [quote="/etc/my.cnf"][mysqld] bind-address = 127.0.0.1[/quote] koniec instalacji MySQL. 2. instalacja serwera www - apache2 => źródła : http://httpd.apache.org/download.cgi ==> instalowana przeze mnie wersja : http://www.apache.net.pl/httpd/httpd-2.0.54.tar.gz => dokumentacja : http://httpd.apache.org/docs-2.0/ apache2 instalować będziemy z obsługą SSL'a - tak więc pobieramy dotknięciem się do źródeł apache2, instalujemy najnowszą wersję OpenSSL => źródła : http://www.openssl.org/source/ ==> instalowana przeze mnie wersja : http://www.openssl.org/source/openssl-0.9.7g.tar.gz => dokumentacja : http://www.openssl.org/docs/ [quote]# su - c [user] # wget http://www.openssl.org/source/openssl-0.9.7g.tar.gz # exit # tar -zxvf openssl-0.9.7g.tar.gz # cd openssl-0.9.7 # ./config --prefix=/usr/local/ssl # make # make install [/quote] po zainstalowaniu SSL'a zabieramy się za naszego apache2 : [quote]# tar -zxvf httpd-2.0.54.tar.gz # cd httpd-2.0.54 # ./configure --prefix=/usr/local/apache2 --enable-so --enable-modules=rewrite --enable-shared=rewrite --enable-ssl --enable-rewrite # make # make install[/quote] po zainstalowaniu serwera apache2, zaczynamy zabawę z naszym httpd.conf, w tym celu zaprzęgamy do roboty nasz ulubiony edytor tekstu, u mnie był to debianowy nano, ale modyfikacji można równie dobrze dokonywać z poziomu edycji w MC ( midnight commander ). Poniżej załączam opis - jak powinny wyglądać odpowiednie linijki w httpd.conf [quote="/usr/local/apache2/conf/httpd.conf"]"ServerRoot /usr/local/apache2" Listen nasze_ip:80 Listen nasze_ip:443 ServerName nasze_ip DocumentRoot "/home/www" - powiedzmy że takie <Directory "/home/www"> Options Indexes FollowSymLinks .... </Directory> DirectoryIndex index.html index.htm AddDefaultCharset ISO-8859-2 ( tej linijki w httpd.conf nie znajdziemy, trzeba ją dopisać ) NameVirtualHost nasze_ip:80 NameVirtualHost nasze_ip:443 [sekcja virtualhost - przykładowy nowy Vhost bez obslugi SSL] <VirtualHost nasze_ip:80> ServerAdmin admin@space DocumentRoot /home/www/localhost ServerName nasze_ip ErrorLog logs/localhost-error_log CustomLog logs/localhost-access_log common </VirtualHost> [przykładowy nowy Vhost z obsługą SSL] <VirtualHost nasze_ip:443> DocumentRoot /home/www/localhost ServerName nasze_ip:443 ServerAdmin root@space ErrorLog logs/localhost-error_log CustomLog logs/localhost-access_log common SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key SetEnvIf User-Agent "."MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 </VirtualHost>[/quote] teraz należy jeszcze co niego zmodyfikować plik : /usr/local/apache2/conf/ssl.conf i zahashować co poniektóre linijki, ponieważ obsługe virtualhosta z SSL ustawiać będziemy w httpd.conf [quote]#Listen 443 #<VirtualHost _default_:443> # General setup for the virtual host #DocumentRoot "/home/www/" #ServerName nasze_ip:443 #ServerAdmin root@space #ErrorLog /usr/local/apache2/logs/error_log #TransferLog /usr/local/apache2/logs/access_log #SSLEngine on #SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL #SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt #SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key #SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire #<Files ~ "\.(cgi|shtml|phtml|php3?)$"> # SSLOptions +StdEnvVars #</Files> #<Directory "/usr/local/apache2/cgi-bin"> # SSLOptions +StdEnvVars #</Directory> #SetEnvIf User-Agent ".*MSIE.*" \ # nokeepalive ssl-unclean-shutdown \ # downgrade-1.0 force-response-1.0 #</VirtualHost>[/quote] ok modyfikacji dość, teraz zrobimy sobie dla wygody linka do apachectl [quote]# ln -s /usr/local/apache2/bin/apachectl /usr/local/bin/apache2[/quote] jak rownież dołożymy odpowiednią linijke do rc.local lub naszego debianowego skryptu initialization aby po restarcie maszyny serwer został zainicjowany : [quote]=> dla slackware : # echo '/usr/local/apache2/bin/apachectl startssl' >> /etc/rc.d/rc.local => dla debian'a : # echo '/usr/local/apache2/bin/apachectl startssl' >> /etc/init.d/initialization[/quote] oraz co się tyczy stricto Debiana : o ile nie zrobiliśmy już tego wcześniej aby nasz skrypt startowy wogóle był skryptem startowym systemu, wywołać musimy następującą komende : [quote]# update-rc.d /etc/init.d/initialization defaults [/quote] Zainstalowaliśmy wcześniej openssl'a tak więc teraz kiedy mamy rownież zainstalowany serwer www, damy mu możliwość współpracy z SSL. generujemy główny certyfikat dla naszego serwera : [quote]# openssl genrsa -des3 -out server.key 1024[/quote] :roll2: pamietaj jakie ustawiasz hasło dla certyfikatu usuwamy haslo z klucza aby umożliwić automatyczny start apache2 [quote]# openssl rsa -in server.key -out server.pem[/quote] :roll2: podajemy to samo hasło które wpisaliśmy podczas generowania certyfikatu generujemy podpis certyfikatu [quote]# openssl req -new -key server.pem -out server.csr[/quote] wypełniamy pola : country, state, city w momencie kiedy zostaniemy zapytani o 'organization unit' zostawiamy to pole puste [ enter ] pole common name - w nim powinniśmy podać albo adres ip naszego serwera albo jego domene, zalecam domene. pola 'a challenge password' nie musimy wypełniać. generujemy tzw. self-signed certificate - certyfikat podpisany 'przez siebie' (podajemy takie samo hasło jakie podawalismy podczas generowania server.pem ) [quote]# openssl x509 -req -days 365 -in server.csr -signkey server.pem -out server.crt[/quote] ok, kiedy wszystko już mamy przygotowane, zabieramy sie do instalacji naszego prywatnego klucza oraz certyfikatu do apache2 : [quote]# mkdir /usr/local/apache2/conf/ssl.crt # cp server.crt /usr/local/apache2/conf/ssl.crt/server.crt # mkdir /usr/local/apache2/conf/ssl.key # cp server.pem /usr/local/apache2/conf/ssl.key/server.key [/quote] kiedy wszystko już praktycznie jest gotowe, sprawdzamy czy nie mamy jakichś błędów w httpd.conf : [quote]# apache2 -t Syntax OK[/quote] jeżeli wszystko jest ok, włączamy naszego apache2 z obsługą SSL [quote]# apache2 startssl[/quote] spojrzmy dla pewnosci w procesy i wywolajmy url w przegladarce aby mieć pewność że serwer pracuje prawidłowo. w procesach widnieć powinno kilka pozycji podobnych do poniższej : [quote]nobody 14682 0.0 1.0 15296 5168 ? S 09:05 0:00 /usr/local/apache2/bin/httpd -k start -DSSL [/quote] :roll2: 2.1 obsługa mod_rewrite Aby nasz mod_rewrite z którym skompilowaliśmy apache2 funkcjonował poprawnie należy w httpd.conf dokonać następujących modyfikacji : Wyedytujemy httpd.conf w okolicach linijki 335 zaraz pod DocumentRoot "/home/www", struktura musi być następująca jeżeli chcemy mieć możliwość korzystania z mod_rewrite z poziomu .htaccess [quote="httpd.conf"]<Directory /> Options FollowSymLinks AllowOverride FileInfo </Directory>[/quote] kawałek dalej : [quote="httpd.conf"]<Directory "/home/www"> Options Indexes FollowSymLinks AllowOverride FileInfo Order allow,deny Allow from all </Directory>[/quote] W dowolnym miejscu w httpd.conf dorzucamy jeszcze następujące linijeczki : [quote="httpd.conf"]# mod_rewrite support <IfModule mod_rewrite.c> RewriteEngine On RewriteLog "/usr/local/apache2/logs/rewrite.log" RewriteLogLevel 9 </IfModule>[/quote] Aby przetestować czy mod_rewrite działa poprawnie, należy do katalogu dla VirtualHosta, którego sobie utworzymy wprowadzić plik .htaccess o następującej zawartości : [quote=".htaccess"]RewriteEngine On RewriteCond %{HTTP_HOST} ^.*$ [NC] RewriteRule ^(.*)$ http://www.domain.com/ [R][/quote] Dzięki dobrodziejstwu .htaccess i mod_rewrite po wejściu na url, dla którego DocumentRoot wskazuje na katalog zawierający .htaccess z powyższą zawartością zostaniemy przekierowani na adres www.domain.com 2.2 obsługa CGI Aby mieć możliwość uruchamiania na naszej maszynie skryptów perl'a ( .cgi .pl ) należy w pliku konfiguracyjnym httpd.conf dokonać paru małych modyfikacji : [quote="/usr/local/apache2/conf/httpd.conf"]modyfikujemy linijke DirectoryIndex DirectoryIndex index.html index.htm index.cgi index.pl dodajemy linijeczke : AddHandler cgi-script .cgi .pl oraz określamy w jakich katalogach maja być parsowane pliki .cgi oraz .pl - jako skrypty CGI, w naszym przypadku wszystkie katalogi cgi-bin we wszystkich podkatalogach * w katalogu /home/www <Directory "/home/www/*/cgi-bin"> Options +ExecCGI </Directory> [/quote] Teraz sprawdźmy czy nasze skrypty CGI aby napewno działają poprawnie, otwieramy nasz ulubiony edytorek i wpisujemy : [quote]#!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello, Im a CGI script and Im gonna print You some environment variables to make You belive that Im working fine \n"; print "<br><br>"; foreach $key (keys %ENV) { print "$key --> $ENV{$key}<br>"; } [/quote] Nasz kod zapisujemy jako plik .cgi lub .pl w miejscu w którym nadaliśmy mozliwość parsowania plików jako skrypty CGI. Następnie nadajemy odpowiednie prawa dla pliku : [quote]# chmod 755 /home/www/localhost/cgi-bin/skrypt.cgi # chmod +x /home/www/localhost/cgi-bin/skrypt.cgi[/quote] teraz sprawdzamy już tylko w przeglądarce czy wszystko działa poprawnie podając w url'u scieżkę do naszego skryptu cgi np. : http://nasze_ip/cgi-bin/skrypt.cgi. Jeżeli wszystko działa poprawnie w przeglądarce powinno pokazać się co nieco zmiennych środowiskowych 2.3 obsługa php4 => źródła : http://www.php.net/downloads.php ==> instalowana przez mnie wersja : http://pl.php.net/distributions/php-4.3.11.tar.gz => dokumentacja : http://pl.php.net/manual/pl/ zatrzymujemy serwer apache : [quote]# apache2 stop[/quote] następnie pobieramy źródła, rozpakowywujemy je i przystępujemy do kompilacji. php4 zainstalujemy jako moduł dla apache2 moja instalacja php4 była non-standard - tak więc doinstalowałem wcześniej rzeczy takie jak : Zlib 1.2.2 - http://prdownloads.sourceforge.net/libpng/...tar.gz?download curl 7.13.1 - http://curl.haxx.se/download.html gd 2.0.33 - http://www.boutell.com/gd/ libmcrypt 2.5.7 - http://sourceforge.net/project/showfiles.p...lease_id=178782 mcrypt 2.6.4 - http://sourceforge.net/project/showfiles.p...lease_id=178780 mhash 0.9.2 - http://sourceforge.net/project/showfiles.php?group_id=4286 libiconv 1.9.2 - ftp://ftp.gnu.org/gnu/libiconv/ libjpeg-6b - http://site.n.ml.org/info/libjpeg/ libtiff 3.7.1 - http://dl.maptools.org/dl/libtiff/ instalacja tych elementów to prawie zawsze samo : ./configure + make + make install ale przed wykonaniem powyższego należy się upewnić wydając polecenie ./configure --help Pamiętać również należy o tym aby nasz pliczek /etc/ld.so.conf zawierał w sobie między innymi : [quote]/lib /usr/lib /usr/local/lib /usr/local/ssl/lib[/quote] co sprawi iż aplikacje które będziemy instalować ( nie tylko to co tutaj w tym tutorialu ale też cokolwiek innego kiedykolwiek ) będą posiadać informacje na temat środowiska bibliotek naszego systemu - krócej - plik ld.so.conf zawiera informacje dla środowiska bibliotek systemu w jakich katalogach leżą biblioteki które należy uwzględnić - po dopisaniu powyższych linijek do ld.so.conf wydajemy polecenie # ldconfig [quote]# su -c [user] # wget http://pl.php.net/distributions/php-4.3.11.tar.gz # exit # tar -zxvf php-4.3.11.tar.gz # cd php-4.3.11.tar.gz wszystko w jednej linijce ! u mnie wyglądało to tak : ( jeżeli na serwerze macie zainstalowanego jakiegoś MTA ( mail transport agent ) z obsługą imap'u to do poniższego configure dołączyć możecie --with-imap --with-imap-ssl # ./configure --prefix=/usr/local/php4 --with-config-file-path=/usr/local/php4 --sysconfdir=/usr/local/php4 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-openssl=/usr/local/ssl --enable-discard-path --enable-debug --enable-track-vars --enable-versioning --with-openssl=/usr/local/ssl --with-xml --enable-bcmath --with-bz2 --enable-calendar --with-jpeg-dir=/usr/local --with-png-dir=/usr/lib --with-tiff-dir=/usr/local --with-ttf=/usr/lib --with-curl --with-db --with-dbase --with-pear --enable-exif --enable-ftp --with-gettext --with-iconv --with-iconv-dir=/usr/local --enable-mbstring --with-mcrypt --with-mhash --with-zlib --with-gd --with-gd-native-ttf --with-xslt-sablot=/usr/lib --enable-xslt --enable-wddx --with-kerberos --with-ncurses # make # make install [/quote] teraz zapewne jako iż instalowaliśmy php4 jako moduł do apache2 w pliku : /usr/local/apache2/conf/httpd.conf - powinna znajdować się linijka odpowiedzialna za załadowanie modułu : LoadModule php4_module modules/libphp4.so do httpd.conf dorzucamy jeszcze samą obsługę parsowania php - ponieważ samo załadowanie modułu nie wystarcza, tak więc dopisujemy np. pod LoadModule php4_module modules/libphp4.so linijki : [quote]dopisujemy do DirectoryIndex : index.php index.php4 oraz powiedzmy pod LoadModule php4_module : AddType application/x-httpd-php .php AddType application/x-httpd-php .php4[/quote] teraz skoro mamy już obsługę php4, sprawdźmy czy działa ona poprawnie : [quote]# apache2 startssl # touch /home/www/localhost/phpinfo.php # echo '<? phpinfo(); ?>' >> /home/www/localhost/phpinfo.php[/quote] wywołujemy w przeglądarce plik phpinfo.php i naszym oczom powinna się ukazać ładna informacja na temat php4 2.4 obsługa php5 obsługę php5 w tym przypadku zamontujemy jako CGI. kwestia dwóch wersji php jako modułów na jednym porcie bez żadnych ProxyPass'ów itp itd. jest dla mnie kwestią ciężką do przegryzienia jak narazie, no ale może poprostu porzebuje troche więcej czasu, jeżeli uda mi się to zrobić, zamieszczę poprawke w tutorialu, a jeżli udało się komuś z Was to zrobić i macie jakieś konkretne i też zaraz proste rozwiązanie - napiszcie do mnie PW, przeczytam, potestuję i jeżeli faktycznie będzie wszystko ok, wprowadzę poprawkę do tego tutka => źródła : http://pl.php.net/downloads.php ==> instalowana przeze mnie wersja : http://pl.php.net/distributions/php-5.0.4.tar.gz => dokumentacja : http://pl.php.net/manual/pl/ ściągamy źródła, rozpakowywujemy i instalujemy na pokładzie php5 jako CGI [quote]# apache2 stop # su - c [user] # wget http://pl.php.net/distributions/php-5.0.4.tar.gz # tar -zxvf php-5.0.4.tar.gz # cd php-5.0.4 configure u mnie wyglądało tak, ale to czego obsługa ma być zainstalowana to już wiadomo - jak komu pasuje tak jak ostatnim razem - jeżeli na naszym systemie posiadamy oprogramowanie pozwalające na dołączenie funkcji --with-imap --with-imap-ssl, dołączamy je # ./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5 --sysconfdir=/usr/local/php5 --with-mysql=/usr/local/mysql --with-zlib --with-bzip --with-gd --enable-force-cgi-redirect --enable-bcmath --enable-calendar --enable-ctype --enable-dbase --enable-discard-path --enable-exif --enable-filepro --enable-ftp --enable-gd-imgstrttf --enable-gd-native-ttf --enable-inline-optimization --enable-mbstr-enc-trans --enable-mbstring --enable-mbregex --enable-track-vars --enable-versioning --enable-wddx --enable-bz2 --with-dom=/usr/include/libxml2 --with-ftp --with-gettext --with-gmp --with-jpeg-dir=/usr/local --with-mcal=/usr/include --with-mcrypt --with-mhash --with-png-dir=/usr/lib --with-iconv --with-ncurses --with-xml --with-xslt-sablot=/usr/lib --enable-xslt --with-kerberos --enable-fastcgi --with-openssl=/usr/local/ssl --with-tiff-dir=/usr/local --with-curl # make # make install [/quote] teraz musimy wyedytować ponownie /usr/local/apache2/conf/httpd.conf i dorzucamy do niego taki wpis : [quote]AddType application/x-httpd-php5 .php5 ScriptAlias /php/ "/usr/local/php5/bin/" Action application/x-httpd-php5 "/php/php" oraz oczywiście do DirectoryIndex dorzucamy index.php5[/quote] następnie pozostaje już tylko start apache2 ( # apache2 startssl ) i utworzenie pliku w /home/www/localhost/phpinfo.php5 z zawartością <? phpinfo(); ?> warto mieć również na względzie pliki php.ini i dyrektywe : disable_functions która u mnie zawiera następującą zawartość : [quote]disable_functions = shell_exec, system, passthru, escapeshellcmd, escapeshellarg[/quote] tak więc wypada na to że to już wszystko Teraz na naszej maszynie powinno sprawnie funkcjonować : Apache2+SSL+CGI+PHP4+PHP5+MySQL-4.0 pisząc ten mini tutorial, jeszcze raz podkreślam, że chodziło mi o : - pomoc początkowym użytkownikom linuxa w instalacji w/w oprogramowania - słowo krytyki konstruktywnej w moją stronę odnośnie tego co i jak tutaj zostało opisane. Wiadomo - ja również uczyłem się sam lub z tego podobnych artykółów i cały czas swoją widzę rozwijam i chcę rozwijać - dlatego nie boje się słów krytyki z chęcią wysłucham wskazówek i wprowadzę poprawki do tego artykułu. ps. nie ma tutaj wiadomo : co zrobić jeśli nie działa mi ..... i pisze .... ale jeżeli coś nie funkcjonuje poprawnie to proponuje napisać co i jak ( opis problemu ) a ja dołącze do tego tematu możliwe rozwiązanie o ile będe wiedział w czym problem a jeżeli nie będe wiedział to mam nadzieje że dojdziemy do rozwiązania wspólnie na forum Serwery www => Apache pozdrawiam, Artur Kwiatkowski alias Fo Ten post edytował nospor 4.02.2006, 22:28:25 |
|
|
26.07.2005, 19:27:02
Post
#2
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 15.07.2005 Ostrzeżenie: (0%) |
standartowy skrypt startowy przy instalacji z rpm'a (u mnie dziala)
odpalanie mysqla (prostrze rozwiazanie ponizej skryptu) Kod #!/bin/sh # Copyright (c) 1995-2002 SuSE Linux AG Nuernberg, Germany. # # Author: Lenz Grimmer <feedback@suse.de> # # /etc/init.d/mysql # # and its symbolic link # # /usr/sbin/rcmysql # ### BEGIN INIT INFO # Provides: mysql # Required-Start: $network $remote_fs # Required-Stop: # Default-Start: 2 3 5 # Default-Stop: # Description: Start the MySQL database server ### END INIT INFO # Shell functions sourced from /etc/rc.status: # rc_check check and set local and overall rc status # rc_status check and set local and overall rc status # rc_status -v ditto but be verbose in local rc status # rc_status -v -r ditto and clear the local rc status # rc_failed set local and overall rc status to failed # rc_failed <num> set local and overall rc status to <num> # rc_reset clear local rc status (overall remains) # rc_exit exit appropriate to overall rc status . /etc/rc.status # First reset status of this service rc_reset # Return values acc. to LSB for all commands but status: # 0 - success # 1 - generic or unspecified error # 2 - invalid or excess argument(s) # 3 - unimplemented feature (e.g. "reload") # 4 - insufficient privilege # 5 - program is not installed # 6 - program is not configured # 7 - program is not running # # Note that starting an already running service, stopping # or restarting a not-running service as well as the restart # with force-reload (in case signalling is not supported) are # considered a success. # Test, if mysqld or mysql-max actually exist unset MYSQLD if test -x /usr/sbin/mysqld-max then MYSQLD=/usr/sbin/mysqld-max elif test -x /usr/sbin/mysqld then MYSQLD=/usr/sbin/mysqld fi test "$MYSQLD" || { echo "Nor /usr/sbin/mysqld nor /usr/sbin/mysqld-max exists"; rc_failed 5; rc_status -v; rc_exit; } # The following section has been taken from # the original MySQL init script basedir=/usr datadir=/var/lib/mysql mysql_daemon_user=mysql mysql_daemon_group=mysql pid_file=/var/lib/mysql/mysqld.pid socket=/var/lib/mysql/mysql.sock MYADMIN=/usr/bin/mysqladmin if test -z "$basedir" then basedir=/usr bindir=/usr/bin else bindir="$basedir/bin" fi if test -z "$pid_file" then pid_file=$datadir/`/bin/hostname`.pid else case "$pid_file" in /* );; * ) pid_file="$datadir/$pid_file";; esac fi mode=$1 # start or stop parse_arguments() { for arg do case "$arg" in --basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'`;; --datadir=*) datadir=`echo "$arg" | sed -e 's/^[^=]*=//'`;; --pid-file=*) pid_file=`echo "$arg" | sed -e 's/^[^=]*=//'`;; --socket=*) socket=`echo "$arg" | sed -e 's/^[^=]*=//'`;; esac done } # Get arguments from the my.cnf file, groups [mysqld] and [mysql_server] if test -x ./bin/my_print_defaults then print_defaults="./bin/my_print_defaults" elif test -x $bindir/my_print_defaults then print_defaults="$bindir/my_print_defaults" elif test -x $bindir/mysql_print_defaults then print_defaults="$bindir/mysql_print_defaults" else # Try to find basedir in /etc/my.cnf conf=/etc/my.cnf print_defaults= if test -r $conf then subpat='^[^=]*basedir[^=]*=\(.*\)$' dirs=`sed -e "/$subpat/!d" -e 's//\1/' $conf` for d in $dirs do d=`echo $d | sed -e 's/[ ]//g'` if test -x "$d/bin/my_print_defaults" then print_defaults="$d/bin/my_print_defaults" break fi if test -x "$d/bin/mysql_print_defaults" then print_defaults="$d/bin/mysql_print_defaults" break fi done fi # Hope it's in the PATH ... but I doubt it test -z "$print_defaults" && print_defaults="my_print_defaults" fi parse_arguments `$print_defaults $defaults mysqld mysql_server` # Safeguard (relative paths, core dumps..) cd $basedir case "$1" in start) # exit gracefully, if we are already running checkproc $MYSQLD && echo -n "Starting service MySQL" && \ rc_status -v && rc_exit # Test, if safe_mysqld actually exists SAFE_MYSQLD=/usr/bin/mysqld_safe test -x $SAFE_MYSQLD || { echo "$SAFE_MYSQLD does not exist"; rc_failed 5; rc_status -v; rc_exit; } # check for ISAM tables tables=`find $datadir -name '*.ISM' | sed "s@$datadir/*@@; s@.ISM@@; s@/@.@;"` if test "$tables"; then echo echo "Some tables still use ISAM format, please convert them to something" echo "better (eg. MyISAM). ISAM support will be dropped in future releases." echo "You can use mysql_convert_table_format script to do this conversion." echo echo "Tables using ISAM are:" echo " $tables" echo fi # this file was used in past, but it's batter to place it youtside database directory if test -f $datadir/mysql/stamp-4.1; then rm $datadir/mysql/stamp-4.1 fi # We assume a fresh install if the directory $datadir/mysql # does not exist and create the privilege database if test ! -f $datadir/update-stamp-4.1; then echo "Creating/Updating MySQL privilege database..." mysql_install_db --user=$mysql_daemon_user || rc_failed echo "Fixing privilege tables..." (echo 'USE mysql;'; cat /usr/share/mysql/mysql_fix_privilege_tables.sql) \ | sed '/^---\? /D; s/#.*//; s/;$/#/' | tr '\n' ' ' | tr '#' '\n' \ | /usr/sbin/mysqld \ --bootstrap \ --skip-innodb \ --skip-bdb \ --skip-grant-tables \ --user=$mysql_daemon_user \ --pid-file=$pid_file \ --socket=$socket \ --datadir=$datadir 2>/dev/null touch $datadir/update-stamp-4.1 # Fix ownerships and permissions for $datadir chmod 755 $datadir chown -R $mysql_daemon_user.$mysql_daemon_group $datadir fi echo -n "Starting service MySQL" $SAFE_MYSQLD \ --user=$mysql_daemon_user \ --pid-file=$pid_file \ --socket=$socket \ --datadir=$datadir &>/dev/null & for((i=0; i<50; i++)); do sleep 0.2 test -S $socket && i='' && break done test -z "$i" || rc_failed # Rmember status and be verbose rc_status -v ;; stop) echo -n "Shutting down service mysql" killproc -p $pid_file -TERM $MYSQLD # Remember status and be verbose rc_status -v ;; try-restart) ## Stop the service and if this succeeds (i.e. the ## service was running before), start it again. ## Note: try-restart is not (yet) part of LSB (as of 0.7.5) $0 status >/dev/null && $0 restart # Remember status and be quiet rc_status ;; restart|force-reload) echo "Restarting service MySQL" $0 stop $0 start rc_status ;; reload) echo -n "Reloading service MySQL" killproc -p $pid_file -HUP $MYSQLD touch $pid_file rc_status -v ;; check|status) echo -n "Checking for service MySQL: " ## Check status with checkproc(8), if process is running ## checkproc will return with exit status 0. # Status has a slightly different for the status command: # 0 - service running # 1 - service dead, but /var/run/ pid file exists # 2 - service dead, but /var/lock/ lock file exists # 3 - service not running # NOTE: checkproc returns LSB compliant status values. checkproc $MYSQLD rc_status -v ;; *) echo "Usage: $0 {start|stop|status|reload|restart|try-restart|force-reload}" exit 1 ;; esac rc_exit # vim: ft=sh ale prosciej stworzyc wlasny skrypt startujacy baze robisz Cytat # touch /etc/rc.d/MsqlApaczeStart # echo '/usr/local/mysql/bin/mysqld_safe &' >> /etc/rc.d/MsqlApaczeStart # echo '/usr/local/apache2/bin/apachectl startssl' >> /etc/rc.d/MsqlApaczeStart i potem w podkatalogach /etc/rc.d/rc.3 (konsola multiuser) i /etc/rc.d/rc.5 (xwindow multiuser) tworzysz symlinki o nazwie S16mysqlap Cytat # ln -s /etc/rc.d/MysqlApaczeStart /etc/rc.d/rc.3/S16mysqlap # ln -s /etc/rc.d/MysqlApaczeStart /etc/rc.d/rc.5/S16mysqlap tak prosty skrypcik zadba o odpalenie apacza i mysqla gdy system bedzie dzialal na 3 lub 5 lvlu nie wylaczy ich jednak przy zmianie lvlu serwisy trzeba zatrzymac recznie lub lekko zmienic skrypcik i dodac symlinki z litera K na poczatku do wyzej wymienionych katalogow (cyfry po S i K w symlinkach okreslaja w jakiej kolejnosci dane symlinki sa przetwarzane przy wejsciu na dany lvl (S) lub jego opuszczeniu (K) jesli na lvlu ktory opuszczamy i na tym na ktory przechodzimy wystepuje symlink z SXXnazwa to nic nie jest robione podczas zmiany lvlu standartowo powinny tez byc symlinki do zatrzymywania uslug ale bez nich tez powinno dzialac jak cos moge wstawic oryginalny skrypt od startowania apacza ale jest on powiazany z kilkoma innymi ktorych raczej nie bedziesz mial jesli kompilowales apacza ze zrodel lub zmodyfikowany ten minimalny zeby zatrzymywal uslugi Ten post edytował popo 26.07.2005, 19:29:33 |
|
|
Wersja Lo-Fi | Aktualny czas: 1.11.2024 - 00:06 |