Schlagwort: Mysql

Mit PHP und MySQL ein Adressbuch erstellen

Mit PHP und MySQL ein Adressbuch erstellen

In dieser BC24 Anleitung geht es darum, ein kleines Adressbuch mit Hilfe von PHP und MySQL zu erstellen. PHP wird verwendet um die Eingabedaten zu verarbeiten und die Datenbank dient dazu die Einträge zu speichern. Das Adressbuch wird die Funktionen besitzen, neue Einträge hinzuzufügen und bereits vorhandene wieder zu löschen.

Adressbuch mit PHP

Adressbuch

Adressbuch

Das Adressbuch besteht aus einer Eingabemaske für Name, Telefonnummer und E-Mail. Darunter werden die bereits eingetragenen Daten in einer Tabelle wieder ausgegeben. Jeder Eintrag kann zusätzlich über einen Link gelöscht werden. Das ist aber nur mal das Aussehen, das mit der Logik im Hintergrund noch relativ wenig zu tun hat.

Das gesamte Adressbuch wird am Ende aus 4 Teilen bestehen, einer Klasse AddressBook, welche die Schnittstelle zur Datenbank sein wird, einer index Datei, welche alle Anfragen entgegen nimmt und zu guter Letzt einer Template Datei, die das gesamte HTML Markup enthält.

Adressbuch Daten

Adressbuch Daten

Die AddressBook Klasse

Die Klasse AddressBook ist das Herzstück unserer Adressbuch Webanwendung, in dieser definieren wir Methoden, um Datensätze in die Datenbank zu schreiben und auch wieder zu löschen. Außerdem verfügt sie über eine Methode um vorhanden Datensätze auszulesen.

Das Gerüst der Klasse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class AddressBook {
    
    private $db;
    private $error;
    
    public function __construct($db) {
        $this->db = $db;       
    }
    
    public function getError() {
    return $this->error;
    }
    
    
    
    public function add($name, $phone, $email) {
  
    }
    
    
    public function getEntries() {
      
    }
    
    
    public function delete($id) {
        
    }
       
    
}

Der Konstruktor (__construct()) wird ausgeführt, sobald die Klasse instanziiert wird, also ein konkretes Objekt von ihr erzeugt wird. Dort übergeben wir auch direkt ein MySQLi Objekt, mit dem eine Verbindung zur Datenbank hergestellt werden kann. Dieses MySQLi Objekt erzeugen wir aber erst später und soll jetzt erst mal als BlackBox gegeben sein.

In der Variable $error werden mögliche Fehler die auftreten gespeichert, zum Beispiel eine fehlerhafte Eingabe. Mit der Funktion getError() kann auf diese Fehlermeldung dann zugegriffen werden.

Die add() Methode

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public function add($name, $phone, $email) {
        if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $this->error = 'NO VALID EMAIL';
            return;
        }
        $sql = 'INSERT INTO
                            adress_book(Name, Phone, Email, date)
               VALUES
                            (?, ?, ?, NOW())';
        $stmt = $this->db->prepare($sql);
        $stmt->bind_param('sss', $name, $phone, $email);
        $stmt->execute();
        $result = $stmt->insert_id;
        $stmt->close();
        return (boolean)$result;
}

Diese Methode macht im Prinzip nichts anderes als zu prüfen, ob die E-Mail-Adresse ein gültiges Format hat und anschließend die Daten in der Datenbank zu speichern. Hier wird bewusst darauf verzichtet, zu prüfen ob die Werte leer sind. Sollten sie leer sein, wäre das zwar keine sinnvolle Eingabe, aber eine Zeichenkette ohne Sinn wäre ebenfalls nicht sinnvoll. Von daher macht eine solche Prüfung insgesamt relativ wenig Sinn.

Die delete Methode()

Nachdem die Methode zum Eintragen der Daten in die Datenbank fertig ist, möchten wir natürlich auch Einträge aus dem Adressbuch wieder löschen können.

1
2
3
4
5
6
7
8
9
10
11
public function delete($id) {
    if(!is_numeric($id)) return false;
    $id = (int)$id;
    $sql = 'DELETE FROM adress_book WHERE ID = ?';
    $stmt = $this->db->prepare($sql);
    $stmt->bind_param('i', $id);
    $stmt->execute();
    $result = $stmt->affected_rows;
    $stmt->close();
    return (boolean)$result;
}

Diese Methode macht nichts weiter, als einen Eintrag anhand einer ID aus der Datenbanktabelle zu löschen. $resulthat entweder den Wert 1 (Datensatz wurde gelöscht) oder den Wert 0 (Datensatz nicht vorhanden), mit einem cast ((type)obejct) zum Typ boolean erhalten wir daraus einen boolschen true oder false Wert.

Die getEntries() Methode

Zu guter Letzt fehlt noch eine Methode um die Klasse zu komplettieren. Das Eintragen und wieder Löschen ist zwar schön, jedoch nützt das Ganze auch nichts, wenn wir die Daten nicht ausgeben können.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public function getEntries() {
        $result = false;
        $sql = 'SELECT
                        ID, Name, Phone, Email, date
                FROM
                        adress_book';
        $stmt = $this->db->prepare($sql);
        $stmt->execute();
        $stmt->bind_result($id, $name, $phone, $email, $date);
        while($stmt->fetch()) :
            $result[] = array('ID' => $id,
                              'Name' => $name,
                              'Phone' => $phone,
                              'Email' => $email,
                              'Date' => $date);
        endwhile;
        return $result;
}

Wiederrum eine sehr simple Methode, wenn Einträge vorhanden sind, dann wird ein Array mit den Daten zurückgegeben. Ansonsten wird der Wert false zurückgegeben, als Indikator dafür, dass keine Einträge im Adressbuch vorhanden sind.

Die Datenbank

Bevor wir zum Frontend kommen, müssen wir uns nochmal vor Augen führen, wie die Datenbank beziehungsweise die Tabelle in der Datenbank überhaupt aussieht.

1
2
3
4
5
6
7
8
CREATE TABLE IF NOT EXISTS `address_book` (
  `ID` INT(11) NOT NULL AUTO_INCREMENT,
  `Name` VARCHAR(100) NOT NULL,
  `Phone` VARCHAR(200) NOT NULL,
  `Email` VARCHAR(200) NOT NULL,
  `date` datetime NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Engine und default charset kann man natürlich nach Belieben einstellen.

Das HTML Markup / Das Template

Das Adressbuch sollte unabhängig von seinem Aussehen funktionieren und auch kreativen Freiraum für weitere Entwicklungen bieten. Aus diesem Grund werden Logik und Aussehen strikt getrennt, dies entspricht in etwa einem Model-View-Controller Pattern.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<html>
<head>
</head>
  <body>
 
  <h1 style="background:white; padding:10px;">Mit PHP und MySQL ein Adressbuch erstellen / BC24.org</h1>
 
  <div style="padding:20px;">
    <form action="" method="post" name="abook" id="adress_book_form">
    <span class="element">
        <span class="label">Name:</span> <input type="text" name="name"/>
    </span>
 
    <span class="element">
        <span class="label">Telefon:</span> <input type="text" name="phone"/>
    </span>
 
    <span class="element">
        <span class="label">E-Mail:</span> <input type="text" name="email"/>
    </span>
 
    <button type="submit" class="button element"> Hinzufügen </button>
 
    </form>
 
    </div>
 
 
    <?php if(is_array($data)) : ?>
    <table class="result">
        <tr>
            <th> Name </th>
            <th> Telefon </th>
            <th> E-Mail </th>
            <th> Admin </th>
        </th>
        </tr>
        <?php foreach($data as $dat) : ?>
        <tr>
            <td> <?php echo htmlspecialchars($dat['Name']) ?> </th>
            <td> <?php echo htmlspecialchars($dat['Phone']) ?> </td>
            <td> <?php echo htmlspecialchars($dat['Email']) ?> </td>
            <td> <a href="index.php?id=<?php echo $dat['ID'] ?>&amp;action=delete">Löschen</a> </td>
        </tr>
        <?php endforeach; ?>
    </table>
    <?php else: ?>
        <div class="info"> Keine Daten vorhanden </div>
    <?php endif; ?>
 
 
  </body>
</html>

Die Form ist dazu da, um neue Einträge in das Adressbuch schreiben zu können.
Damit das Ganze auch noch nach etwas aussieht, verwenden wir etwas CSS. Dadurch wird vor allem die Tabelle lesbarer.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
html, body {
padding:0px;
margin:0px;
background: rgb(102, 144, 219); /* Old browsers */
overflow:hidden;
font: 12px Verdana,Tahoma,Arial,Calibri,Geneva,sans-serif;
 
}
 
#adress_book_form input[type=text] {
    border:1px solid darkgreen;
    padding:5px;
    width:200px;
    font-size:14px;
}
 
.label {
    font-size: 15px;
 
}
 
.element {
    margin-right:10px;
}
 
.button {
    background:darkgreen;
    color:white;
    border:1px solid black;
    padding:3px;
    font-size:15px;
    margin-left:20px;
}
 
.button:hover {
    cursor:pointer;
    background: rgb(102, 144, 219);
    color:black;
}
 
.result {
    width:100%;
}
 
/*
.result th {
    font-size:18px;
}
 
.result td {
    text-align:center;
}
 
.result tr:nth-child(even) {
    background:grey;
}
*/
 
 
table { border-collapse: collapse; border: 1px solid #839E99;
background: #f1f8ee; color: #033; }
caption { font-size: 1.3em; font-weight: bold; text-align: left; padding: 1em 4px; }
td, th { padding: 3px 3px .75em 3px; line-height: 1.3em; }
th { background: #839E99; color: #fff; font-weight: bold; text-align: left; padding-right: .5em; vertical-align: top; }
thead th { background: #2C5755; text-align: center; }
.odd td { background: #DBE6DD; }
.odd th { background: #6E8D88; }
td a, td a:link { color: #325C91; }
td a:visited { color: #466C8E; }
td a:hover, td a:focus { color: #1E4C94; }
th a, td a:active { color: #fff; }
tfoot th, tfoot td { background: #2C5755; color: #fff; }
th + td { padding-left: .5em; }
 
.info {
    padding:20px;
    font-size:15px;
    border:1px solid black;
    margin-top:20px;
}

Diese Styles ergeben direkt das Adressbuch, welches auf dem oberen Screenshot zu sehen ist. Das Aussehen kann aber individuell von jedem selbst geändert werden, dies ist ein großer Vorteil der Trennung zwischen Logik und Ausgabe.

Ich habe auch schon viele Lösungen gesehen, wo das gesamte Adressbuch in einer einzigen PHP Datei umgesetzt wurde, davon würde ich aber abraten. Dies ist zum einen enorm unprofessionell, zum anderen werden Änderungen schnell zur Qual.

Die Heirat in der index.php

Die Überschrift ist vielleicht etwas überzogen, dennoch brauchen wir noch einen Vermittler der die Daten vom Benutzer entgegennimmt und an das Objekt der Klasse weitergibt. Außerdem müssen die Adressbucheinträge an das Template übergeben werden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/** CONFIG */
$Server = 'localhost';
$Username = 'root';
$Password = '';
$DB_Name = 'adress_book';
$db = new mysqli($Server, $Username, $Password, $DB_Name);
/** END CONFIG */
 
require_once 'AdressBook.php';
 
$AddressBook = new AddressBook($db);
/* Hier wird geprüft, ob das Eingabeformular abgeschickt wurde, um einen neuen Eintrag in das Adressbuch einzufügen */
if(isset($_POST['name'], $_POST['phone'], $_POST['email'])) {
    $AddressBook-&gt;add($_POST['name'], $_POST['phone'], $_POST['email']);
}
/* Hier wird geprüft, ob ein Eintrag aus dem Adressbuch gelöscht werden soll */
if(isset($_GET['id'], $_GET['action']) &amp;&amp; $_GET['action'] === 'delete') {
    $AddressBook-&gt;delete($_GET['id']);
}
 
$data = $AddressBook-&gt;getEntries();
 
require_once 'book.tpl';

Die Datenbankverbindung muss natürlich entsprechend angepasst werden.

Fazit

So schnell kann man ein kleines Adressbuch mit PHP und MySQL umsetzten. Das Adressbuch kann natürlich noch beliebig erweitert werden.
Eine fertige Demo findet ihr hier: Adressbuch in PHP
Das gesamte Anwendung kann unter https://bc24.org/Adressbuch/Adressbuch.rar heruntergeladen werden.

OpenFire auf Ubuntu installieren

Heute Erkläre ich euch wie man OpenFire auf Ubuntu installiert

Voraussetzungen: Sie müssen Apache, PHP, MySQL und phpMyAdmin (optional) installiert haben.

1. Java installieren
2. Wechseln Sie ins Verzeichnis

$ cd /opt

3. Laden Sie das neuste OpenFire on der Official Website runter.

$ sudo wget http://www.igniterealtime.org/downloads/download-landing.jsp?file=openfire/openfire_3_9_3.tar.gz

4. Datei entpacken

$ sudo tar zxvf openfire_3_9_3.tar.gz

5. Erstelle aa Symlink

$ sudo ln -s /opt/openfire/bin/openfire /etc/init.d/

6. Machen Sie Ihre Symlink ausführbare

$ sudo chmod +x /etc/init.d/openfire

7. Wechseln Sie ins Verzeichnis

$ cd /opt/openfire

8. Führen Sie OpenFire aus

$ sudo update-rc.d openfire defaults
$ sudo nohup ls >ls.log 2>&1 &
Das war es auch schon, nun öffnen Sie Ihren Browser und gehen auf folgenden Link:
http://Ihre_IP:9090 oder http://Ihre_Domain:9090
Dann folgen Sie den einfachen Installer und logen sich zum Schluss mit folgenden Benutzer Daten ein:
Benutzername: admin
Passwort: admin
Danach ist alles selbsterklärend.

Erstellen einer LAMP-Webserver in Xubuntu Linux

Hier sehen Sie Details, wie ein Computer als Webserver konfigurieren, mit dem kostenlosen Linux -Software. Es ist ein LAMP-Server, die eine der häufigsten Konfiguration für Webserver die Standard für ist genannt:

L inux – Betriebssystem
Ein pache – Software Webserver (http)
M ysql – Datenbankserver
P HP oder Perl – Programmiersprachen
In diesem Lernprogramm wird die Konfiguration in der Befehlszeile erfolgen. Das ist zwar nicht ganz so einfach wie das Klicken auf ein paar Symbole, aber es hat viele Vorteile, einschließlich der Fähigkeit zur Remote-Verwaltung und installieren Sie den Server neu. Es bedeutet auch, dass der Computer von mehr ausgeben, es ist Zeit-Server auf Web-Seiten und weniger Prozessorzeit Zeichnen einer GUI, die ja der ganze Sinn eines Webservers ist.

Installieren von Xubuntu Linux

Die Spezifikation des Computers hängt von der Komplexität eines jeden dynamischen Code und die Anzahl der Besucher erwartet. Für ein persönliches Blog oder ähnliches, dann wird dies nicht sein ein besonders leistungsfähigen Computer und die Nutzung von Linux kann eine ansonsten alten Computer ein neues Leben zu geben.
Ich habe Xubuntu gewählt, weil es ist eine leichte Version von Linux. Während für einen realen Server wird in der Regel ohne Monitor angeschlossen laufen, kann es sinnvoll sein, eine GUI-Umgebung bei Gelegenheiten haben (zB ist es einfacher, komplexe Partitionierung durchzuführen über die GUI gparted, als es die gleiche Sache nur mit textbasierten Tools ).
Deshalb habe ich die xubuntu Desktop-Version, obwohl die alternative Version hätte verwendet werden, wenn ein Grafikdisplay nicht erforderlich war haben. Das Verfahren ist das gleiche für Ubuntu oder für eine der anderen Ubuntu Varianten.
Installieren Sie zuerst Xubuntu – in meinem Fall mit einem USB-Boot-Festplatte, obwohl Sie die CD, wenn sie bevorzugt zu verwenden.
Bei der Aufteilung der Bühne, soll normalerweise die Option “Ersetzen vorhandene Betriebssystem mit Xubuntu”, oder Sie können eine benutzerdefinierte Partitionen mit “etwas anderes”, die die manuelle Konfiguration verwendet erstellen, aber das ist vielleicht mehr für den fortgeschrittenen Administrator.

Über die Befehlszeile und Editieren von Dateien

Während der Installation werden Sie sehen, viele Befehle mit sudo vorangestellt. Der Befehl sudo erlaubt es dem Benutzer, um einen Befehl als Superuser ausgeben (oder unter bestimmten Umständen als ein anderer Benutzer). Ohne mit dem Befehl sudo viele der Befehle fehlschlagen würde Angabe unzureichende Berechtigungen. Dies ist eine Sicherheitsfunktion, die das System von anderen Benutzern schützt, sondern begrenzt auch die Höhe der Schäden, die ein Benutzer versehentlich tun können (obwohl, wenn mit dem Befehl sudo voran es wird nicht vor Unfällen zu helfen).
Teil der Konfiguration beinhaltet eine Textdatei. Es gibt zwei Kommandozeilen-Texteditoren standardmäßig installiert. Die Nano-Editor ist die einfachste für neue Benutzer (so das ist, was ich habe, um genannt), aber ich empfehle das Erlernen der vi (vim) Text-Editor , wie es ist nützliches Werkzeug, das auf allen Linux-Systemen installiert ist. Wenn Sie mit vi kennen dann ersetzen nano mit vi für den Rest dieses Handbuchs.

#Einrichten von #Netzwerk

Der erste Schritt ist dem System eine statische IP-Adresse zu geben. Dies ist ein wenig komplexer als es auf Ihrem eigenen Setup und welche Router Sie, wie Sie dieses Ziel zu erreichen, hängt.
Standardmäßig wird der Computer eine dynamische IP-Adresse, die von Ihrem Router nach Bedarf ausgegeben wird beantragen. Dies kann jedoch in Zukunft, die machen es schwer, auf den Webserver zu verbinden ändern. Stattdessen bieten wir es mit einer Adresse, die sich nicht ändert, wie 192.168.1.4.
Beachten Sie, dass diese Adresse im lokalen Netzwerk über das Internet verwendet werden, aber nicht – später werden wir, die den Zugang durch Ihren Router / Firewall aus dem Internet suchen.
Zuerst herausfinden, welche DHCP-Adresse mit dem Befehl ifconfig zugewiesen worden – siehe untenstehende Extrakt

... eth0 Link encap:Ethernet HWaddr 00:1c:25:4e:12:95 inet addr:192.168.1.110 Bcast:192.168.1.255 Mask:255.255.255.0 ...

Dieses sagt, dass der Ethernet-Anschluss 0 – eine IP-Adresse von 192.168.1.110
Sie müssen auch herausfinden, welche Adresse der Router mit dem Befehl Route

 $ route
 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0

Dies zeigt, dass die Router-IP-Adresse (Gateway) 192.168.1.1 ist und der gesamte Verkehr wird über diese Router gesendet.
An diesem Punkt werden Sie auch brauchen, auf welcher Adressbereich vom Router ausgegeben wird zu prüfen. Dies hängt von der einzelnen Router. In meinem Fall habe ich eine Wireless Router , die mit dem Hinweis einen Web-Browser auf die IP-Adresse des Routers 192.168.1.1 zu erreichen ist
Die LAN-Einstellungen sind wie folgt:
bc24-lansettings
In diesem Fall wird im lokalen Netzwerk gültige Adressen von 192.168.1.1 bis 192.168.1.254. Der Router ist mit der Adresse 192.168.1.1 und alle DHCP-Anforderungen in Einträge zwischen 192.168.1.100 und 192.168.1.150 (Sie können den Bereich der DHCP-Adressen bei Bedarf ändern) angegeben werden. Ich habe 192.168.1.4 für diesen Server verwendet.
Um statische IP-Adresse ändern

 cd /etc/networks sudo nano interfaces

Ändern Sie die erste Zeile
auto lo eth0
Hier wird die Schnittstelle eth0 bis während der Inbetriebnahme kommen
Fügen Sie den folgenden an die Ende der Datei

 iface eth0 inet static address 192.168.1.4 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 192.168.1.1

Dadurch wird die statische IP-Adressdaten für die Schnittstelle.
Der letzte Eintrag zeigt die DNS-Einträge auf dem lokalen Router. Alternativ können Sie direkt in Ihrem Internet-Anbieter DNS-Server nicht zeigen konnte.
Während Sie können dynamisch laden Sie die Netzwerkschnittstelle (ifdown eth0) Ich schlage vor, einen Neustart zu diesem Zeitpunkt sicherstellen, dass die Konfiguration korrekt ist.
sudo reboot
Nach der Anmeldung Prüfung mit ifconfig, um zu bestätigen, dass wir eine statische IP-Adresse

 ... eth0 Link encap:Ethernet HWaddr b8:27:eb:8a:71:a0 inet addr:192.168.1.4 Bcast:192.168.1.255 Mask:255.255.255.0 ...

Installieren Sie ssh

SSH (Secure Shell) ist ein Netzwerkprotokoll, mit dem Sie sich anmelden und den Computer remote steuern über die Befehlszeile ermöglicht. Wie der Name sagt es ist sicher, da es verschlüsselt die Kommunikation über das Netzwerk (so dass andere nicht sehen können Ihr Passwort etc.). Es hat auch einige tolle Features wie Tunneln, die wir hier nicht eingehen.
Installieren Sie den SSH-Server, indem Sie den folgenden Befehl ein
sudo apt-get install openssh-server
Dies wird den SSH-Server aus den Repositories installieren. Die entsprechenden Dateien werden über das Internt heruntergeladen und dann installiert, so wird eine Internetverbindung an dieser Stelle erforderlich.
Sie können nun mit dem Computer eine Remote-Verbindung (im selben Netzwerk) über ssh.
Wenn Sie eine andere Linux-Rechner im Netzwerk haben, dann von einem Terminal laufen
ssh 192.168.1.4
was wird mit demselben Benutzernamen anmelden. Wenn Sie einen anderen Benutzernamen verwenden möchten, dann vorangestellt, dass vor der IP-Adresse mit einem @ -Zeichen.
zB
ssh user1@192.168.1.4
Ich glaube, dass ssh wird auch auf einem Mac installiert, so dass Sie wie oben die gleichen Befehle verwenden können.
Wenn Sie unter Windows eine Verbindung herstellen möchten, dann gibt es mehrere Optionen, aber ich schlage vor, die Open-Source-Software Putty .

Erstellen der Server im Internet

Weiter werden wir den Router mit ssh-Logins und Web-Verkehre durch seine Firewall, um den Raspberry Pi ermöglichen konfigurieren.
Sie haben vergessen, das Standardpasswort für den pi Benutzernamen Sie ändern nicht! Wenn Sie noch nicht das Standardkennwort geändert, dann tun Sie es jetzt sonst jemand in der Lage, um Ihre Raspberry Pi einloggen.
Als Privatanwender die IP-Adresse im lokalen Netzwerk verwendet wird, ist ein privater Adressbereich, der nicht über das Internet funktioniert. Statt Ihr ISP wird eine einzelne dynamische IP-Adresse, die vom Router verwendet wird. Damit Besucher auf das Internet, um Ihre Raspberry Pi fließen muss die IP-Adresse des Pi vorgenommen werden, um als ob es vom Router zu suchen. Dies ist ein Prozess, der Network Address Translation (NAT).
Die Ports, die durchgelassen werden müssen, sind Port 80 (http) und wenn Sie möchten in der Lage sein, um den Computer aus dem Internet dann Port 22 (ssh) anmelden können.
Um dies zu tun, müssen Sie die Anweisungen auf dem Router zu konsultieren. Im Fall von meinem Belkin Router dies durch die Firewall> Virtuelle Server-Einstellungen.
bc24-virtual-server1

DNS

Der letzte Schritt ist, um einen DNS-Eintrag Punkt, an die IP-Adresse des Routers zu haben. In meinem Fall habe ich Kabel Internet über Virgin Media. Obwohl es hat eine Dyanmic IP-Adresse die Adresse normalerweise nicht ändern. Ich habe eine statische DNS-Eintrag auf einem Internet-DNS-Server. Der Eintrag muss nur etwa einmal im Jahr oder bei Virgin Media führen Bedeutung Wartungsarbeiten am Internet-Verbindung geändert werden.
Wenn Sie eine dynamische IP-Adresse, die auf eine aktuellere Grundlage verändert haben, dann müssen Sie für eine Dyanmic DNS Service zu registrieren.

Installieren Sie #Apache #Webserver

Der Apache-Webserver ist verfügbar, um von den Ubuntu-Repositories herunterladen. Dies kann durch folgende Eingabe erfolgen
sudo apt-get install apache2

Installieren Sie #MySQL

Die MySQL-Datenbank-Server ist auch durch die Debian-Repositories verfügbar und wie installiert
sudo apt-get install mysql-server
Während der Installation gibt es eine schnelle Anfrage nach einem Passwort.
Das Passwort ist für den MySQL-Benutzer root.

Installieren Sie #Perl / #PHP

Perl ist als Teil des Betriebssystems, damit ich nur das Hinzufügen PHP installiert.
Die folgenden Befehle PHP Version 5 und die MySQL-Bibliotheken installieren, damit PHP den Zugriff auf die MySQL-Datenbank.

 sudo apt-get install php5 sudo apt-get install php5-mysql

Sie können auch gerne auf die folgenden, empfohlenen Pakete zu installieren.
php-pear php5-suhosin
Bisher habe ich erst seit der Installation eines Pakets in einer Zeit, aber Sie können mehrere Pakete, indem Sie sie als weitere Optionen in der Befehlszeile installieren.
sudo apt-get install php-pear php5-suhosin

Installation abgeschlossen

Nach Beendigung der Einstellung ist, dass Sie die Web-Seite indem Sie in Ihrem Browser, um die Router-IP-Adresse oder den DNS-Eintrag zugreifen können.
Sie sollten eine Seite zurück besagt, dass es funktioniert, aber das noch keine Inhalte geladen.
Um zu testen, dass der Webserver und PHP richtig funktionieren, dann löschen Sie die Datei /var/www/index.html und erstellen Sie eine Datei /var/www/index.php mit dem Inhalt:

<? Php
<! Doctype html>
<Html lang = "de">
<Head>
<Meta charset = "UTF-8">
<Title> Test erfolgreich </ title>
</ Head>
<Body>
<H1> Test erfolgreich </ h1>
<P> Herzlichen Glückwunsch. </ P>
<P> Ihr Webserver und PHP arbeiten. </ P>
</ Body>
</ Html>
?>

Beachten Sie, dass der Dateiname des Verbindungsenden in .txt in meinem Webserver ausgeführt dies zu verhindern, sollten Sie die Datei mit der Endung .php, so dass die Datei als PHP-Skript ausführen.