Skapa en subdomän med One.com och Apache2

Jag bestämde mig för testa att skapa subdomäner på One.com, för att jag ibland vill testa något som jag vill visa för någon annan. Då kan en subdomän till den jag har vara en snabb lösning för detta. Tex http://kund-foretaget.ripop.se för att visa en layout för en kund som heter ”KundFöretaget” eller något liknande.

På egen server

Jag började med att kopiera en av de befintliga filerna under sites-available, till det nya namnet.

cd /etc/apache2/sites-available/
cp original kund-foretaget

Därefter ändrade jag där jag tyckte att det kunde behövas. Filen kund-foretaget såg då ut enligt nedan, där ändringar är fet-stilade. Tänk på att rader kan sidbrytas (Edit 2015-08-19 – uppmärksamma att eventuellt byte av tema kan ändra detta):

<VirtualHost *:80> 
        ServerAdmin webmaster@localhost 
 
        ServerName kund-foretaget.ripop.se 
 
        DocumentRoot /home/kund-foretaget/public_html/ 
        <Directory /> 
                Options FollowSymLinks 
                AllowOverride None 
        </Directory> 
        <Directory /home/kund-foretaget/public_html/> 
                Options Indexes FollowSymLinks MultiViews 
                AllowOverride FileInfo 
                Order allow,deny 
                allow from all 
        </Directory> 
 
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
        <Directory "/usr/lib/cgi-bin"> 
                AllowOverride None 
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
                Order allow,deny 
                Allow from all 
        </Directory> 
 
        ErrorLog ${APACHE_LOG_DIR}/kund-foretaget.error.log 
 
        # Possible values include: debug, info, notice, warn, error, crit, 
        # alert, emerg. 
        LogLevel warn 
 
        CustomLog ${APACHE_LOG_DIR}/kund-foretaget.access.log combined 
</VirtualHost>

För att aktivera denna ”site” körde jag:

a2ensite kund-foretaget

Förutom detta är så klart tillägget (modulen) i Apache som gör det möjligt för en användare att publicera på webben via en mapp som tex ”/home/kund-foretaget/public_html/”. Den kan man lägga till med kommandot a2enmod.

På One.com

Ändring som krävdes på One.com var att lägga till en post i Webb-DNS:

Domän: kund-foretaget
Typ: A
Värde: IP-nummer till server jag använde

Omstart av Apache krävdes så klart.

Det var enklare än jag väntat mig. Självklart är det en del som inte tas upp här.

Installation av Cinnamon saknar ikoner

Under test av lite olika skrivbordsmiljöer (Desktop Environments) som KDE, Cinnamon, Mate mm, upptäcker jag att Cinnamon saknar några olika ikoner i menyn. Logga ut, låsa skärmen och stänga av datorn saknade alla ikoner.

I VirtualBox kör jag för denna test Ubuntu i grunden, kanske det är den som stör.

Snabbt hittar jag en lösning genom att söka på nätet.
http://askubuntu.com/questions/386835/cinnamon-icons-dont-appear

sudo apt-get install gnome-icon-theme-full

Letar man bara på nätet så hittar man alltid något som hjälper en, speciellt om man kan engelska.

Montera mapp i KUbuntu mot Synology DS 212J

Efter en uppdatering av KUbuntu från 14.10 till 15.04 som inte fungerade så bra tappade fungerade inte längre monteringen av mapp mot min NAS. Till slut hittade jag en lösning som fungerar. Jag har bytt från ”cifs” till ”nfs” och hoppas att det är ett bra val, det verkar hur som helst fungera.

På NAS:en ställde jag in aktivering av nfs enligt Synologys forum, som förklarar på ett bra sätt. I stort sätt gå in i fil-tjänster (File Services) och aktivera NFS-tjänst. Därefter gå in i delade mappar (Shared Folder) och lägg till vad som ska delas ut. Inställningar jag gjorde för utdelad mapp är enligt forumet, IP-nätverk enligt vad jag har hemma (tex 192.168.0.1/24, mitt är annat). Ingen mappning med Squash. Och till slut så aktiverade jag asynkron överföring (asynchronous).

På klienten har jag installerat stöd för NFS så klart, kommer inte ihåg vilken sida jag kollade för detta. Men den jag kollade för att göra inställnigar för fstab-filen är följande länk.

sudo apt-get install nfs-common

På min klient har jag även uppdaterat hosts-filen (/etc/hosts) med en notering till min NAS. Filen fstab (/etc/fstab) har även den uppdaterats för att möjliggöra montering av mappen vid uppstart av datorn, enligt nedan.

nfs-server:/volume1/backup /mnt/backup nfs auto 0 0

nfs-server är som sagt skapad i /etc/hosts och /volume1/backup är den mapp som delats ut på min NAS och /mnt/backup är den mapp jag skapat lokalt på klienten som kopplas till NAS-mappen. nfs anges för att det är det formatet som NAS:en delar ut på, och ”auto 0 0” för att det fungerar. Det finns säkert bättre inställningar, men för nu så kör jag på dessa.

Problem med brandvägg

Stötte på ett problem på en burk jag har brandvägg på. Synology använder portarna 111,892,2049 (tcp/udp) som jag var tvungen att öppna i brandväggen.

Att börja utveckla en komponent till Joomla 3.x

Hur jag tycker att man ska ta sina första steg, i dagsläget vill säga. Självklart kan mina åsikter ändras om ny kunskap dyker upp.

Syftet med detta inlägg är att beskriva hur jag sätter upp en enkel miljö för att utveckla en komponent till Joomla 3.x. Jag kommer att döpa komponenten till ”test”.

Verktyg jag använder i detta inlägg

  • Joomla installerad på lokal dator (~user/) (version Joomla! 3.4.1 – 2015-03-24)
  • Apache 2.4.10
  • Netbeans (version 8.0.2 – 2015-03-24)
  • Firefox (version 36.0.1)
  • Joomlas dokumentation – den är bra, bara man kommer förbi första tröskeln

Det viktiga här är att man installerar Joomla på den egna datorn och inte försöker jobba direkt mot en server. Självklart kan man säkert göra det också, men för att beskriva de första stegen tycker jag att man ska ha Joomla installerad på sin egen dator. Detta kräver så klart att man har en webb-server installerad på sin dator.

Att installera webb-server och andra nödvändigheter kommer inte att beskrivas i detta inlägg.

Bakgrund

Det har tagit mig ett tag att förstå vad jag håller på med, längre tid än jag vill erkänna. Jag har försökt följa Joomlas egen dokumentation om hur man skapar en komponent.

De första stegen som beskrivs där man ska skriva in en url för att se innehållet i en enkel text-fil, dessa fungerade aldrig för mig. I alla fall från början var det omöjligt att få dessa att fungera. Efter mycket experimenterande och flera tillfällen av att ge upp, så lyckades jag till slut hitta rätt genom att läsa ett svar på följande länk. Att lägga till XML-filen anger en person är lösningen. Vad som inte nämns är att det räcker om det finns en XML-fil i någon av ”componen”-mapparna, antingen under ”site” eller ”site/administration”. ”site” är den mapp där själva Joomla finns. Hur det ser ut visar jag nedan och du får så klart byta ut det jag angett med vinkel-parenteser före ”/administrator/..” till hur det ser ut för just din installation av webbserver och Joomla.

URLen som man kan testa om komponenten fungerar kommer att se ut som enligt nedan. Detta inlägg kommer bara att visa på vad som behövs för den administrativa delen.

<joomla-site>/administrator/index.php?option=com_test

Första filerna till komponenten test

I mappen där du har Joomla installerad hittar du en mapp som heter ”administrator”, därunder hittar du mappen ”components”. I mappen ”components” ska vi skapa en mapp som heter ”com_test” och några filer som jag beskriver i en träd-struktur nedan.

  • com_test
    • test.php
    • test.xml
    • index.html

Mappen börjar med ”com_” för att det är en komponent som jag beskriver, du kan se att alla andra mappar i ”administrator” också börjar med ”com_”.

Innehållet i test.php kan vi för tillfället skriva vad som helst. Jag rekommenderar något i stil med nedan.

test.php

Detta är test.php som finns i mappen ../site/administrator/component/com_test"

Innehållet i index.html är en platshållare som är samma i alla mappar. I alla fall vad jag har kunnat förstå. Det finns säkert något tillfälle då ett annorlunda innehåll skulle kunna vara av värde, men för nu så ser innehållet ut enligt nedan.

index.html

<html><body bgcolor="#FFFFFF"></body></html>

Nu kommer vi till en fil som har lite mer krav på hur den ser ut, nämligen test.xml. Det är en fil som beskriver vad komponenten innehåller, vad den är och en hel del andra saker beroende på dig som utvecklare. Jag ska visa en enkel version som är till för att komma igång. Se gärna Joomlas dokumentation enligt länken tidigare i dokumentet.

test.xml

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.2.0" method="upgrade">

    <name>test</name>
    <!-- Följande elemet är valfria, och har inga formaterings-begränsningar -->
    <creationDate>Mars 2015</creationDate>
    <author>Rickard Persson</author>
    <authorEmail>dummy@exempel.com</authorEmail>
    <authorUrl>exempel.com</authorUrl>
    <copyright>Copyright Info - test</copyright>
    <license>License Info - test</license>
    <!--  Versions-strängen registrerars i komponent-tabellen -->
    <version>0.0.1</version>
    <!-- Beskrivningen är valfri och är default samma som namnet -->
    <description>Beskrivning av test, en första genomgång</description>

    <administration>
        <!-- Administration Menu Section -->
        <menu link='index.php?option=com_test'>test</menu>
        <!-- Administration Main File Copy Section -->
        <!-- Note the folder attribute: This attribute describes the folder
            to copy FROM in the package to install therefore files copied
            in this section are copied from /admin/ in the package -->
        <files folder="admin">
            <!-- Admin Main File Copy Section -->
            <filename>index.html</filename>
            <filename>test.php</filename>
        </files>
        
        
    </administration>

</extension>

Jag har valt att inte översätta kommentarerna för administrations-avsnittet, då det finns risk att jag översätter så att det blir ännu svårare att förstå.

Vad som denna fil säger är att det är en ”komponent” då typen anger detta, dessutom vet vi att komponenten heter ”test” som kommer att genomsyra hela projektet och många av de klasser och filer som ska döpas enligt riktlinjer som har med PHP och Joomla att göra.

Vi kan även se att det finns två filer som är kopplade till administration.

 Aktivera den ”nya” komponenten

Om vi nu försöker att se vad filerna innehåller genom Joomla genom länken som jag angav tidigare och repeterar här så kommer det inte fungera. Vi kommer att få ett felmeddelande som säger att sidan saknas.

<joomla-site>/administrator/index.php?option=com_test

Så vad behöver vi göra? Jo, vi måste in i administrationen för Joomla-siten och in i ”Extention manager” där vi väljer meny-alternativet ”Discover”. Där klickar vi på knappen ”Discover” för att Joomla ska läsa av XML-filen som vi lade upp i mappen ”../administrator/components/com_test/”. När Joomla hittar komponenten så får vi alternativet att installera komponenten, och det ska vi göra. Därefter kan vi hitta komponenten under meny-alternativet ”Components”, och väljer vi där komponenten vi precis har installerat så kommer vi att se innehållet i den PHP-fil som vi tidigare har skapat.

Börja skriva koden

Nu när komponenten finns aktiverad i Joomlas system är det bara att fortsätta att skapa och ändra i koderna. Och vi behöver inte hålla på med att installera/uppdatera komponenten bara för att vi gör någon liten ändring, det är bara att uppdatera webbläsaren med en page-reload.

Vad kommer sedan

Något jag kommer försöka lära mig att förstå är hur jag bäst ska hantera debugging när jag utvecklar till Joomla. Det finns några alternativ som jag ska titta närmare på, och ska försöka återkomma om det.

Det är nämligen rätt vanligt att man möts av en helt blank sida och man har ingen aning om var i koden felet har sitt ursprung, så någon typ av debugging-hantering är nödvändig för att klara av att hantera alla de tillfällen då man skriver en kod som är en bit från att vara perfekt. Men det är i ett annat inlägg.

Jag hoppas att detta gör det lättare att komma igång med Joomlas egen beskrivning av utveckling av en enkel MVC-komponent.

ClamAV och kolla loggar efter borttaget

I år tog jag tag i att installera ClamAV för att kolla om det finns mycket skräp som jag behöver oroa mig över i min mail-låda. Mycket av skräpet är sådant som inte fastnar i ett system som ClamAV, så jag hoppades på att det skulle vara rätt så lugnt. Men jag hade i alla fall tron att något skulle dyka upp som var skadligt. Under flera månaders tid har jag haft ögonen öppna efter något som skulle visa på att det fastnat något i nätet, men fiskelyckan har lyst med sin frånvaro.

Idag började jag kolla på nätet efter sätt att undersöka loggar, om det är så att inget dyker upp pga felaktiga inställningar i loggarna. Till slut hittade jag ett kommando som gör det enkelt att få fram det jag söker efter.

zgrep -i "FOUND" /var/log/clamav/*

Zgrep för att de flesta av log-filerna är packade.