Konvertera en dynamisk webbplats PHP-MySQL till vanlig HTML

Från FBNwiki
Hoppa till: navigering, sök

Ibland kan behovet av att t ex arkivera en dynamisk webbplats som är beroende av en webbserver till vanlig HTML som man kan komma åt lokalt på en dator eller som en arkivundermapp på en hemsida. Nedan exempel gäller enbart för skriptspråket PHP och databasmotorn MySQL vilket är mycket vanligt förekommande på webbhotell idag. Denna guide skapades utefter ett behov att arkivera en webbplats som byggde på Joomla 1.0 men som inte längre fungerade då webbhotellet uppgraderat PHP till version 5.3 och inga resurser eller tid fanns att migrera webbplatsen till en nyare version av Joomla som fungerar med nyare PHP, samt att inga behov för att uppdatera sajten fanns. Denna guide borde fungera på vilket CMS som helst men är enbart testat i Joomla 1.0.11.


Konvertera dynamisk webbplats till HTML - steg 1: Installera server lokalt

Installera Apache2/PHP5/MySQL/phpMyAdmin på en dator med Ubuntu 10.04 Lucid. I en terminal:

sudo apt-get install mysql-client mysql-server apache2 php5 \
 libapache2-mod-php5 php5-mysql libapache2-mod-php5 php5-xsl \
 php5-gd php-pear php5-mysql php5-curl php5-memcache phpmyadmin

Starta upp Apache

sudo /etc/init.d/apache2 restart

och därefter kontrollera så att du har sidan "It works!" på http://localhost/

Skriv nedan kommando

sudo echo '<?php phpinfo(); ?>' > /var/www/phpinfo.php

och se så att PHP funkar på adressen http://localhost/phpinfo.php

Vi har nu PHP 5.3.2. Nu är problemet att Joomla 1.0 inte fungerar i denna version (utan handpåläggning). Därför måste vi nergradera PHP till version 5.2 där Joomla fungerar. Om detta inte är ett problem så gå till steg 2 nedan.

sudo gedit /etc/apt/sources.list.d

och lägg till detta och spara:

# deb cdrom:[Ubuntu 10.04 LTS _Lucid Lynx_ - Release amd64 (20100429)]/ karmic main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.

deb http://us.archive.ubuntu.com/ubuntu/ karmic main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://us.archive.ubuntu.com/ubuntu/ karmic-updates main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://us.archive.ubuntu.com/ubuntu/ karmic universe
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic universe
deb http://us.archive.ubuntu.com/ubuntu/ karmic-updates universe
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu 
## team, and may not be under a free licence. Please satisfy yourself as to 
## your rights to use the software. Also, please note that software in 
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://us.archive.ubuntu.com/ubuntu/ karmic multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic multiverse
deb http://us.archive.ubuntu.com/ubuntu/ karmic-updates multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic-updates multiverse

## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://us.archive.ubuntu.com/ubuntu/ karmic-backports main restricted universe multiverse
# deb-src http://us.archive.ubuntu.com/ubuntu/ karmic-backports main restricted universe multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu karmic partner
# deb-src http://archive.canonical.com/ubuntu karmic partner
 
deb http://security.ubuntu.com/ubuntu karmic-security main restricted
deb-src http://security.ubuntu.com/ubuntu karmic-security main restricted
deb http://security.ubuntu.com/ubuntu karmic-security universe
deb-src http://security.ubuntu.com/ubuntu karmic-security universe
deb http://security.ubuntu.com/ubuntu karmic-security multiverse
deb-src http://security.ubuntu.com/ubuntu karmic-security multiverse

Lägg till /etc/apt/preferences.d/php

sudo gedit /etc/apt/preferences.d/php

med nedan innehåll och spara

Package: php5
Pin: release a=karmic
Pin-Priority: 991

Package: php5-gd
Pin: release a=karmic
Pin-Priority: 991

Package: php5-common
Pin: release a=karmic
Pin-Priority: 991

Package: php5-curl
Pin: release a=karmic
Pin-Priority: 991

Package: php5-mysql
Pin: release a=karmic
Pin-Priority: 991

Package: php5-pear
Pin: release a=karmic
Pin-Priority: 991

Package: php5-xsl
Pin: release a=karmic
Pin-Priority: 991

Package: php-pear
Pin: release a=karmic
Pin-Priority: 991

Package: php5-cli
Pin: release a=karmic
Pin-Priority: 991

Package: php5-memcache
Pin: release a=karmic
Pin-Priority: 991

Package: php5-pgsql
Pin: release a=karmic
Pin-Priority: 991

Package: php-apc
Pin: release a=karmic
Pin-Priority: 991

Package: php5-xmlrpc
Pin: release a=karmic
Pin-Priority: 991

Package: libapache2-mod-php5
Pin: release a=karmic
Pin-Priority: 991

Package: php5-mcrypt
Pin: release a=karmic
Pin-Priority: 991

Kör en rad åt gången:

sudo apt-get update
sudo apt-get remove php5 libapache2-mod-php5 php5-xsl php5-gd php-pear php5-mysql php5-curl php5-memcache phpmyadmin
sudo apt-get install php5 libapache2-mod-php5 php5-xsl php5-gd php-pear php5-mysql php5-curl php5-memcache phpmyadmin

Starta om apache igen:

sudo /etc/init.d/apache2 restart

Kontrollera att vi nu har PHP 5.2.10 på adressen http://localhost/phpinfo.php

Konvertera dynamisk webbplats till HTML - Steg 2: Få upp sajten lokalt

Nu är det dax att lägga upp sajten lokalt och få igång den. För att göra saker och ting lite enklare så ge dig själv som användare direkta skrivrättigheter till apaches dokument-root-mapp:

sudo chown -R $USER.$USER /var/www/

Om du inte redan gjort det så gör först en sql-dump av din databas från sajten du vill konvertera genom t ex webbhotellets phpMyAdmin under fliken Exportera och ladda hem som fil (t ex minsajt.sql). Gå sedan till http://localhost/phpmyadmin/ och skapa en ny databas, t ex minsajt och importera SQL-filen till denna. Om databasen är större än 2 MB så kan det vara ett tips att komprimera sql-filen och ladda upp det den packade filen, eller ändra /etc/php5/apache2/php.ini. Skapa sedan en undermapp som t ex /var/www/minsajt/ och kopiera sajtens alla filer dit. Modifiera configuration.php eller motsvarande så att det stämmer överens med dina lokala inställningar, t ex:

$mosConfig_absolute_path = '/var/www/minsajt';
$mosConfig_cachepath = '/var/www/minsajt/cache';
$mosConfig_db = 'minsajt';
$mosConfig_live_site = 'http://localhost/minsajt';
$mosConfig_password = 'mitt_lokala_root_lösen_som_jag_satte_när_jag_installerade__mysql_lokalt';
$mosConfig_user = 'root';

Testa så allt funkar på http://localhost/minsajt/ och tänk på att logga in som admin och stänga av alla "dynamiska" saker som inte kommer att fungera som vanlig html, som t ex sök, inloggningsrutor, formulär etc. Ett tips är att lägga till en sökruta som använder sig av Google med träffar på din egna sida eller en enklare lösning med Google.

Konvertera dynamisk webbplats till HTML - Steg 3: Skapa html-sidorna

Nu har vi till sist kommit till steget att skapa HTML-sidor av din dynamiska webbplats. Skapa en undermapp i din hemkatalog som vi här kallar html_minsajt. Öppna en terminal:

cd html_minsajt

wget --recursive \
     --no-clobber \
     --page-requisites \
     --html-extension \
     --convert-links \
     --restrict-file-names=ascii \
     --domains localhost \
     --no-parent \
     --wait=1 \
     http://localhost/minsajt/

Flaggan --wait=1 är till för att inte överbelasta webbservern men kan tas bort om du har brått men med ovisst resultat, eller ännu hellre ökas värdet om du kör mot en extern server ute på nätet och inte vill bli svartlistad pga att man ladda ner en sajt för "intensivt" och på kort tid. Du kan även "maskera" wget som en välkänd webbläsare om du ska köra externt och problem uppstår, med flaggan --user-agent=agent-string.

När wget är klar bör du ha en hel del html-sidor i mappen om allt gått som det ska.

Nu ska vi fixa till alla sökvägar i alla de nyskapade html-sidorna med ett Perl-kommando:

perl -pi -w -e 's/http\:\/\/localhost\/minsajt\//\.\.\//g' *.html

Observera att alla specialtecken måste ha en backslash framför sig. Om du vill att förstasidan ska heta index.html så döp då om denna från t ex index.php.html och ändra sedan i alla sidor med detta Perl-kommando:

perl -pi -w -e 's/index\.php\.html/index\.html/g' *.html

Om du har mellanslag i filnamnen så byt först ut dessa till plus-tecken:

rename 's/ /+/g' *.html

och sedan ändra i alla html-sidor:

perl -pi -w -e 's/\&\#32\;/\%2B/g' *.html

Vidare kan man byta ut t ex svenska tecken:

# Ersätt alla å (%E5) i alla dokument och filnamn till aa:

rename 's/\%E5/aa/g' *.html

perl -pi -w -e 's/\%E5/aa/g' *.html

# Ersätt alla ä i alla dokument och filnamn till ae:

rename 's/\ä/ae/g' *.html

perl -pi -w -e 's/\ä/ae/g' *.html

# Ersätt alla ö i alla dokument och filnamn till oe:

rename 's/\ö/oe/g' *.html

perl -pi -w -e 's/\ö/oe/g' *.html

Till sist lär manuell korrigering behövas såsom sidor som saknar tilläggsnamnet .html vilket är typiskt om mellanslag finns i namnet. Men förhoppningsvis ska inte detta vara för mycket!

Mer tips om att ändra många filer i en mapp med kommandon finns här och här.


Lycka till! :-)

Personliga verktyg
Namnrymder
Varianter
Åtgärder
Navigering
Verktygslåda