Lisää laboratorioharjoitukseen valmistautumista

Hello World Nodejs Javascriptillä

Asennan ensin Nodejs:n näiden ohjeiden mukaisesti. Annan siis seuraavat komennot:

$ sudo apt-get update 
$ sudo apt-get install nodejs
$ sudo apt-get install npm
$ nodejs -v

v8.10.0

Tämän jälkeen alan noudattaa näitä ohjeita ja luon aluksi projektille kansion omaan kotihakemistooni:

noora@koekone:~/tiedostot/koodit$ mkdir testiapp
noora@koekone:~/tiedostot/koodit$ cd testiapp

Npm init-komento avustaa minua luomaan package.json-tiedoston:

noora@koekone:~/tiedostot/koodit/testiapp$ npm init

This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See npm help json for definitive documentation on these fields
and exactly what they do.
Use npm install <pkg> --save afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
name: (testiapp)
version: (1.0.0)
description:
entry point: (index.js) app.js // <-- tämä ilmeisesti kannattaa muuttaa
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /home/noora/tiedostot/koodit/testiapp/package.json:
{
"name": "testiapp",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Is this ok? (yes) y

Tämän jälkeen asennan vielä web framework Expressin:

noora@koekone:~/tiedostot/koodit/testiapp$ npm install express --save

Ja vihdoinkin pääsen tekemään itse Hello World -tiedoston:

noora@koekone:~/tiedostot/koodit/testiapp$ nano app.js
noora@koekone:~/tiedostot/koodit/testiapp$ cat app.js
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
noora@koekone:~/tiedostot/koodit/testiapp$ node app.js
Example app listening on port 3000!

Tämän jälkeen näen selaimessa localhostin portissa 3000 tekstin Hello World!

Hello World Pythonilla

Vastaava Hello World sujuu Pythonilla aika paljon vaivattomammin:

noora@koekone:~/tiedostot/koodit$ sudo apt-get install python3

noora@koekone:~/tiedostot/koodit$ nano heimaailma.py
noora@koekone:~/tiedostot/koodit$ python heimaailma.py
Hei maailma!

Oman metapaketin tekeminen

Hyödynnän tätä tehdessäni näitä Tero Karvisen ohjeita.

Aloitan asentamalla Equivs:in:

$ sudo apt-get update 
$ sudo apt-get -y install equivs

Tämän jälkeen luon pakettiin liittyvän tiedoston seuraavalla tavalla:

noora@koekone:~/tiedostot/paketti$ equivs-control nooran-paketti.cfg
noora@koekone:~/tiedostot/paketti$ nano nooran-paketti.cfg

Tämän jälkeen kasaan paketin komennolla:

noora@koekone:~/tiedostot/paketti$ equivs-build nooran-paketti.cfg

ja yritän suorittaa sen, mutta huomaan, että minulta puuttuu gdebi, jonka asennan:

noora@koekone:~/tiedostot/paketti$ sudo gdebi -n nooran-paketti_1.0_all.deb
[sudo] password for noora:
sudo: gdebi: command not found
noora@koekone:~/tiedostot/paketti$ sudo apt-get install gdebi

Gdebin asentumisen jälkeen ajan komennon

$ sudo gdebi -n nooran-paketti_1.0_all.deb

uudestaan, ja nyt kaikki paketissa määritellyt ohjelmat ja niiden riippuvuudet asentuvat mukavasti.

Paketin nimen vaihtaminen

En ole varma, olisiko tähän jokin kätevämpi tapa, mutta itse hoidin nimen vaihtamisen näin:

noora@koekone:~/tiedostot/paketti$ ls -a
. .. nooran-paketti_1.0_all.deb nooran-paketti.cfg
noora@koekone:~/tiedostot/paketti$ cp nooran-paketti.cfg nooran-parempi-paketti.cfg
noora@koekone:~/tiedostot/paketti$ ls -a
. .. nooran-paketti_1.0_all.deb nooran-paketti.cfg nooran-parempi-paketti.cfg
noora@koekone:~/tiedostot/paketti$ nano nooran-parempi-paketti.cfg

Muokkasin nanolla paketin nimeä, versiota ja kuvausta:

...
Package: nooran-parempi-paketti
Version: 1.1
...
Description: uudelleen nimetty pakettini
...

Tämän jälkeen rakensin paketin samalla tavalla kuin edellisen paketin:

$ equivs-build nooran-parempi-paketti.cfg
...
$ sudo gdebi -n nooran-parempi-paketti_1.1_all.deb
noora@koekone:~/tiedostot/paketti$ ls -a
. nooran-paketti_1.0_all.deb nooran-parempi-paketti_1.1_all.deb
.. nooran-paketti.cfg nooran-parempi-paketti.cfg
noora@koekone:~/tiedostot/paketti$ sudo gdebi -n nooran-parempi-paketti_1.1_all.deb
Reading package lists… Done
Building dependency tree
Reading state information… Done
Reading state information… Done
(Reading database … 198322 files and directories currently installed.)
Preparing to unpack nooran-parempi-paketti_1.1_all.deb …
Unpacking nooran-parempi-paketti (1.1) over (1.1) …
Setting up nooran-parempi-paketti (1.1) …

Kaikki paketin ohjelmat ovat kuitenkin jo asennettuina, joten paketti ei enää asenna mitään uudestaan.

WordPressin asentaminen

Aioin kokeilla myös WordPressin asentamista, mutta en jostain syystä pääse enää kirjautumaan MariaDB:hen root-käyttäjänä. Saan vain seuraavan errorin:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

, joten olen aika varma, että saatoin laittaa root-salasanaksi jotain muuta kuin mitä oletin laittaneeni. Tyyppi-käyttäjälläni ei taas ole oikeuksia luoda tietokantoja, joten en pysty luomaan WordPressin tarvitsemaa uutta tietokantaa. Normaalisti asentaisin vain MariaDB:n uudestaan, mutta en enää tässä vaiheessa taida jaksaa, varsinkin kun Maiju on kirjoittanut jo hyvät ohjeet WordPressin asentamisesta. Tarvittaessa voin siis lueskella kokeessa niitä.

Muuta sekalaista itseäni kenties hyödyttävää materiaalia

Lätkäisen tähän postaukseen vielä kasan tuntimuistiinpanojani siltä varalta, että minulle olisi niistä huomenna (tai miksei sen jälkeenkin) jotakin hyötyä.

apt-cache search vector art | grep vector
mv t * Documents/ -> siirtää kaikki t-alkuiset tiedostot documentteihin

curl -i
tail -F seuraa
curl -si osoite | header
man -k keyword -> hakee manuaalista
grep -i <- case insensitive
date --iso=min
grep -ir color-always
grep -r <- rekursiivisesti eli hakemiston alta

df -h <- systeemin kuormitus
sudo lsof -i :6600 <-- mitä portissa 6600 tapahtuu

ssh-keygen
ssh-copy-id helkera@helkera.com
ssh helkera@helkera.com

rsync -vazh --progress meso.txt helkera@helkera.com
v verbose
a säilyttää oikeudet
z pakkaus
h human readable form
jos haluaa kopioida kansion, älä laita loppuun kauttaviivaa

eka asenna sshfs
sudo apt-get install sshfs
ladataan koneeseen johon meinataan mountata hakemisto
sshfs helkera@helkera.com: /mnt/horsma
fusermount -u /mnt/noora <-- unmounttaa aseman
älä ole kansiossa kun unmounttaat
sudo umount /mnt/noora <-- toimi paremmin

sshfs -o reconnect,ServerAliveInterval=5,ServerAliveCountMax=3 helkera@helkera.com: ~/mnt/horsma
http://terokarvinen.com/2018/sshfs-securely-mount-filesystems-over-the-internet-survive-suspend-and-network-down
sudo ufw allow 443/tcp <- sallii https-liikenteen

logging analysis of security tero karvinen
nproc <-- prosessoriydinten määrä
top
uptime
dstat <-- verkkoliikenne
nethogs <-- kaistan kuormitus
netstat -pean | less
dstat <-- downloads
free -h
free vs available <-- available oikea määrä, free saattaa olla hyvin pieni
mutta tilaa vapautuu heti jos sitä tarvitaan
sudo iotop -oa
io-väylällä eri prosessit odottavat vuoroaan, kovalevyväylä
pstree <-- prosessipuu

which mitä ohjelmaa ajetaan
which python

--- bash-skriptin teko
nano tiedosto
alkuun #!/bin/bash
muut rivit
chmod ugo+x tiedosto
sudo cp tiedosto /usr/local/bin/
suoritetaan tiedoston nimellä

---- hello world python
python tiedoston nimi
ohjelman ajaminen parametrilla
python nelio.py 2

lat=d["iss_position"]["latitude"]
lat=float(lat) <--muuntaa stringistä liukuluvuksi

--- proxy ssh:lla
ssh -D portti käyttäjä@hosttaiip
nc -vz localhost porttinumero esim 9080 <--testaa, että portti on auki
curl localhost:9080


touch roska{0..10} <-- luo monta tiedostoa

rsync -r -v --exclude='Documents/Trash' Documents helkera@iptaihost:

nc -vz 172.28.172.231 80 <-- testataan, onko portti 80 auki

terokarvinen hello world programming languages ubuntu 18.04

salasana.txt
chmod og-rwx salasanat.txt

sudo adduser nmottone <- ei ääkkösiä
full nameen voi laittaa ääkkösiä

install pwgen

sudo apt-get purge poistaa paketin kokonaan

df -h <-- onko tilaa kovalevyllä

http://terokarvinen.com/2018/name-based-virtual-hosts-on-apache-multiple-websites-to-single-ip-address
http://terokarvinen.com/2018/php-database-select-and-insert-example-php-pdo
http://terokarvinen.com/2018/install-mariadb-on-ubuntu-18-04-database-management-system-the-new-mysql
http://terokarvinen.com/2018/arvioitava-laboratorioharjoitus-linux-palvelimet-ict4tn021-6-torstai-alkukevat-2018-5-op

http://terokarvinen.com/2017/arvioitava-laboratorioharjoitus-linux-palvelimet-ict4tn021-4-tiistai-alkusyksy-2017-5-op#comment-3119

http://terokarvinen.com/2016/final-lab-exercise-of-linux-basics-dat8tf063-27-spring-2016#comment-21591


sudo software-properties-gtk
sudo apt-get update


Tietoa kirjoittajasta

Noora Huttunen

Opiskelen ohjelmistotuotantoa Haaga-Helian tietojenkäsittelylinjalla.