El servidor en la nube crea un proyecto de Python para lograr la optimización académica chatgpt

1 preparación del servidor

Un servidor que pueda acceder a openAI. Consulte mi artículo anterior para obtener detalles sobre la configuración del continente:

Cloud Function construye el agente OpenAI disponible en el continente

Aquí usamos el servidor en la nube Tencent, el sistema OpenCloud centos 8.6

2 Configuración del servidor en la nube

Configuración FTP 2.0

El artículo anterior escribió cómo configurar FTP para la transferencia de archivos con el servidor en la nube de Linux

El segundo capítulo de Cloud Function Building OpenAI Agents disponible en el continente

entorno virtual 2.1 python

El servidor de la nube parece tener su propio python 3.6.8. Dado que el entorno requerido por el proyecto es relativamente nuevo, necesita ser reinstalado. Cuanto más nuevo, mejor, de lo contrario habrá muchos problemas inexplicables, o será masacrado por el virtual primero el medio ambiente. Por ejemplo:
inserte la descripción de la imagen aquí
desinstale Python 3.6.8:

sudo yum remove python=3.6.8

O desinstale Python (recomiende esto, desinstale todo, para evitar algunos de los python2 restantes para usted):

sudo yum remove python

2.1.1 configuración de instalación de python3.9

  1. Instale Python 3.9:
sudo yum -y install python=3.9
  1. Compruebe que Python 3.9 se instaló correctamente:
python --version
  1. Si la instalación no tiene éxito, puede intentar instalar el almacén EPEL primero y luego repetir 1 y 2
sudo yum -y install epel-release

Si no es centos, el paquete de software de terceros que viene con él puede no ser delicioso, puede probarlo con apt-get

2.1.2 Descargar proyecto python

  1. Busque una carpeta para colocar el proyecto y confirme que puede encontrar esta ruta.
 git clone https://github.com/binary-husky/chatgpt_academic.git

Si no ha instalado git, aún necesita instalar git, pero creo que es demasiado problemático instalar git, y la velocidad de descarga de github puede ser lenta, así que lo descargué localmente y lo transfirí a través de ftp.

Y es más conveniente modificarlo si lo descargas localmente, no creo que quieras usar ese desagradable vim, ¿o sí?

  1. Copie config.py en un archivo config_private.py y modifique API_URL en él para hacer referencia a la dirección proxy de Hong Kong obtenida en el artículo anterior más la siguiente sección /v1/chat/completions

Porque la dirección proxy de Hong Kong solo significa https://api.openai.com

  1. Debido a que está mapeado directamente, no se necesita un proxy,USE_PROXY = False

  2. API_KEY Complete su propia clave

  3. Además, recuerda agregar un parámetro en el último párrafo del archivo main.py share=True, de lo contrario no se generará ningún enlace externo (no solo accesible en la LAN).

demo.queue(concurrency_count=CONCURRENT_COUNT).launch(server_name="0.0.0.0", share=True, server_port=PORT, auth=AUTHENTICATION, favicon_path="docs/logo.png")

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

2.1.3 Crear un entorno virtual de python

Si su linux tiene una interfaz gráfica, puede considerar usar pycharm, es más amigable instalar python en él y deshacerse de la línea de comando.

Para crear un entorno virtual en Python,

Busque una carpeta para poner el entorno virtual, lo pongo en el directorio del proyecto,

Puedes seguir estos pasos:

  1. Instale virtualenvel módulo:

    pip install virtualenv
    
  2. En la línea de comando, navegue hasta el directorio donde desea crear el entorno virtual y cree el entorno virtual:

    virtualenv env_name
    

    donde env_nameestá el nombre que le quieres dar al entorno virtual. envTenga en cuenta que esto creará una nueva carpeta en el directorio actual e instalará el entorno virtual en ella.

  3. Activar el entorno virtual. Para activar un entorno virtual desde la línea de comandos, ejecute el siguiente comando:

    source env_name/bin/activate
    

    En sistemas Windows, para activar el entorno virtual, ejecute el siguiente comando:

    env_name\Scripts\activate
    
  4. Ahora, en el entorno virtual, puede instalar el paquete de instalación correspondiente usted mismo. En este proyecto,

    python -m pip install -r requirements.txt
    

Cabe señalar que el directorio en este momento debe ser el directorio del proyecto; de lo contrario, no se puede encontrar el archivo requirements.txt, puede verificar pwdla ruta del directorio actual y también puede lsverificar qué archivos están bajo la ruta actual.

  1. Con el entorno y el proyecto, puede ejecutarlo directamente.

    python main.py
    

Si realizó los cambios en la sección 2.1.2 ok, está listo y se generarán dos enlaces. La salida se parece a esto:

inserte la descripción de la imagen aquí

Está listo ahora. De hecho, se puede abrir a través de la URL pública,

En cuanto a si puede responder a la pregunta, depende de si su APIkey es correcta y si la dirección del proxy es correcta.

inserte la descripción de la imagen aquí

Pero hay un problema muy vergonzoso: cuando sales del programa python, el programa se cierra y el enlace deja de ser válido.

Y cuando su host local cierra la conexión con el servidor en la nube, el programa python también sale,

Si no puede ejecutar el host local sin cerrar la conexión, ¿cuál es el punto de ir a la nube?

Entonces, ¿cómo quedarse para siempre?

3 Proyecto "servicio" (proyecto Python ejecutándose en segundo plano)

Para que sea significativo ir a la nube,

La primera reacción es "servir" el programa.

Después de pensar en las palabras clave, se ejecuta en segundo plano.

en el directorio del proyecto anterior; en el entorno virtual anterior

nohup python -u main.py > logfile.log 2>&1 &

explicar:

  • nohup no está especificado para ejecutarse en segundo plano, pero este nohup es para permitir que el programa se ejecute para siempre, no tiene nada que ver con el anverso y el reverso (esto no necesita cambiarse)

  • "-u" significa que el caché no está habilitado y la información de impresión se envía al archivo de registro en tiempo real (si no agrega -u, el archivo de registro no actualizará la información de la función de impresión en el código en tiempo real), pero el programa aún se ejecuta, pero en general todavía no es
    bueno Cómodo, fuera de control. Es decir, sientes que el programa parece haberse derrumbado.

  • main.py Este es el programa principal del proyecto, que es el programa que desea ejecutar

  • "> logfile.log" Este corchete de cierre es para colocar su registro de salida en el siguiente archivo de registro logfile.log

  • 2>&1 Este 2 representa la salida del mensaje de error cuando ocurre un error >& Esto representa la redirección; 1 representa la salida estándar, por lo que la combinación es redirigir el mensaje de error a la salida estándar

  • & Esto significa ejecutar en segundo plano

Luego, la información de salida específica se puede ver en el archivo logfile.log.El comando para ver es:

cat logfile.log

URL localyURL públicaestá todo ahí, incluyendo supuerto web, información de proxy, etc. Aunque publicURL dice que es válido por 72 horas, pero después de mi medición real, es indefinido, así que sé feliz.

Si no se hace bien, el comando nohup también le dará un número de proceso. Si encuentra algo mal, recuerde cerrar el proceso y comenzar de nuevo (¡después de todo, el comando nohup se ejecutará en segundo plano para siempre!)

kill -9 PID

-9 debería ser un atributo como matar imprudentemente (no creas que es el número de proceso, simplemente jugué hasta morir de esta manera); PID se refiere al número de proceso, que es el valor devuelto por el comando anterior.

Si siente que todo está bien después de ejecutarse en segundo plano, ciérrelo y luego descubra que algo está mal, pero no puede encontrar el proceso, ¿cómo encontrar el proceso?

ps aux |grep main

Eso es todo.

Pero este enlace reenviado por huggingface conducirá a una carga más lenta. Y si quieres acceder a través de tu ip de red pública o a través de tu nombre de dominio,

Considere localURL

4 acceso localURL (acceso IP de red pública, acceso de nombre de dominio)

Si desea acceder directamente a través de localURL, debe agregar reglas de firewall al servidor en la nube y abrir puertos en el sistema del servidor en la nube.

4.1 Agregar reglas de firewall al servidor en la nube

inserte la descripción de la imagen aquí

4.2 El firewall del sistema del servidor en la nube libera los puertos

En lugar de iptables, use firewalld

  1. Abra el servicio de firewall firewalld
# 开启防火墙服务
sudo service firewalld start
或者
sudo systemctl start firewalld
# 重启防火墙服务
sudo service firewalld restart
# 关闭防火墙服务
sudo service firewalld stop
  1. Ver el estado del servicio del cortafuegos
# 查看防火墙服务状态
sudo systemctl status firewalld
# 查看防火墙状态
sudo firewall-cmd --state
  1. En el estado de ejecución, agregue los puertos requeridos al firewall
# 查看防火墙服务状态
sudo firewall-cmd --permanent --zone=public --add-port=666/tcp
或者
sudo firewall-cmd --zone=public --add-port=5151/tcp --permanent

# 重新加载配置
sudo firewall-cmd --reload

La función del comando es abrir permanentemente los puertos 666 y 5151 del protocolo tcp al dominio público como administrador, es decir, dejar pasar el tráfico tcp de estos dos puertos.

Agregue los puertos que desee.

Si comete un error y desea eliminarlo, simplemente cambie add-port a remove-port. Por ejemplo, Google ha deshabilitado algunos puertos inseguros:
Google restringe los puertos
. 6666 está incluido.

sudo firewall-cmd --permanent --zone=public --remove-port=6666/tcp
  1. Ver puertos abiertos
# 查看对公开域永久放开的端口
sudo firewall-cmd --permanent --zone=public --list-ports
或者
# 列出所有的firewalld规则
sudo firewall-cmd --list-all

Si primero ejecuta el proyecto Python en segundo plano, encuentra un puerto web aleatorio y luego agrega reglas de firewall, ya puede acceder a la aplicación web a través de la red pública ip+port.

Si desea corregir este puerto liberado, para no volver a liberar el puerto cada vez que lo ejecuta, modifique el archivo de configuración de python para establecer el puerto fijo.

4.3 Modificar el puerto en el proyecto python

Vaya a la ruta del proyecto python para modificar el puerto en el archivo de configuración config_private.py, WEB_PORT = -1lo que significa que el puerto es aleatorio cada vez que se enciende, lo cual es problemático, así que lo cambié al puerto que quiero dejar ir, correspondiente a las reglas de firewall anteriores.

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

Luego vuelva a ejecutarlo como en el Capítulo 3.

5 acceso de nombre de dominio

5.1 Presentación

Después de trabajar en él durante unos días, fue extremadamente problemático, los requisitos aún eran estrictos y mi mentalidad colapsó.

5.2 Modificar la resolución de DNS (si no quieres archivar, usa Cloudflare)

Simplemente regístrese para obtener una cuenta con el panel de control de Cloudflare
y comience a usarlo de forma gratuita.

  1. Regístrese para obtener una cuenta de panel de control de Cloudflare para comenzar a usarla de forma gratuita.
  2. Agregar sitio (Agregar sitio), ingrese su nombre de dominio.
  3. Luego, simplemente siga las instrucciones, si no, simplemente siga el valor predeterminado, guarde hasta el final y guarde el servidor DNS que le dio (para modificarlo al servidor DNS del servidor en la nube más adelante). Después de enviar, recibirá un correo electrónico que Cloudflare analizó dentro de las 24 horas:
    inserte la descripción de la imagen aquí
  4. Encuentre el registro del nombre de dominio en el producto en la nube del nombre de dominio que compró, luego elija administrar el nombre de dominio, modifique el servidor DNS en la resolución DNS y reemplácelo con la dirección que acaba de guardar.

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
5. Espera a que haga efecto,

análisis de https,,, por escribir.

Supongo que te gusta

Origin blog.csdn.net/weixin_43938876/article/details/130652335
Recomendado
Clasificación