Solicite un servidor en la nube de Alibaba y cree un servidor HTTP en la red pública que admita la carga y descarga de datos

1. Introducción

        Hay muchas cosas que puede hacer con su propio servidor en la nube. Los servidores de Alibaba Cloud son, sin duda, los mejores de China.

        Los servidores de Alibaba Cloud se pueden usar para construir y ejecutar varias aplicaciones de Internet, brindando servicios estables y de alto rendimiento.

        Los usos de los servidores de Alibaba Cloud incluyen, entre otros, los siguientes aspectos:

  1. Alojamiento de sitios web: puede implementar archivos y bases de datos de sitios web en los servidores de Alibaba Cloud para proporcionar un entorno de red estable y recursos de servidor de alto rendimiento para garantizar el funcionamiento normal del sitio web.

  2. Implementación de aplicaciones: se pueden implementar varias aplicaciones y servicios en los servidores de Alibaba Cloud, como sistemas de comercio electrónico, sistemas ERP, sistemas CRM, etc., para proporcionar un entorno operativo estable y confiable.

  3. Almacenamiento de datos: los datos se pueden almacenar en los servidores de Alibaba Cloud y se pueden realizar copias de seguridad y administrar a través de servicios de almacenamiento en la nube para garantizar la seguridad y confiabilidad de los datos.

  4. Servicio de base de datos: puede utilizar los servicios de base de datos proporcionados por Alibaba Cloud, como RDS (Servicio de base de datos relacional), MongoDB, Redis, etc., para proporcionar servicios de base de datos escalables y de alto rendimiento.

  5. Virtualización: puede utilizar el servicio de máquina virtual proporcionado por Alibaba Cloud para ejecutar aplicaciones en máquinas virtuales para lograr el aislamiento de recursos y una implementación flexible.

  6. Almacenamiento en la nube: puede utilizar los servicios de almacenamiento en la nube proporcionados por Alibaba Cloud, como OSS (Servicio de almacenamiento de objetos), para almacenar archivos en la nube y proporcionar servicios de almacenamiento confiables y de alta disponibilidad.

  7. Protección de seguridad: puede utilizar los servicios de protección de seguridad proporcionados por Alibaba Cloud, como la protección DDoS, el cortafuegos de aplicaciones web (WAF), etc., para proteger los servidores y las aplicaciones de los ataques a la red.

2. Solicite el servidor en la nube de Alibaba

2.1 Inicio de sesión y registro

Abra el sitio web oficial de Alibaba Cloud, haga clic en "Iniciar sesión/Registrarse" en la parte superior derecha y use Alipay para escanear el código para iniciar sesión

Seleccione el servidor en la nube EC2 en la página de inicio, ábralo y vea "Servicio de prueba del producto", haga clic en la versión de uso personal para usarlo de inmediato. Todos los recién llegados pueden disfrutar de una prueba gratuita de 3 meses con Alipay.

En la página de creación de instancias, seleccione la configuración de la instancia según sus requisitos, incluidas las especificaciones de la instancia, el sistema operativo, el tipo de red, el almacenamiento, etc.

 Configurar grupos de seguridad. Por lo general, establezca "Dirección de entrada". Si desea iniciar sesión con SSH, debe abrir el puerto 22. Si desea construir un servidor HTTP, entonces el puerto 80 o 443 debe estar abierto.

Haga clic en Conexión remota. Alibaba Cloud proporciona tres métodos de conexión remota.

Establezca "Contraseña para inicio de sesión remoto a través de Workbench", pero no puede iniciar sesión directamente en este momento.

El control remoto VNC debe seleccionarse para el primer inicio de sesión. El control remoto VNC es adecuado para iniciar sesión en una instancia cuando la instancia se está iniciando o la instancia se está ejecutando pero el sistema operativo aún no se está ejecutando.

Siga las indicaciones para establecer la contraseña de control remoto de VNC e inicie sesión correctamente. Después de iniciar sesión, verifique la configuración de la red y vea que la tarjeta de red eth0 tiene la dirección IP privada de la instancia.

[root@iZbp1h36cszlkbxbf5gqeeZ ~]# ifconfig
bond0: flags=5123<UP,BROADCAST,MASTER,MULTICAST>  mtu 1500
        ether f2:ac:4a:db:46:4e  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:cc:74:16:f8  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.25.37.106  netmask 255.255.240.0  broadcast 172.25.47.255
        inet6 fe80::216:3eff:fe1e:ab8c  prefixlen 64  scopeid 0x20<link>
        ether 00:16:3e:1e:ab:8c  txqueuelen 1000  (Ethernet)
        RX packets 3870  bytes 3300682 (3.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2692  bytes 411305 (401.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Modificar la configuración del archivo /etc/ssh/sshd_config

PermitRootLogin yes
PassworkAuthentication yes

Reinicie el servicio SSH para que surta efecto

systemctl restart sshd

Ahora puede iniciar sesión a través de SSH en la computadora local utilizando "IP pública + contraseña de inicio de sesión remota de Workbench".

3. Cree un servidor HTTP con Flask

Cree un nuevo directorio en centos y use el marco python-Flask para escribir un servidor http. Realice la función de carga y descarga más simple.

3.1 Estructura del directorio

Cree un nuevo directorio de servidor https para construir este servidor HTTP.

Cree un directorio de plantillas en el directorio del servidor https para colocar archivos html.

Cree un nuevo archivo app.py para escribir la lógica de ejecución del servidor HTTP.

Cree un directorio de carga en el directorio del servidor https para colocar los archivos cargados y descargados

[root@iZbp1h36cszlkbxbf5g**** httpserver]# ls -ltr
total 4
drwxr-xr-x 2 root root   24 Jul 17 22:14 templates
-rw-r--r-- 1 root root 1455 Jul 17 22:16 app.py
drwxr-xr-x 2 root root   24 Jul 17 22:17 upload
[root@iZbp1h36cszlkbxbf5g**** httpserver]# ls upload
upload.txt
[root@iZbp1h36cszlkbxbf5g**** httpserver]# ls templates
index.html

3.2 Escritura de código

Escriba app.py (el código proporcionado por chatGPT ha sido ligeramente modificado)

from flask import Flask, render_template, request, send_from_directory
import os

app = Flask(__name__)
UPLOAD_FOLDER = 'upload'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER


@app.route('/', methods=['GET'])
def index():
    files = get_file_list()
    return render_template('index.html', files=files)


@app.route('/upload', methods=['POST'])
def upload_file():
    file = request.files['file']
    filename = file.filename
    save_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
    file.save(save_path)
    return 'File uploaded successfully.'


@app.route('/upload_data', defaults={'path': ''}, methods=['GET', 'POST'])
# @app.route('/<path:path>')
def upload_data(path):
    if request.method == 'POST':
       print('The upload data is: %s' % request.get_data())
    return 'Received!'


@app.route('/download/<path:filename>', methods=['GET'])
def download_file(filename):
    folder_path = app.config['UPLOAD_FOLDER']
    return send_from_directory(folder_path, filename, as_attachment=True)

# 文件删除
@app.route('/delete/<path:filename>', methods=['GET', 'POST'])
def delete_file(filename):
    file_path = app.config['UPLOAD_FOLDER']
    file_location = os.path.join(file_path, filename)
    if os.path.exists(file_location):
        os.remove(file_location)
        return 'File deleted successfully'
    else:
        return 'File not found'

def get_file_list():
    folder_path = app.config['UPLOAD_FOLDER']
    files = []
    for filename in os.listdir(folder_path):
        if os.path.isfile(os.path.join(folder_path, filename)):
            files.append(filename)
    return files


if __name__ == '__main__':
    if not os.path.exists(app.config['UPLOAD_FOLDER']):
        os.makedirs(app.config['UPLOAD_FOLDER'])
    app.run(host="0.0.0.0", port=80)
   # app.run(debug=True)

escribe index.html

<!DOCTYPE html>
<html>
<head>
    <title>File Server</title>
    <style>
        table {
            border-collapse: collapse;
            width: 100%;
        }

        th, td {
            text-align: left;
            padding: 8px;
        }

        tr:nth-child(even) {
            background-color: #f2f2f2;
        }
    </style>
</head>
<body>
    <h1>File Server</h1>
    <h2>Upload File</h2>
    <form action="/upload" method="POST" enctype="multipart/form-data">
        <input type="file" name="file" required><br><br>
        <input type="submit" value="Upload">
    </form>
    <h2>Download Files</h2>
    <table>
        <tr>
            <th>Filename</th>
            <th>Download</th>
            <th>Delete</th>
        </tr>
        {% for file in files %}
        <tr>
            <td>{
   
   { file }}</td>
            <td><a href="/download/{
   
   { file }}">Download</a></td>
            <td><a href="/delete/{
   
   { file }}">Delete</a></td>
        </tr>
        {% endfor %}
    </table>
</body>
</html>

3.3 Registros de prueba

ejecutar comando

python3 app.py
或者
nohup python3 app.py > output.txt &

Hay un error en la primera ejecución y es necesario instalar la biblioteca Flask

 pip install Flask==2.0.3

3.3.1 Pruebe el envío de datos en formato json localmente al servidor http

Use curl para intentar cargar datos en formato json en la computadora local

C:\Users\lenovo>curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1","key2":"value2"}' http://121.43.231.**:80/upload_data
Received!

El servidor http en Alibaba Cloud recibe el mensaje y lo devuelve

"¡Recibió!".

[root@iZbp1h36cszlkbxbf5g**** httpserver]# python3 app.py
 * Serving Flask app 'app' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on all addresses.
   WARNING: This is a development server. Do not use it in a production deployment.
 * Running on http://172.25.37.106:80/ (Press CTRL+C to quit)



The upload data is: b"'{key1:value1,key2:value2}'"
117.62.169.192 - - [17/Jul/2023 22:28:57] "POST /upload_data HTTP/1.1" 200 -

3.3.2 Pruebe la carga de archivos localmente en el servidor http

Introduce la URL en la barra de direcciones

http://121.43.231.**/

puede ser visto

 

 Después de hacer clic en "Seleccionar archivo", seleccione el archivo y haga clic en Cargar, el archivo se cargará en el directorio de carga del servidor http.

También puede cargar archivos localmente usando la línea de comando. Si desea cargar el "D:\PIC\POST.png" local al servidor http, puede usar el siguiente comando:

D:\PIC>curl -F "file=@D:\PIC\POST.png" http://121.43.231.**/upload
File uploaded successfully.

3.3.3 Pruebe la descarga de archivos localmente al servidor http

Haga clic en "Descargar" en Descargar para descargar el archivo.

3.3.4 Pruebe el área de servicio HTTP para eliminar archivos

Haga clic en "Eliminar" en Eliminar para eliminar el archivo.

4. Establecer el nombre de dominio para el servidor HTTP

Hace mucho tiempo, compré un nombre de dominio en AWS, pero nunca lo usé.

(La compra de AWS requiere una tarjeta de crédito internacional. Puede comprar a través de Alibaba Cloud. La compra del nombre de dominio de Alibaba Cloud es obviamente similar a AWS. La página de inicio de Alibaba Cloud tiene "nombre de dominio". Verifique si tiene un nombre real verificado, cargue la imagen de la tarjeta de identificación y pasar la verificación de la misión para comprar)

El DNS ahora se puede configurar para resolver nombres de dominio para servicios HTTP.

Pasos de configuración:

Ingrese al sitio web oficial de AWS, complete el inicio de sesión, ingrese "Panel de Route 53", haga clic en "Zonas alojadas", haga clic en su propio nombre de dominio, haga clic en "Crear registro" y luego configure de acuerdo con la figura a continuación. Una vez completada la configuración, haga clic en "guardar", espere un momento, se encuentra que funcionó.

 Una vez en efecto, podemos pasar

C:\Users\harry_zhang>curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1","key2":"value2"}' http://xiao********.com/upload_data
Received!

Envía un mensaje al servidor HTTP.

también disponible a través de

http://xiao********.com

Accede a la página del servidor HTTP.

5. Finalmente

        Este es el registro de mi primer uso del servidor Alibaba Cloud como referencia.

Supongo que te gusta

Origin blog.csdn.net/qq_33163046/article/details/131734534
Recomendado
Clasificación