Vorwort Bei der allgemeinen Entwicklung werden Bilder in ein Verzeichnis hochgeladen. Anschließend werden Verzeichnis und Dateiname verknüpft und in der Datenbank gespeichert. Wenn diese Methode jedoch nicht gut umgesetzt wird, kann sie gewisse Mängel aufweisen. Wenn das Projekt verschoben wird, müssen, auch wenn der Server selbst noch verwendet wird, die auf dem Server gespeicherten projektbezogenen Bilder ebenfalls verschoben und gleichzeitig der Code geändert werden, was zu großen Problemen führt. Wenn Sie einen Server speziell zum Speichern von Bildern und zum Übertragen dieser Bilder per FTP erstellen, müssen Sie Ihren Code nicht ändern. Auf die Einführung und Vorteile von Docker und Nginx werde ich hier nicht näher eingehen, im Internet gibt es dazu viele Blogs und Tutorials. Umweltkonstruktion Einige Module der Umgebungskonstruktion sind möglicherweise nicht detailliert genug. Wenn Sie mehr wissen möchten, können Sie andere Materialien prüfen. Hier sind nur einfache Vorgänge. 1. Docker installieren
2. Ziehen Sie das Nginx-Image
1.16.0 ist die Versionsnummer. Sie können das Image über die Docker-Suche nginx abfragen; dasselbe gilt für das Abrufen anderer Images wie Tomcat, MySQL usw. 3. Erstellen Sie die Hauptdateien für die Docker-Montage
4. Erstellen und Ausführen des Nginx-Containers docker run -d -p 80:80 -p 443:443 --name nginx-server -v /home/nginx/www:/usr/share/nginx/html -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/logs:/var/log/nginx nginx 5. Erstellen Sie eine Nginx-Konfigurationsdatei auf dem Host Erstellen Sie eine neue Datei Benutzer root; Arbeiterprozesse 1; Fehlerprotokoll /var/log/nginx/error.log warnen; pid /var/run/nginx.pid; Ereignisse { Arbeiterverbindungen 1024; } http { /etc/nginx/mime.types einschließen; Standardtyp Anwendung/Oktett-Stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; Zugriffsprotokoll /var/log/nginx/access.log Haupt; sendfile an; #tcp_nopush ein; KeepAlive-Timeout 65; #gzip ein; schließen Sie /etc/nginx/conf.d/*.conf ein; Server { hören Sie 443 SSL; Servername: Ihre IP-Adresse oder Ihr Domänenname; root /usr/share/nginx/html; ssl_certificate Ihr-Schlüssel.pem; ssl_certificate_key Ihr_Schlüssel.Schlüssel; SSL-Sitzungszeitüberschreitung 5 Min. ssl_session_cache geteilt:SSL:1m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HOCH:!NULL:aNULL:!MD5:!ADH:!RC4; SSL-Protokolle TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers ein; # Springe zu Port 8080, das ist mein Tomcat-Container. Wenn du https://ip/ im Browser eingibst, springst du zum Tomcat-Container (der bereits läuft und die Portnummer zugeordnet hat) Standort / { root /usr/share/nginx/html; Proxy-Passwort http://ip:8080/; Index Index.html Index.htm; } # Wenn Sie https://ip/images/ im Browser eingeben, entspricht dies /home/nginx/www/images/ auf dem Hostcomputer, da es zuvor gemountet wurde, d. h. ein Verzeichnis auf dem Hostcomputer und ein Ordner im Docker-Container teilen Daten. # Erstellen Sie zuerst das Bilderverzeichnis in /home/nginx/www/ auf dem Hostcomputer. Speicherort ~ /images/ { root /usr/share/nginx/html/; } } Server { hören Sie 80; Servername: Ihre IP-Adresse oder Ihr Domänenname; umschreiben ^ https://$host$1 permanent; } } Hier gibt es eine SSL-Konfiguration. Sie müssen zuerst einen Domänennamen beantragen, dann ein SSL-Zertifikat erhalten und es dann konfigurieren. Ich werde hier nicht ins Detail gehen. Die Umgebungskonfiguration ist fast abgeschlossen. Als nächstes installieren Sie vsftpd und erstellen ftp FTP einrichten Installieren Sie vsftpd
Benutzer hinzufügen useradd benutzerdefinierter Benutzername passwd benutzerdefiniertes Passwort Ändern der Konfigurationsdatei
Die Stellen, die geändert werden müssen, sind wie folgt:
Festlegen der Benutzerzugriffsrechte nach dem Speichern und Beenden
Nach dem Test wurden nach dem Hochladen per FTP über die https-Anfrage des Browsers folgende Ergebnisse erzielt: *Noch etwas: Denken Sie bei Alibaba Cloud-Servern daran, die Sicherheitsgruppe zu konfigurieren und Port 21 sowie die Ports 443, 80 und 30000-30009 zu öffnen. Implementieren der FTP-Übertragung in Java Erstellen Sie zunächst die Datei
Schreiben Sie dann eine Toolklasse für die FTP-Übertragung importiere org.apache.commons.net.ftp.FTP; importiere org.apache.commons.net.ftp.FTPClient; importiere org.springframework.beans.factory.annotation.Value; importiere org.springframework.context.annotation.PropertySource; importiere org.springframework.stereotype.Component; importiere java.io.*; /** * @Autor Max */ @Komponente @PropertySource("Klassenpfad:ftpResource.properties") öffentliche Klasse FtpUtil { /** * FTP_ADDRESS: IP-Adresse des FTP-Servers * FTP_PORT: Port des FTP-Servers, Standard ist 21 * FTP_USERNAME: Benutzername des FTP-Servers* FTP_PASSWORD: Passwort des FTP-Servers* FTP_BASE_PATH: der absolute Pfad des FTP-Servers zum Speichern der Bilder* IMAGE_BASE_URL: der Pfad des FTP-Servers zum Zugriff auf die Bilder aus dem Internet*/ @Wert("${FTP_ADDRESS}") private Zeichenfolge FTP_ADRESSE; @Wert("${FTP_PORT}") privater Integer FTP_PORT; @Wert("${FTP_USERNAME}") privater String FTP_USERNAME; @Wert("${FTP_PASSWORD}") private Zeichenfolge FTP_PASSWORD; @Wert("${FTP_BASE_PATH}") private Zeichenfolge FTP_BASE_PATH; @Wert("${IMAGE_BASE_URL}") private Zeichenfolge IMAGE_BASE_URL; /** * Bild hochladen * @param inputStream Eingabestream * @param name Dateiname * @return Bild-URL * @throws IOException IO-Ausnahme */ öffentlicher String uploadImage(InputStream inputStream, String name) wirft IOException { FTPClient ftpClient = neuer FTPClient(); versuchen { System.out.println(FTP_ADRESSE); ftpClient.enterLocalPassiveMode(); ftpClient.connect(FTP_ADRESSE, FTP_PORT); ftpClient.login(FTP_BENUTZERNAME, FTP_PASSWORT); ftpClient.changeWorkingDirectory(FTP_BASE_PATH); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); boolean ist erfolgreich = ftpClient.storeFile(Name, Eingabestream); wenn (ist erfolgreich){ gibt IMAGE_BASE_URL + Name zurück; } }catch (Ausnahme e){ e.printStackTrace(); }Endlich { ftpClient.logout(); } gibt IMAGE_BASE_URL + "Fehler" zurück; } } Dann wird in der Service-Verarbeitungslogik nur ein Teil des Codes hier angezeigt @Autowired privates FtpUtil ftpUtil; @Überschreiben public int insertImg(MultipartFile Datei) wirft IOException { /* 1. Holen Sie sich den hochgeladenen Dateistream inputStream und den Dateinamen getOriginalFilename 2. Rufen Sie die Funktion in FtpUtil auf, um das Bild auf den Bildserver hochzuladen und die https-Adresse zurückzugeben. 3. Wenn die Bildadresse zurückgegeben wird, fügen Sie sie in die Datenbank ein */ InputStream inputStream = Datei.getInputStream(); String Dateiname = Datei.getOriginalFilename(); String picUrl = ftpUtil.uploadImage(inputStream, Dateiname); } Das ist alles. Wenn der Client es in Zukunft anfordert, wird es per FTP auf den Server übertragen und die Adresse wird dann in der Datenbank gespeichert. Solange das Frontend die Bild-URL erhält, wird sie angezeigt. Zusammenfassen Dies ist das Ende dieses Artikels zum Erstellen eines Nginx-Image-Servers mit Docker. Weitere Informationen zum Erstellen eines Nginx-Image-Servers mit Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Vue2.x-Reaktionsfähigkeit – einfache Erklärung und Beispiele
>>: Detaillierte Erklärung von MySQL Explain
Beim Entwickeln mobiler Apps stoßen Sie häufig au...
1: Überprüfen Sie die PHP-Version nach dem Aufruf...
In diesem Artikel werden die spezifischen Schritt...
Inhaltsverzeichnis A. Docker-Bereitstellung des S...
Tomcat ist ein HTTP-Server, der die offizielle Re...
Die Farbdarstellung auf einer Webseite wird von ve...
Beim Schreiben dynamischer Formulare bin ich zuvo...
Inhaltsverzeichnis Einführung Frage Design 1: Adj...
1. Die Bedeutung von Indizes Indizes werden verwe...
Installationsumgebung: CentOS7 64-Bit-Mini-Versio...
border-radius:10px; /* Alle Ecken sind mit einem ...
Wie der Titel schon sagt, kann andernfalls bei ein...
Inhaltsverzeichnis 1. Grundlegendes Verständnis v...
Die übliche Nginx-Konfiguration ermöglicht domäne...
Inhaltsverzeichnis 1. Verwenden Sie in der v-for-...