.: Wersje do pobrania :. Sposób instalacji programów na serwerach z systemem operacyjnym Linux

Tematy powiązane

Ściągnij programy

Przykładowe certyfikaty SSL

Biblioteki

Dowiedz się o

FastCGI (fcgi)
Interfejs programistyczny zwiększający szybkość oraz zapewniający lepszą skalowalność aplikacji internetowych opartych o technologię CGI (Common Gateway Interface). Zasada działania polega na tym, że w odróżnieniu od CGI, gdzie dla każdego zapytania uruchamiany był od nowa skrypt, który po jego obsłużeniu kończył pracę, tu mamy jeden proces (lub wiele procesów) pracujący w sposób ciągły. Po obsłużeniu zapytania oczekują one na kolejne, nie kończąc pracy.

Proxy
Serwer pośredniczący (ang. proxy) - oprogramowanie lub serwer z odpowiednim oprogramowaniem, które dokonuje pewnych operacji w imieniu użytkownika. Użytkownik zleca pośrednikowi zadania za pomocą odpowiedniego klienta. W wypadku usług FTP i HTTP jest to klient FTP i przeglądarka internetowa. Obok tych popularnych rozwiązań znane są także inne, jak np. pośredniki (proxy) aplikacyjne, transferujące zapytania aplikacji, w istocie pełni ono funkcję oprogramowania pośredniczącego i realizuje "trasowanie zależne od danych".

Apache
Apache jest najszerzej stosowanym serwerem HTTP w Internecie. Jego cechy i obsługiwane moduły:

Lighttpd
Lighttpd (wym. lighty) to lekki serwer HTTP przeznaczony do pracy pod dużym obciążeniem. Potrafi współpracować z interpreterami różnych języków skryptowych (PHP, Ruby, Python itd.). W przeciwieństwie do Apache'a, nie ma tutaj modułów serwera, lecz cała komunikacja odbywa się tylko i wyłącznie za pośrednictwem CGI lub FastCGI. Interpreter pracuje tutaj jako osobny proces, który komunikuje się z serwerem za pośrednictwem protokołu TCP lub socketów. Ponadto możliwe jest wykonywanie skryptów na prawach ich właścicieli.

SSL
SSL (Secure Socket Layer) jest protokołem typu klient-serwer pozwalającym na nawiązanie bezpiecznego połączenia z użyciem certyfikatów. Jest on zorientowany głównie na uwierzytelnianie serwera (np. sklepu internetowego, do którego klient wysyła numer karty kredytowej i chce mieć pewność co do odbiorcy), ale przewiduje również możliwość autoryzacji klienta.

[źródło: Wikipedia]

Spis treści

  1. Integracja z domyślnym serwerem HTTP (via FastCGI)

  2. Uruchamianie programu jako samodzielny program HTTP

  3. Transmisja szyfrowana SSL

  4. Skrypty do programu

    • Stop Madar Mobile
    • Aktualizacja i start Madar Mobile
  5. Problemy mogące wystąpić przy uruchamianiu Madar Mobile


Integracja z domyślnym serwerem HTTP (via FastCGI)

Uruchomienie programu jako samodzielny serwer HTTP (via FastCGI):

./madarmobile -d -fcgi PORT 2000

Wpisanie polecenia spowoduje, że program będzie działał jako deamon (praca w tle), przełącza się w tryb Fastcgi i będzie słuchał na porcie 2000. Jeżeli nie zostanie podany parametr PORT - program domyślnie uruchomi się na porcie 8001. Istnieje możliwość uruchomienia aplikacji na porcie 80 - czytaj więcej...

Konfiguracja serwera Lighttpd


## read proxy.txt for more info w katalogu proxy
proxy.debug = 1
proxy.server = ( "/proxy/" =>
( "localhost" =>
(
"host" => "127.0.0.1",
"port" => 8001
)
)
)

Konfiguracja serwera Apache

Integracja programu mobilnego z serwerem Apache umożliwia działanie programu na porcie 80. Rozwiązanie to jest wykonane w oparciu o fcgi. Należy wpierw odpowiednio skonfigurować serwer Apache tzn. dopisać do pliku konfiguracyjnego Apache w katalogu \etc\apache\vhosts.d\plik.conf niżej prezentowany fragment tekstu.

<"VirtualHost :80">
ServerName invoicer.pl
DocumentRoot /var/www/invoicer.pl/htdocs

Dopisać rekord:
FastCgiExternalServer /var/www/invoicer.pl/htdocs/mobile -host 127.0.0.1:2000
<"/VirtualHost">

Skonfigurowany w ten sposób serwer umożliwia wykorzystywanie programu na porcie 80. Dostęp do programu jest możliwy po wpisaniu w przeglądarce adresu strony i http://www.adres-strony.pl/mobile.

Zobacz przykład zastosowania takiego rozwiązania - adres strony, z którą zintegrowano aplikację Invoicer Mobile: http://invoicer.pl. Aplikacja mobilna dostępna jest pod adresem http://invoicer.pl.

Skrypt uruchomienia programu

Skrypt uruchamiający program wykonuje się wpisując polecenie:

./madarmobile ## uruchomienie programu
./madarmobile -d ## uruchomienie programu jako deamon'a
./madarmobile -d PORT 8004 ## uruchomienie programu jako deamon'a na porcie 8004
./madarmobile -ssl ## uruchomienie aplikacji na SSL
./madarmobile -fcgi ## uruchomiemie programu na fcgi

Uruchamianie programu jako samodzielny program HTTP

W tym przypadku komunikacja odbywa się przez port 2000. Programy mobile muszą zostać uruchomione z parametrem "fcgi" oraz odpowiednio skonfigurowany serwer http obsługujący fcgi.

Wariant via proxy

Umożliwia zarządzanie programami mobile uruchomionych na różnych portach, np. 8001, 8002.

Transmisja szyfrowana SSL

Do wystawiania certyfikatów SSL można użyć darmowego oprogramowania http://www.openssl.org. Pierwszym krokiem jest zainstalowanie openssl:

./config
make
make install ## wykonać jako root

Następnie należy ustawić termin ważności certyfikatu dla jednostki certyfikującej większy niż 365 dni np. na 1024 dni:

edit /usr/local/ssl/misc/CA.sh
-out ${CATOP}/$CACERT $DAYS ## zmienić na:
-out ${CATOP}/$CACERT -days 1024

Generowanie certyfikatów i kluczy SSL

openssl genrsa -des3 -out cert.key 1024 ## Wpisać dane jednostki certyfikującej
openssl req -new -key cert.key -out CAcert.csr
openssl rsa -in cert.key -out WSSkey.key ## Jako'Common Name (eg, Your Name):' wpisać adres strony, dla której jest tworzony certyfikat
openssl req -new -x509 -days 1024 -key cert.key -out WSScert.crt


W systemie Windows do uruchomienia serwera na SSL niezbędne jest dołączenie bibliotek - ssl-lib.zip.
W systemie operacyjnym Linux należy skopiować pliki CAcert.csr, WSSkey.key, WSScert.crt do katalogu, w którym znajduje się madarmobile i zmienić ich rozszerzenia na *.pem. Uruchomić Madar Mobile z parametrem:


./madarmobile -ssl

SSL enable error

W przypadku, gdy podczas próby uruchomienia programu Madar Mobile z parametrem -ssl pojawia się SSL enable error należy zainstalować lib ssl:

apt-get install libssl0.9.8 ## instalacja
## oraz dodać linkowania
n -s /usr/lib/libssl.so.0.9.8 /usr/lib/libssl.so
ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.

Integracja serwera Apache z SSL

Istnieje możliwość pracy aplikacji mobilnej na porcie 80 z wykorzystaniem SSL. Wszystkie dane przesyłane pomiędzy klientem i programem będą wtedy zaszyfrowane. Należy dopisać do pliku konfiguracyjnego Apache i SSL - \etc\apache\vhosts.d\ssl.conf adres, pod którym znajduje się certyfikat i klucz publiczny wygenerowany dla strony internetowej. Wygląda to mniej więcej tak:

<"Virtual Host *:443">
ServerName invoicer.pl
DocumentRoot /var/www/invoicer.pl/https

FastCgiExternalServer /var/www/invoicer.pl/https/mobile -host 127.0.0.1:2000

SSLEngine on
SSLCertificateFile /etc/apache/ssl/nazwa-certyfikatu.crt
SSLCertificateKeyFile /etc/apache/ssl/nazwa-klucza.key
<"/VirtualHost">

Skrypty do programu

Zatrzymanie procesu Madar Mobile

#!/bin/bash
echo kill mobile $(date) >>mob.log
pid=`ps ax | awk '($5 ~ /madarmobile/) { print $1 }'`
echo $pid
echo try terminate
kill -15 $pid
sleep 2
echo $pid >>mob.log
kill -9 $pid

Start programu

cd /opt/madar/
echo $date
echo $(date) >> mob.log
./madarmobile -d PORT 8001 >>mob.log && echo start mobilka >> mob.log

Aktualizacja programu

#!/bin/bash
cd /bat
./mobile_stop
cd /opt/madar/bak
cp -f /opt/madar/bak/madarmobile.1 /opt/madar/bak/madarmobile.2 || echo "zle kopiowanie do madarmobile.2"
cp -f /opt/madar/bak/madarmobile /opt/madar/bak/madarmobile.1 || echo "zle kopiowanie do madarmobile.1"
rm /opt/madar/bak/madarmobile && echo "skasowano bak madarmobile"
wget emadar.eu/demo/madarmobile || exit
cd /bat

sleep 30
cp -f /opt/madar/bak/madarmobile /opt/madar/madarmobile
chmod 755 /opt/madar/madarmobile && echo "zmiana chmod madarmobile"
sleep 20
cd /bat
./mobile_start

Problemy, które mogą wystąpić przy uruchamianiu Madar Mobile:

Ubuntu x64 przy próbie uruchomienia madarmobile pojawia się komunikat:
nie ma takiego pliku
konieczne doinstalowanie pakietów ia32-libs - sudo apt-get install ia32-libs