Pelaajakortti

Taustaa

Pelaajakortti sovellus on tehty PHP:lla ja se on tehty PHP-peruskurssin lopputyöksi. Sovelluksella voi lisätä ja poistaa pelaajia tietokannasta, sekä hakea tietoja heistä. Sovelluksessa on  myös käytössä sessio sekä keksit (cookies).

Ohjelmointikielinä sovelluksessa on käytetty PHP:ta, SQL:ä, HTML:ä ja CSS:ä.

Toiminnot

Etusivulla haetaan kekseistä käyttäjän nimi  ja toivotetaan hänet tervetulleeksi sivustolle, jos käyttäjän nimi löytyy kekseistä.

Pelaajan lisäys sivulla voi tietokantaan syöttää uuden pelaajan tiedot. Lisättyjen pelaajien tiedot validoidaan ennen kuin ne lisätään tietokantaan. Jos jonkin kenttä on täytetty virheellisesti, sovellus antaa virheilmoituksen sen kentän kohdalle, joka on väärin. Annettuja tietoja ei poisteta täytetyistä kentistä ennen kuin pelaajan lisäys tietokantaan onnistuu tai käyttäjä painaa peruuta nappia.

Hae pelaaja sivulla voi hakea tietokannasta nimen perusteella tietyn pelaajan tiedot. Tyhjä haku hakee kaikki tietokannan pelaajat.

Poista pelaaja sivulla voi poistaa pelaajan tietoineen kannasta.

Asetukset sivulla voi vaihtaa käyttäjän nimeä.

Screenshotit

Capture1Capture3 Capture5 Capture4 Capture2  Capture

Palvelimen Suorituskyky

Teen tämän raportin osana Tero Karvisen kurssia Linux palvelimena. Harjoitus on tehty Live-CD:llä (Xubuntu 12.04.03).

Harjoitus on tehty koulusta saamallamme läppärillä (HP Elite Notebook 2560p).

http://terokarvinen.com/2013/aikataulu-%E2%80%93-linux-palvelimena-ict4tn003-9-ja-10-syksylla-2013

Tämällä viikolla käsittelemme harjoutuksessa:

  • Asenna WordPress ja tee siihen esimerkkisisältöä
  • Mittaa WP:n tehoa. Vertaile etusivun ja alasivujen nopeutta siihen, että tallennat saman sisällön staattiseksi. Analysoi mittaustulokset.
  • Asenna käänteisproxy. Kokeile, että dynaamiset ominaisuudet, kuten kommenttien jättö, toimivat edelleen. Mittaa ja analysoi tulokset. Vertaa tilanteeseen ilman käänteisproxya.

Asenna WordPress ja tee siihen esimerkkisisältöä

Ohjeet WordPressin asentamiseen ja esimerkkisisällön tekemiseen löytyy osoitteesta.

https://ramitahtinen.wordpress.com/2013/10/09/sisallonhallintajarjestelmat/

Mittaa WordPressin sivujen nopeutta

WordPressin sivujen nopeutta voi mitata apachen ApacheBench:llä. Kokeillaan miten 100 ihmisen yhtäaikainen päivitys pyyntö vaikuttaa sivujen nopeuteen. Ensimmäiseksi kokeillaan dynaamistasivua:

ab -c 100 -n 100 http://rambo.com/wprami/wordpress/|grep -P “Failed|#/sec|50%|100%|Length”

Document Length:        20625 bytes
Failed requests:        0
Requests per second:    20.96 [#/sec] (mean)
50%   2593
100%   4766 (longest request)

Kokeillaan tämän jälkeen staattista sivua. Ladataan sivu omaan kansioon public_html:n alle komennolla wget.

wget “http://rambo.com/wprami/wordpress/”

ab -c 100 -n 100 http://localhost/~rtahtinen/static/|grep -P “Failed|#/sec|50%|100%|Length”

Document Length:        20625 bytes
Failed requests:        0
Requests per second:    8464.53 [#/sec] (mean)
50%      6
100%      8 (longest request)

Seuraavaksi vuorossa on dynaaminen alasivu.

ab -c 100 -n 100 http://rambo.com/wprami/wordpress/2013/10/08/this-is-my-first-post/|grep -P “Failed|#/sec|50%|100%|Length”

Document Length:        28513 bytes
Failed requests:        0
Requests per second:    20.52 [#/sec] (mean)
50%   2916
100%   4870 (longest request)

Staattinen alasivu.

wget “http://rambo.com/wprami/wordpress/2013/10/08/this-is-my-first-post/”

ab -c 100 -n 100 http://localhost/~rtahtinen/static/alasivu|grep -P “Failed|#/sec|50%|100%|Length”

Document Length:        28513 bytes
Failed requests:        0
Requests per second:    7359.43 [#/sec] (mean)
50%      8
100%      8 (longest request)

Näin voimme todeta, että Staattiset sivut ovet moni satakertaisesti nopeampia kuin dynaamiset. Dynaamisilla sivuilla lataaminen kesti n. 3-4sekuntia ja staattisilla noin 10millisekuntia.

Käänteisproxyn asentaminen ja sen tuloksien vertaaminen

Aloitetaan tehtävä lataamalla varnish apt:lla. Sudo apt-get install varnish. Seuraavaksi laitetaan apache2 kuuntelemaan porttia 8080, se onnistuu komennolla sudoedit /etc/apache2/ports.conf.

NameVirtualHost *:8080
Listen 8080

Muutetaan kohdatt NameVirtualHost ja Listen 8080.

Testaan localhostin toiminnan menemällä osoitteeseen http://localhost:8080/. Sen pitäisi antaa 404 error, että sivua ei löydy ja Apache/2.2.22 (Ubuntu) Server at localhost Port 8080 pitäisi lukea sivulla. Konfiguroin Varnishia siten, että se kuuntelee porttia 80. Tämän jälkeen käynnistetään varnish uudelleen.

sudoedit /etc/default/varnish

sudo service varnish restart

Pitää vielä muistaa, että jos on lokaali nimipalvelin käytössä että muuttaa kansiosta /etc/apache2/sites-available/ sites-available esim tässä tapauksessa rambo.com kuuntelemaan porttia 8080.

Testataan, että sivut toimivat postaamalla kommentti WordPressiin.

Testikom

Tämän jälkeen voimme testata ApacheBenchillä, että onko proxyn asentaminen nopeuttanut sivuja.

Dynaaminen etusivu:

ab -c 100 -n 100 http://rambo.com/wprami/wordpress/|grep -P “Failed|#/sec|50%|100%|Length”
Document Length:        20933 bytes
Failed requests:        0
Requests per second:    655.39 [#/sec] (mean)
50%    150
100%    152 (longest request)

Dynaaminen alasivu:

ab -c 100 -n 100 http://rambo.com/wprami/wordpress/2013/10/08/this-is-my-first-post/|grep -P “Failed|#/sec|50%|100%|Length”
Document Length:        30780 bytes
Failed requests:        0
Requests per second:    742.53 [#/sec] (mean)
50%    132
100%    134 (longest request)

Nyt voimme todeta, että varnishin Käänteisproxyn avulla sivujen latautuminen on laskenut n. 4 sekunnista 150millisekuntiin. Eli Eron on huomattavan suuri. Käänteisproxynkaan avulla ne eivät kuitenkaan vedä vertoja staattisille sivuille (10ms).

Sisällönhallintajärjestelmät

Teen tämän raportin osana Tero Karvisen kurssia Linux palvelimena. Harjoitus on tehty Live-CD:llä (Xubuntu 12.04.03).

Harjoitus on tehty koulusta saamallamme läppärillä (HP Elite Notebook 2560p).

http://terokarvinen.com/2013/aikataulu-%E2%80%93-linux-palvelimena-ict4tn003-9-ja-10-syksylla-2013

Tämällä viikolla käsittelemme harjoutuksessa:

  • Asenna WordPress (alkaen tilanteesta, jossa LAMP on asennettu)
  • Kirjoita esimerkkisisältöä
  • Tee ja raportoi kolme seuraavista:
  • Ota järkevät URLit (permalinks) käyttöön
  • Vaihda teema
  • Varmuuskopioi sisältö
  • Tee WordPressiin oma teema
  • Asenna Drupal ja kokeile sitä
  • Tee WordPressiin oma plugin
  • Vuokraa virtuaalipalvelin ja kokeile sitä

WordPressin asentaminen ja sisällön lisääminen

Aloitan tehtävän kohdasta, jossa minulla on asennettu ja testattu LAMP (Linux, Apache, MySql ja PHP). LAMP:n asennuksesta voi lukea seuraavasta linkistä:

https://ramitahtinen.wordpress.com/2013/10/01/lamp-ja-virtuaalipalvelin/ ‎

Aloitan tehtävän päivittämällä pakettilistan komennolla sudo apt-et update. Menen public_html kansioon ja teen sinne kansion wprami.

mkdir wprami

cd wprami komennolla menen kansioon ja lataan tar.gz paketin ja avaan sen.

wget http://wordpress.org/latest.tar.gz

tar -xf latest.tar.gz
Poistan turhan tar.gz paketin komennolla rm latest.tar.gz

Tämän jälkeen avaan phpmyadminin selaimella ja luon uuden käyttäjän kohdasta Privileges -> add new user.

Käyttäjänimeksi annan ramiwp, hostaajaksi localhost ja luon käyttäjälle saman nimisen tietokannan.
Sitten menin käyttäjäkotisivuilleni ja avasin wprami kansion ja sen jälkeen avasin wordpress kansion. Sivulle ilmestyi teksti, jossa kerrottiin, että minulla ei vielä ole wp-config.php konfigurointi tiedostoa.

WPeka

Painoin nappulasta aloittaakseni tietokannan luonti prosessin WordPressille. Laitoin käyttäjäksi ja tietokannan nimeksi saman. Tietokannan sijainniksi tulee localhost ja table_prefix kohtaan laitoin wp_. Tämä tarkoittaa sitä että tietokanta taulujen nimet lisätään etuliitteen perään.

Tämän jälkeen painoin submit.

WPtoka

WP ilmoitti, että se ei voi luoda konfigurointi tiedostoa, joten kopion sen antaman tekstin ja lisäsin sen kansioon nimeltä wp-config.php. Kansio löytyi wordpress kansion alta.

nano wp-config-sample.php, poistin esimerkki tekstit tiedostosta ja lisäsin sinne kopioimani tekstin.

Tämän jälkeen painoin “run the install”.

Täytin käyttäjätiedot jatkaakseni wordpressin asennnusta.

WPkolmas

Kun asennus oli valmis kirjauduin wordpressiin. Kotihakemistoni kautta pääsin katsomaan bloagiani (http://rambo.com/wprami/wordpress/).

WPneljs

Sivulla tein uuden postauksen painamalla new-> post. Kirjoitin muutaman rivin tarkistaakseni, että WP toimii.

WPviides

Uuden teeman lisääminen WordPressiin.

WordPressiin voi hakea teemoja http://wordpress.org/themes/sivulta. Valitsin itselleni päätin ladata itselleni destro-teeman.

Menin komennlla cd Lataukset kansioon johon latasin pakatuntiedoston. Avasin sen komennolla unzip destro.2.8.22.zip. Tämän jälkeen siirsin kansion WordPressin teema kansioon.

cp -r destro /home/rtahtinen/public_html/wprami/wordpress/wp-content/themes/

Kun destro kansio oli siirretty WordPressin teema kansioon, Menin omalle WordPress sivulle ja painoin vasemmalla puolella olevan palkin kohdasta appearance ->themes. Tämän jälkeen valitsin destron alta kohdan activate.

Valitsin skinin ja painoin save options, sitten menin wordpressin yläosassa olevalta navigaatiopalkiltani sivulleni (WordPressin logon vieressä oleva blogin nimi).

Teema

Pluginin lisääminen WordPressiin

Plugineja voi etsi WordPressiin sivulta http://wordpress.org/plugins/. Päätin ladata theme-check pluginin. Avasin ja siirsin pakatun tiedoston samalla tavalla kuin teeman kanssa, mutta siirsin theme-checkin plugin kansioon.

cp -r theme-check /home/rtahtinen/public_html/wprami/wordpress/wp-content/plugins/

Tällä kertaa painoin Plugins kohdasta(Appearancen alla). Aktivoin theme-checkin painamalla activate.

plugin

Appearancen alla olevalle listalle ilmestyi Theme-check.

plugin2

Kun painoin check it nappia ilmestyi warning joka kertoi että debug pitää olla päällä theme-checkiä ajaessa.

plugin3

http://codex.wordpress.org/Editing_wp-config.php#Debug Sivulta selvisi, että minun on laitettava Debug päälle wp-config.php kansiota. nano wp-config.php komennolla pääsin muokkaamaan configia ja löysinkin kohdan:

/**
* For developers: WordPress debugging mode.
*
* Change this to true to enable the display of notices during development.
* It is strongly recommended that plugin and theme developers use WP_DEBUG
* in their development environments.
*/
define(‘WP_DEBUG’, false);

Vaihdoin booleanin kohdasta define(‘WP_DEBUG’, false);  Trueksi ja tallensin muutokset. Ajoin theme-checkin uudestaan se se toimi. Theme-chack kertoi tietoja teemasta sekä että se läpäisi testin.

plugin4

Permalinkien aktivointi

Avasin Settings kohdan ja valitsin sieltä permalinks. Valitsin kohdan Day and Name ja tallensin muutokset. Tallennuksen jälkeen sivu kertoi, että minun pitäisi päivittää .htaccess tiedosto. Sivu tarjosi konfigurointi tiedot sivun alaosassa.

Links

/public_html/wprami/wordpress kansiossa loin nanolla .htaccess tiedoston, jonne lisäsin sivun antamat tiedot. Koitin tämän jälkeen avata Hello World! postausta, mutta sivulle ilmestyi vain 404 Not Found.

tail /var/log/apache2/error.log Kertoi, että kyseistä tiedostoa ei ole, vaikka se onkin.

[Wed Oct 09 03:16:34 2013] [error] [client 192.168.0.103] File does not exist: /home/rtahtinen/public_html/wprami/wordpress/2013, referer: http://rambo.com/wprami/wordpress/

Löysin ratkaisun erään oppilaan blogista(http://kontsu.wordpress.com/2012/10/03/installing-wordpress-under-apache-2/), että minun on laitetta rewrite päälle ja restartattava apache2.

sudo a2enmod rewrite

sudo service apache2 restart

Kun apache oli käynnistynyt uudelleen klikkasin hello world postausta niin päivämäärä ja postauksen otsikko ilmestyi osoiteriville.

links

LAMP ja virtuaalipalvelin

Teen tämän raportin osana Tero Karvisen kurssia Linux palvelimena. Harjoitus on tehty Live-CD:llä (Xubuntu 12.04.03).

Harjoitus on tehty koulusta saamallamme läppärillä (HP Elite Notebook 2560p).

http://terokarvinen.com/2013/aikataulu-%E2%80%93-linux-palvelimena-ict4tn003-9-ja-10-syksylla-2013

Tämällä viikolla käsittelemme harjoutuksessa:

  • Asenna ja testaa LAMP
  • Aiheuta vähintään 3 virhettä ja analysoi lokista
  • Tee nimipohjainen virtuaalipalvelin, joissa toimii myös www.
  • Ratkaise tehtävät 1-4 http://sqlzoo.net (tätä sqlzoo alakohtaa ei raportoida)

Lampin asennus (Linux, Apache, Mysql, PhP)

Aloitan tehtävän päivittämällä pakettilistan komennolla sudo apt-get update. Tämän jälkeen asennan komennolla sudo apt-get install apache2 mysql-server libapache2-mod-php5 mysql serverin, apachen ja php:n. Apache2 toiminnan testaan kirjoittamalla localhost ja tämän jälkeen testaan vielä toiminnan omalla ip:lläni.

apache

apache2

Ip-osoitteen saa selville komennolla ifconfig. Kirjoitin osoite palkkiin http://192.168.0.103/~rtahtinen/ koikeillaakseni käyttäjäkotisivujen toiminnan.

kotisivut

PHP:n  toiminnan testaan tekemällä käyttäjä kotisivuilleni testi.php tiedoston. Tiedoston sisään lisäsin kohdat:

<html>
<head>
<title>Php toimii</title>
</head>
<body>
<?php
print “this is php, 2+2 is “.(2+2);

echo “hello world!”;
?>
</body>
</html>

Tämän jälkeen kommentoin sudoeditillä Php:n toiminta kuntoon, sudoedit /etc/apache2/mods-enabled/php5.conf. Tiedostosta kommentoidaan ohjatut kohdat pois käytöstä. Tämän jälkeen restarttasin Apachen komennolla sudo service apache2 restart.

php conf

Tässä vielä loppu tulos:

phptoimi

Mysql-serverin toiminnan voi kokeilla loggaamalla mysql serverin sisälle root- tunnuksilla ja valitsen tiedokannan komennolla use test;. Tietokantaan teen taulun komennolla create table hats(hat_id int, name varchar(255));, lisään tauluun yhden rivin komennolla insert into hats (“1”, “lippis”);. Valitsen kaikki rivit taulusta komennolla select * from hats;.

sql

Näin Kaikki Lampin osat on testattu yksi kerrallaan. Seuraavaksi kokeilemme testiä, jossa käytämme kaikkia lataamiamme ohjelmia yhdessä. Aloitan tekemällä uuden tietokannan nimellä hats ja teen sinne taulun list, jossa on id ja nimi rivit. Lisään tauluun 2 tietuetta.

SQL Komennot:

use test;

create table hats(hat_id int, name varchar(255));

insert into hats (‘1’, ‘cow boy hat’);

insert into hats (‘2’, ‘cap’);

Tämän jälkeen lisäsin testi.php tiedostoon koodin:

PHP database example - http://iki.fi/karvinen. <br>
<?php
    /* database.php - Use mysql database from php
     * (c) 200309 Tero.Karvinen <at-sign> iki.fi, adapted from php.net 
     * See http://iki.fi/karvinen Linux Apache MySQL PHP tutorial. */

    /* Connect to database */
    $link = mysql_connect("localhost", "root", "")
        or die("Could not connect : " . mysql_error());
    print "Connected successfully";
    mysql_select_db("test") or die("Could not select database");

    /* Perform SQL query */
    $query = "SELECT * FROM persons";
    $result = mysql_query($query)
	or die("Query failed : " . mysql_error());

    /* Print results in HTML */
    print "<table>\n";
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
        print "\t<tr>\n";
        foreach ($line as $col_value) {
            print "\t\t<td>$col_value</td>\n";
        }
        print "\t</tr>\n";
    }
    print "</table>\n";
    mysql_free_result($result);

    /* Close connection */
    mysql_close($link);
?>

Vaihdoin tämän jälkeen lisäsin salasanan tyhjään kohtaan rootin jälkeen hipsujen sisään ja vaihdoin valinta lauseen kohtaan select * from hats.

Kotisivulla kun painoin testi.php ilmestyi seuraava sivu:

Kaikki

Tästä voi päätellä, että kaikki toimivat yhdessä.

Errorlogien tarkastelu

tail -F /var/log/apache2/error.log komennolla pääsee apachen error logiin.

[Tue Oct 01 22:42:44 2013] [error] [client 127.0.0.1] File does not exist: /usr/share/phpmyadmin, referer: http://www.linuxquestions.org/questions/linux-software-2/how-to-fix-the-requested-url-phpmyadmin-was-not-found-on-this-server-796610/

Riviltä näkee heti, että olen hakenut tiedostoa jota ei ole olemassa. Toisin sanoen olen kirjoittanut väärin osoitteen.

[Tue Oct 01 23:35:05 2013] [error] [client 127.0.0.1] PHP Warning:  mysql_connect(): Access denied for user ‘hats’@’localhost’ (using password: YES) in /home/rtahtinen/public_html/testi.php on line 8, referer: http://localhost/~rtahtinen/

Toisella rivillä PHP varoittaa että mysql_connect() metodi yrittää ottaa yhteyttä tietokantaan, mutta pääsy on evätty virheen vuoksi. Todennäköisesti salasana oli kirjoitettu väärin tässä yhteyden otossa.

[Wed Oct 02 00:49:05 2013] [error] [client 127.0.0.1] PHP Warning:  mysql_connect(): Access denied for user ‘list’@’localhost’ (using password: YES) in /home/rtahtinen/public_html/testi.php on line 8, referer: http://localhost/~rtahtinen/

kolmannella rivillä on myös ongelma yhteydenotto metodissa. Tällä kertaa metodi ottaa yhteyttä väärään tietokantaan, jota ei ole edes olemassa.

Nimi pohjainen virtuaalipalvelin ja www ominaisuus

Domain nimen lisääminen virtuaalipalvelimelle onnistuu lokaalisti eli vain ainoastaan koneella, jolla on tehty muutoksia /etc/hosts kansioon ja  luomalla /etc/apache2/sites-available/ kansioon tiedoston, jossa on sivuntiedot public_html:ään.

iconfig komennolla haen oman ip-osoitteeni, jota tarvitaan /etc/hosts/ kansiossa. Tämän jälkeen menin komennolla sudoedit /etc/hosts
muokkaamaan hosts tiedostoa ja lisäsin sinne  kaksi riviä (ylimmät rivit).

Etc_hosts

Seuraavaksi menin komennolla cd /etc/apache2/sites-available/ sites-available kansioon ja lisäsin komennolla sudoedit rambo.com tiedoston, jonne laitoin seuraavat rivit.

<VirtualHost *:80>
ServerName rambo.com
ServerAlias http://www.rambo.com
DocumentRoot /home/rtahtinen/public_html/
</VirtualHost>

Seuraavaksi laitoin sivut “saataville”/ laitoin päälle komennolla sudo a2ensite rambo.com. Komentokehote kehoitti vielä reloadamaan apache2:sen. Tein sen komennolla sudo service apache2 reload. Tämän jälkeen kirjoitin selaimen osoite palkkiin Rambo.com ja sivu ilmestyi.

rambo

Näin ollen virtuaalipalvelimella on nyt rambo.com jolla pääsee lokaalisti public_html:ni

 

Demonit kertaus

Historia Lampin asennuksesta (linux, apache2, mysql ja PhP)

4  sudo apt-get update
5  sudo apt-get install apache2
6  sudo apt-get install mysql-server
7  ls
8  mkdir public_html
9  ls
10  cd public_html/
11  nano hei
12  sudo apt-get install libapache2-mod-php5
13  sudo a2enmod userdir
14  sudo /etc/init.d/apache2 restart
15  ls
16  nano hei
17  ls
18  rm -r hei
19  ls
20  chmod ugo+x rtahtine
21  ls
22  cd ..
23  chmod ugo+x rtahtine
24  ls
25  cd ..
26  ls
27  chmod ugo+x rtahtine
28  cd rtahtine/
29  ls
30  sudoedit /etc/apache2/mods-enabled/php5.conf
31  sudo service apache2 restart
32  ls
33  cd public_html/
34  ls
35  nano hei.html
36  ls
37  nano hei.php
38  mysql
39  cd ..
40  sudo apt-get install phpmyadmin
41  sudo service apache2 restart
42  sudo nano /etc/apache2/apache2.conf
43  sudo nano /etc/apache2/apache2.conf.d
44  sudo nano /etc/apache2/apache2.conf
45  sudo service apache2 restart
46  ifconfig
47  sudo apt-get remove phpmyadmin
48  sudo apt-get remove mysql-server
49  sudo apt-get install mysql-server
50  sudo apt-get install phpmyadmin
51  mysql -u root -p
52  ifconfig

Hyödyllistä

http://terokarvinen.com/2012/short-html5-page

http://terokarvinen.com/2012/change-mysql-password-dpkg-reconfigure-mysql-server-5-1-ubuntu-debian-error-1045

terokarvinen.com/fedora_linux_apache_mysql_php.html

APT, Metapaketit ja Pakettivarasto

Teen tämän raportin osana Tero Karvisen kurssia Linux palvelimena. Harjoitus on tehty Live-CD:llä (Xubuntu 12.04.03).

Harjoitus on tehty koulusta saamallamme läppärillä (HP Elite Notebook 2560p).

http://terokarvinen.com/2013/aikataulu-%E2%80%93-linux-palvelimena-ict4tn003-9-ja-10-syksylla-2013

Tämällä viikolla käsittelemme harjoutuksessa:

  • Tee oma rakkaimmat ohjelmasi asentava apt-get komento
  • Tee oma rakkaimmat ohjelmasi asentava metapaketti
  • Paketoi skripti
  • Bonus (vapaaehtoinen): Tee pakettivarasto, asenna paketti sieltä
  • Bonus (vapaaehtoinen): Julkaise uusi versio paketistasi ja kokeile, että asiakkaat päivittävät sen automaattisesti apt-get upgraden yhteydessä
  • (Bonus (vapaaehtoinen): Laita orjat päivittymään itsestään ja kokeile, että ne hakevat uuden version paketistasi)
  • (Bonus (vapaaehtoinen): Suojaa varasto salakirjoitukseen perustuvin allekirjoituksin)

Apt-komento jaMetapaketin luonti

Apt-get komento, joka hakee rakkaimmat ohjelmat on yksinkertaista tehdä. Lisätään vain ohjelmia, joita halutaan hakea sudo apt-get install komennon perään esim.

Sudo apt-get install inkscape gedit

Metapaketin luontia varten lataan equivsin, gdebin ja lintianin komennolla sudo apt-get install equivs lintian gdebi

Ohjelmien lataamisen jälkeen tein kansion Code työpöydälleni komennolla mkdir Code. Tämän jälkeen menin kansion sisälle komennolla cd Code ja tein sinne tiedoston komennolla equivs-control ramis-script.cfg. Tämän jälkeen aloin muokkaamaan tiedostoa komennolla nano ramis-script.cfg ja poistin sieltä kaikki kommentti kohdat (rivit joiden edellä oli #)  siten, että tiedostoon jäävät kohdat:

  • Section
  • Priority
  • Standards-Version
  • Package
  • Version
  • Maintainer
  • Depends
  • Description

Metapaketti

Kun tiedostossa ovat nämä tiedot voidaan paketti muuttaa muotoon .deb ja se onnistuu komennolla equivs-build ramis-script.cfg.

equivs-build

Pakettia rakennetaan hetken aikaa ja komennolla ls voidaan todeta, että kansioon on ilmestyny .deb tiedosto, jossa näkyy nimi ja versio numero mikä metapaketille annettiin. Metapaketti kannattaa vielä tarkistaa Lintian ohjelmalla, jonka latasin aikaisemmin ja se onnistuu komennolla lintian ramis-lab_0.1.0_all.deb. Jos metapaketissa ei ole virheitä niin lintian ei tulosta mitään komentokehotteeseen. Testaan vielä paketin toiminnan gdebi ohjelmalla, jonka latasin aikaisemmin. Se onnistuu komennolla sudo gdebi -n ramis-script_0.1.0_all.deb. Metapaketin lataus onnistuu jos komentokehotteessa näkyy, että se valitsee aikaisemmin ei valitun paketin (ramis-script tässä tapauksessa).

gdebi

Pakettivarasto

Pakettivaroston luominen aloitetaan lataamalla webbi-palvelin ja luomalla käyttäjä kotisivut. Jos et ole varma, että oletko tehnyt jo kyseiset asiat voi tarkistaa ne nettiselaimella menemällä osoitteeseen localhost (webbi palvelin) ja sen jälkeen kirjoittamalla ~käyttäjänimi localhostin perään tarkistaaksesi, että käyttäjä kotisivut toimivat (esim. localhost/~käyttäjänimi). Kun käyttäjä kotisivut toimivat luodaan public_html:n kansioon repository/conf komennolla mkdir -p repository/conf.

repository

Sen jälkeen tehdään conf kansion sisään tekstitiedosto distributions komennolla nano repository/conf/distributions. Tekstitiedoston sisään kirjoitetaan:

  • Codename: precise
  • Components: main
  • Suite: precise
  • Architectures: i386 amd64 source

Tämän jälkeen ladataan reprepro ohjelma komennolla sudo apt-get install reprepro. Lisätään tekemäni metapaketti pakettivarastoon komennolla

reprepro -vvvv -b repository/ includedeb precise /home/rtahtinen/Code/ramis-*.deb

Pakettivarastooon ilmestyy uusia kansioita tämän komennon johdosta, koska nyt paketin pystyy lataamaan tästä varastosta.

reprepro

Pakettivaraston testaus

Poistin geditin ja inkscapen komennolla sudo apt-get remove gedit inkscape. Lisäsin source listaan( mistä apt lataa paketit) oman paketti varastoni komennolla sudoedit /etc/apt/sources.lists.d/repository.list ja kirjoitin sinne tekstin

deb http://192.168.0.103/~rtahtinen/repository precise main

Ip-osoitteen saa selville komennolla ifconfig.

Päivitin ensiksi pakettilistan komennolla sudo apt-get update, koska muuten luomaani pakettivarastoa ei näy listalla. Tämän jälkeen hain komennolla sudo apt-get install ramis-scrpit komennolla metapakettini ja apt kysyi salasanaani, jonka jälkeen sa varoitti vielä, että metapakettia jota lataan ei voi varmistaa turvalliseksi (sitä ei ole allekirjoitettu). Yleensä näitä paketteja ei kannata ladata, mutta tässä tapauksessa tiedän, että se on turvallinen, koska olen itse tehnyt sen.

Kun paketti oli latautunut minulla oli taas inkscape ja gedit.

Uuden version luonti metapaketista

Metapaketin voi päivittää uuteen versioon muokkaamalla ramis-script.cfg:tä nano komennolla. Vaihdetaan teksti tiedostosta versio numero ja lisätään sinne Mysql ohjelma.

versionpaiv

Rakennetaan paketti uudestaan equivs-build ramis-script.cfg komennolla.

lsversion

Lisätään metapaketti pakettivarastoon komennolla:

reprepro -vvvv -b repository/ includedeb precise /home/rtahtinen/Code/ramis-*.deb

Kun komento on ajettu, pakettivarasto päivittyy ja siellä on vain uusin versio, koska vanha unohdetaan ja poistetaan.

reponpivitys

repdeb

Nyt komennolla sudo apt-get upgradella pystytään päivittämään vanha paketti. En saanut Apt-get upgradea hakemaan uusinta versiota pakettivarastostani, tosin se saattaa johtua siitä että lisäsin sinne ohjelman jota en ole vielä ladannut. Apt-get update kuitenkin kertoi, että tekemääni versioon 0.1.0 olisi saatavilla päivitys 0.1.2.

upgrades

Päivitin metapakettini versioon 0.1.3. ja muutin paketista mysql ohjelman mysql-serverin ohjelmaan. Lisäsin metapaketin pakettivarastoon. Tämän jälkeen latasin sen komennolla sudo apt-get install mysql-server. Tämän jälkeen ajoin sudo apt-get update ja sen jälkeen sudo apt-get upgrade. Tällä kertaa upgrade haki automaattisesti pakettini pakettivarastostani.

APT ja Metapaketit

Hyödyllisiä tietoja

paketoiminen on kallista.

libreoffice ja apache2 ovat metapaketteja.

sudo apt-get purge apache2 poistaa vain metapaketin.

paketit päivittyvät eri aikaan.

sudo apt-get -y install equivs

|grep -v ^#

equivs-build file.cfg

lintian file.deb

sudo apt-get install gdebi

Metapaketin luonti
5  sudo apt-get -y install equivs
6  ls
7  mkdir Code
8  ls
9  cdc Code/
10  ls
11  cd Code/
12  ls
13  equivs-control ramis-lab.cfg #tehdään tiedosto
14  nano ramis-lab.cfg # muokataan kommenti pois, annetaan pakettille nimi, ylläpitäjä/tekijä ja sähhöposti, ohjelmat mitä metapaketti asentaa (pilkuilla erotettuina) sekä kuvaus paketille (enemmän kuin yksi rivi)

Kuvakaappaus - 20.09.2013 - 10.53.32
15  ls
16  equivs-build ramis-lab.cfg
17  ls
18  lintian ramis-lab_0.1.0_all.deb
19  sudo gdebi -n ramis-lab_0.1.0_all.deb
20  sudo apt-get install gdebi
21  sudo gdebi -n ramis-lab_0.1.0_all.deb
22  nano ramis-lab.cfg
23  ls
24  equivs-build ramis-lab.cfg
25  nano ramis-lab.cfg
26  equivs-build ramis-lab.cfg
27  ls
28  lintian ramis-lab_0.1.0_all.deb
29  sudo apt-get install lintian
30  lintian ramis-lab_0.1.0_all.deb
31  sudo gdebi -n ramis-lab_0.1.0_all.deb
32  nano ramis-lab.cfg
33  ls
34  equivs-build ramis-lab.cfg
35  ls
36  lintian ramis-lab_0.1.2_all.deb
37  sudo gdebi -n ramis-lab_0.1.2_all.deb
38  nano ramis-lab.cfg
39  equivs-build ramis-lab.cfg
40  lintian ramis-lab_0.1.2_all.deb
41  sudo gdebi -n ramis-lab_0.1.2_all.deb
42*
43  sudo apt-search libapache2
44  nano ramis-lab.cfg
45  equivs-build ramis-lab.cfg
46  lintian ramis-lab_0.1.2_all.deb
47  sudo gdebi -n ramis-lab_0.1.2_all.deb
48  ls
49  history

Apt-tiedostorakenne

http://terokarvinen.com/2011/update-all-your-computers-with-a-deb-repository