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}