uni

University stuff
git clone git://git.margiolis.net/uni.git
Log | Files | Refs | README | LICENSE

doc.tex (9475B)


      1 \documentclass[12pt]{article}
      2 \usepackage[utf8]{inputenc}
      3 \usepackage[greek,english]{babel}
      4 \usepackage{alphabeta}
      5 \usepackage{fancyhdr}
      6 \usepackage{listings}
      7 \usepackage{mathtools}
      8 \usepackage{xcolor}
      9 \usepackage{float}
     10 \usepackage{siunitx}
     11 \usepackage[margin=0.5in]{geometry}
     12 \usepackage[backend=bibtex]{biblatex}
     13 
     14 \lstset {
     15         basicstyle=\ttfamily,
     16         columns=fullflexible,
     17         breaklines=true,
     18         keepspaces=true,
     19 	showstringspaces=false
     20 }
     21 
     22 \title{Εργαστήριο Ηλεκτρονικού Εμπορίου και Επιχειρηματικότητας -- Εργασία 1}
     23 \author{Χρήστος Μαργιώλης -- 19390133}
     24 \date{Μάιος 2024}
     25 
     26 \begin{document}
     27 
     28 \begin{titlepage}
     29         \maketitle
     30         \begin{figure}[t!]
     31         \begin{center}
     32         \includegraphics[scale=0.3]{./res/uniwalogo.png} \\
     33         \Large
     34         \textbf{Πανεπιστήμιο Δυτικής Αττικής} \\
     35         \large
     36         Τμήμα Μηχανικών Πληροφορικής και Ηλεκτρονικών Υπολογιστών
     37         \end{center}
     38         \end{figure}
     39 \end{titlepage}
     40 
     41 \renewcommand{\contentsname}{Περιεχόμενα}
     42 \tableofcontents
     43 \pagebreak
     44 
     45 %\includegraphics[width=\textwidth]{res/aslr.png} \\
     46 
     47 \section{Περίληψη εργασίας}
     48 
     49 ΠΡΟΣΟΧΗ: Η εργασία έγινε σε FreeBSD αντί για Windows, διότι βρίσκομαι εκτός Ελλάδας κατά την συγγραφή την
     50 εργασίας και δεν έχω πρόσβαση σε Windows υπολογιστή.
     51 
     52 Η παρούσα εργασία έχει ως στόχο την εξοικείωση στην εγκατάσταση, διασύνδεση και
     53 χρήση διαφόρων βασικών τεχνολογιών που χρησιμοποιούνται στον τομέα του
     54 προγραμματισμού διαδικτυακών εφαρμογών.
     55 
     56 \section{Α1: Εγκατάσταση Apache HTTP server}
     57 
     58 Εγκατάσταση Apache 2.4:
     59 
     60 \begin{lstlisting}
     61 # pkg install apache24
     62 \end{lstlisting}
     63 
     64 Δημιουργία root directory για την ιστοσελίδα μας και ανάθεση του χρήστη
     65 \lstinline{www} (Apache server) ως κατόχου του directory:
     66 
     67 \begin{lstlisting}
     68 # mkdir ecom1
     69 # chown -R www ecom1/
     70 \end{lstlisting}
     71 
     72 Τροποποίηση των απαραίτητων \lstinline{DocumentRoot} στο αρχείο
     73 \lstinline{http.conf}, ώστε ο server να βρει το directory της ιστοσελίδας και
     74 να κάνει χρήση της σωστής IP:
     75 
     76 \begin{lstlisting}
     77 # nvim /usr/local/etc/apache24/httpd.conf
     78 ...
     79 ServerName localhost:80
     80 ...
     81 DocumentRoot "/usr/home/christos/ecom1"
     82 <Directory "/usr/home/christos/ecom1">
     83 \end{lstlisting}
     84 
     85 Επιβεβαίωση της ορθότητας του config αρχείου:
     86 
     87 \begin{lstlisting}
     88 # httpd -t
     89 Syntax OK
     90 \end{lstlisting}
     91 
     92 Εκκίνηση του server:
     93 
     94 \begin{lstlisting}
     95 # service apache24 onestart
     96 Performing sanity check on apache24 configuration:
     97 Syntax OK
     98 Starting apache24.
     99 \end{lstlisting}
    100 
    101 Επιβεβαίωση ότι ο server ακούει στο port 80:
    102 
    103 \begin{lstlisting}
    104 # sockstat -4 -l -P tcp -p 80
    105 USER     COMMAND    PID   FD  PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
    106 www      httpd      23853 4   tcp4   *:80                  *:*
    107 www      httpd      23852 4   tcp4   *:80                  *:*
    108 www      httpd      23851 4   tcp4   *:80                  *:*
    109 www      httpd      23850 4   tcp4   *:80                  *:*
    110 www      httpd      23849 4   tcp4   *:80                  *:*
    111 root     httpd      23848 4   tcp4   *:80                  *:*
    112 \end{lstlisting}
    113 
    114 \section{Α2: Εγκατάσταση PHP και διασύνδεση με το Apache}
    115 
    116 Εγκατάσταση της PHP 8.2 και του Apache module:
    117 
    118 \begin{lstlisting}
    119 # pkg install php82 mod_php82
    120 \end{lstlisting}
    121 
    122 Δημιουργία \lstinline{php.ini} αρχείο, βασισμένο στo
    123 \lstinline{php.ini-development}:
    124 
    125 \begin{lstlisting}
    126 # cp /usr/local/etc/php.ini-development /usr/local/etc/php.ini
    127 \end{lstlisting}
    128 
    129 Επιβεβαίωση ότι το πρόγραμμα κελύφους \lstinline{php} τρέχει χωρίς προβλήματα:
    130 
    131 \begin{lstlisting}
    132 # php -v
    133 PHP 8.2.19 (cli) (built: May 21 2024 02:10:26) (NTS)
    134 Copyright (c) The PHP Group
    135 Zend Engine v4.2.19, Copyright (c) Zend Technologies
    136 \end{lstlisting}
    137 
    138 Τροποποίση \lstinline{httpd.conf} ώστε να γίνει η διασύνδεση του Apache με την
    139 PHP:
    140 
    141 \begin{lstlisting}
    142 # nvim /usr/local/etc/apache24/httpd.conf
    143 ...
    144 <IfModule dir_module>
    145     DirectoryIndex index.html index.php
    146 <FilesMatch "\.php$">
    147     SetHandler application/x-httpd-php
    148 </FilesMatch>
    149 <FilesMatch "\.phps$">
    150     SetHandler application/x-httpd-php-source
    151 </FilesMatch>
    152 </IfModule>
    153 \end{lstlisting}
    154 
    155 Δημιουργία αρχείο δοκιμής στην ιστοσελίδα, ώστε να επιβεβαιώσουμε την
    156 διασύνδεση Apache - PHP:
    157 
    158 \begin{lstlisting}
    159 # echo "<?php phpinfo(); ?>" > ecom1/info.php
    160 \end{lstlisting}
    161 
    162 Επανεκκίνηση του Apache:
    163 
    164 \begin{lstlisting}
    165 # httpd -t
    166 # service apache24 onerestart
    167 \end{lstlisting}
    168 
    169 Σε ένα παράθυρο browser, πηγαίνουμε στην διεύθυνση
    170 \lstinline{localhost:80/info.php} για να δούμε αν το αρχείο δοκιμής λειτουργεί
    171 όπως περιμένουμε:
    172 
    173 \includegraphics[width=\textwidth]{res/phpinfo.png} \\
    174 
    175 \section{Α3: Εγκατάσταση SQLite και διασύνδεση με την PHP}
    176 
    177 Εγκατάσταση SQLite3 και του PHP module:
    178 
    179 \begin{lstlisting}
    180 # pkg install sqlite3 php82-sqlite3
    181 \end{lstlisting}
    182 
    183 Επιβεβαίωση λειτουργίας:
    184 
    185 \begin{lstlisting}
    186 # sqlite3 --version
    187 3.45.1 2024-01-30 16:01:20 e876e51a0ed5c5b3126f52e532044363a014bc594cfefa87ffb5b82257ccalt1 (64-bit)
    188 \end{lstlisting}
    189 
    190 Δημιουργία βάσης δεδομένων από την γραμμή εντολών:
    191 
    192 \begin{lstlisting}
    193 # sqlite3 ecom1/foo.db
    194 SQLite version 3.45.1 2024-01-30 16:01:20
    195 Enter ".help" for usage hints.
    196 sqlite> .databases
    197 main: /usr/home/christos/ecom1/foo.db r/w
    198 sqlite> create table users (id integer, name text);
    199 sqlite>
    200 \end{lstlisting}
    201 
    202 Υλοποίηση προγράμματος PHP το οποίο δημιουργεί μια βάση δεδομένων και τυπώνει
    203 τα περιεχόμενά της:
    204 
    205 \begin{lstlisting}
    206 # cat > ecom1/sqlite.php
    207 <?php
    208 
    209 $db = new SQLite3("foo.db");
    210 $db->exec("INSERT INTO users (id, name) VALUES (1, 'christos')");
    211 $db->exec("INSERT INTO users (id, name) VALUES (2, 'john')");
    212 $db->exec("INSERT INTO users (id, name) VALUES (3, 'mark')");
    213 $res = $db->query("SELECT * FROM users");
    214 while (($row = $res->fetchArray(SQLITE3_ASSOC)) != false)
    215 	print_r($row);
    216 $db->exec("DELETE FROM users");
    217 
    218 ?>
    219 ^D
    220 \end{lstlisting}
    221 
    222 Επανεκκίνηση του Apache:
    223 
    224 \begin{lstlisting}
    225 # service apache24 onerestart
    226 \end{lstlisting}
    227 
    228 Εκτέλεση προγράμματος \lstinline{sqlite.php} στον browser:
    229 
    230 \includegraphics[width=\textwidth]{res/sqlite.png} \\
    231 
    232 \section{Α4: Εγκατάσταση MySQL/MariaDB και διασύνδεση με την PHP}
    233 
    234 Εγκατάσταση της MySQL 8.4 και του κατάλληλου PHP module:
    235 
    236 \begin{lstlisting}
    237 # pkg install mysql84-server php82-mysqli
    238 \end{lstlisting}
    239 
    240 Εκκίνηση της MySQL:
    241 
    242 \begin{lstlisting}
    243 # service mysql-server onestart
    244 # mysql_secure_installation
    245 \end{lstlisting}
    246 
    247 Επιβεβαίωση λειτουργίας της MySQL:
    248 
    249 \begin{lstlisting}
    250 # mysql --version
    251 mysql  Ver 8.4.0 for FreeBSD14.0 on amd64 (Source distribution)
    252 \end{lstlisting}
    253 
    254 Επανεκκίνηση του Apache:
    255 
    256 \begin{lstlisting}
    257 # service apache24 onerestart
    258 \end{lstlisting}
    259 
    260 Υλοποίηση προγράμματος PHP το οποίο δημιουργεί μια βάση δεδομένων και τυπώνει
    261 τα περιεχόμενά της:
    262 
    263 \begin{lstlisting}
    264 # cat > ecom1/mysql.php
    265 <?php
    266 $conn = new mysqli("localhost", "root", "foobar123#", "foo");
    267 if ($conn->connect_error)
    268 	die("Connection failed: " . $conn->connect_error);
    269 
    270 $conn->query("CREATE TABLE users (id INTEGER, name TEXT)");
    271 $conn->query("INSERT INTO users (id, name) VALUES (1, 'christos')");
    272 $conn->query("INSERT INTO users (id, name) VALUES (2, 'john')");
    273 $conn->query("INSERT INTO users (id, name) VALUES (3, 'mark')");
    274 
    275 $res = mysqli_query($conn, "SELECT * FROM users");
    276 while ($row = mysqli_fetch_assoc($res))
    277 	print_r($row);
    278 
    279 $conn->close();
    280 ?>
    281 ^D
    282 \end{lstlisting}
    283 
    284 Εκτέλεση προγράμματος \lstinline{mysql.php} στον browser:
    285 
    286 \includegraphics[width=\textwidth]{res/mysql.png} \\
    287 
    288 \section{Α5: Εγκατάσταση Perl και διασύνδεση με Apache και SQLite η MySQL}
    289 
    290 Εγκάτασταση του Apache Pearl module:
    291 
    292 \begin{lstlisting}
    293 # pkg install ap24-mod_perl2
    294 \end{lstlisting}
    295 
    296 \section{Προσάρτημα}
    297 
    298 Το μόνο αρχείο που χρειάστηκε τροποποίηση είναι το \lstinline{httpd.conf}, του
    299 οποίου οι αλλαγές φαίνονται στις παραπάνω ενότητες. Τα υπόλοιπα αρχεία
    300 δημιουργήθηκαν/τροποποιήθηκαν αυτόματα κατά την εγκατάσταση των προγραμμάτων.
    301 
    302 \end{document}