Konvertera en dynamisk webbplats PHP-MySQL till vanlig HTML
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! :-)