Proceso de configuración del servidor Tencent Cloud (CentOS + Python + Django + Nginx + uWSGI)

Prefacio

  Este blog es el proceso de configuración de Tencent Cloud Server (Alibaba Cloud Server también está disponible). El software requerido es CentOS 7.5, Python 3.7.8, Django 3.1, Nginx, uWSGI. Si usa Django para desarrollar un sitio web, este es uno bueno. Elija, a través de este tutorial, puede implementar un sitio web desarrollado por Django en el servidor.

1. Instale y actualice herramientas de desarrollo y varios paquetes de dependencia

	yum -y groupinstall "Development tools"
	yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel gcc automake autoconf libtool make wget

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

2. Instala Python3

  • Descargue Pyhton3 en el /usr/localdirectorio [Es lento, lo descargué localmente y lo cargué a través de WinSCP ]
	cd /usr/local
	wget https://www.python.org/ftp/python/3.7.8/Python-3.7.8.tgz
  • Descomprima el paquete de código fuente de Python
	tar -zxvf Python-3.7.8.tgz
  • Ingrese al directorio Python-3.7.8, compile e instale
	cd Python-3.7.8
	./configure --prefix=/usr/local/python3
	make && make install
  • Establecer un enlace suave para facilitar el uso directo en la terminal (agregado a la variable de entorno del sistema)
	ln -s /usr/local/python3/bin/python3 /usr/bin/python3
	ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
  • Mira esta versión
	python3 -V
	pip3 -V
  • Actualiza la versión de pip3 (opcional)
	pip3 install --upgrade pip

Inserte la descripción de la imagen aquí

3. Configurar el entorno virtual

  • Instale virtualenv para facilitar la gestión de proyectos de diferentes versiones
	pip3 install virtualenv
  • Establecer enlace suave
	ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
  • La instalación exitosa crea dos carpetas en el directorio raíz, que se utilizan principalmente para almacenar archivos env y del sitio web
	mkdir -p /data/env
	mkdir -p /data/wwwroot
  • Cambie a la /data/env/siguiente, cree un entorno virtual de la versión especificada
	cd /data/env/
	virtualenv --python=/usr/bin/python3 pyweb
  • Inicie el entorno virtual
	cd /data/env/pyweb/bin
	source activate
  • Salir del entorno virtual
	deactivate

Inserte la descripción de la imagen aquí

4. Instale MySQL

  • Descargue e instale el repositorio oficial de Yum de MySQL
	wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
  • Use el comando anterior para descargar directamente el repositorio de Yum para la instalación e instálelo directamente con yum
	yum -y install mysql57-community-release-el7-10.noarch.rpm

Inserte la descripción de la imagen aquí

  • Instalar el servidor MySQL
	yum -y install mysql-community-server
  • Primero inicie MySQL
	systemctl start mysqld.service
  • Verifique el estado de ejecución de MySQL, si aparece, active (runing)significa que MySQL se ha iniciado
	systemctl status mysqld.service

Inserte la descripción de la imagen aquí

  • Descubra la contraseña de root en el archivo de registro
	grep "password" /var/log/mysqld.log
  • Entrar en la base de datos
	mysql -u root –p 
  • cambiar la contraseña
	ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

Inserte la descripción de la imagen aquí

5. Instale Django y uWSGI

  • Instale Django y uWSGI (ingrese al entorno virtual antes de la instalación)
	pip3 install django
	pip3 install uwsgi
  • También instale pymysql, porque MySQL local es la versión 8.0, para mayor compatibilidad y conveniencia de depuración
	pip3 install pymysql
  • Establecer enlace suave
	ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
  • Enciende el firewall
	# 查看防火墙是否开启
	systemctl status firewalld
	# 开启防火墙
	systemctl start firewalld

Inserte la descripción de la imagen aquí

  • Abra el puerto (agregue el puerto 8001 y vuelva a cargar la configuración de la política)需要在服务器管理界面配置一下安全组,加入8001端口
	firewall-cmd --zone=public --add-port=8001/tcp --permanent
  • Vuelva a cargar la configuración de la política para que la nueva configuración sea efectiva
	firewall-cmd --reload
  • Ver puertos y procesos abiertos
	netstat -tunlp
	netstat -lnp| grep 8001
  • /data/wwwroot/ChatRobotCree un test_uwsgi.pyarchivo nombrado en el directorio raíz del proyecto del sitio web
	cd /data/wwwroot
	mkdir ChatRobot
	cd ChatRobot
	vim test_uwsgi.py
	# 文件内容如下:
	def application(env, start_response):
	    start_response('200 OK', [('Content-Type','text/html')])
	    return [b"Hello World"]
	# 内容写入之后 ESC 退出输入模式,切换到命令模式
	# :w 保存	:q 退出
  • Ingrese el siguiente comando para iniciar uWSGI. En este momento, ingréselo en el navegador de la computadora y presione ip:8001Enter para ver las Hello Worldpalabras de visualización del navegador , lo que significa que el servidor puede recibir solicitudes desde el navegador.
	uwsgi --http :8001 --wsgi-file /data/wwwroot/ChatRobot/test_uwsgi.py

Inserte la descripción de la imagen aquí

  • UWSGI y el puerto se pueden iniciar con el siguiente comando
	uwsgi --chdir /data/wwwroot/ChatRobot --home /data/env/pyweb --http :8001 --module=ChatRobot.wsgi:application

  En este momento, ingrese la ip en el navegador, si no es un accidente, el sitio web se ha cargado, pero falta el archivo estático.

6. Instale y configure Nginx

  Antes de la instalación, hablemos del directorio del sitio web. A continuación, agregaremos algunas líneas de código:

Inserte la descripción de la imagen aquí

	# 在urls.py文件中添加如下代码
	from django.urls import path
	from tencent import views
	
	urlpatterns = [
	    path('wx', views.TencentView, name='TencentView')
	]
	
	# 在views.py文件中添加如下代码
	from django.http import HttpResponse

	def TencentView(request):
		return HttpResponse(content="haha this is a tencent")
  • Instalar la biblioteca epel
	yum install epel-release –y
  • Instalar la biblioteca Nginx
	yum -y install nginx

Inserte la descripción de la imagen aquí

  • Inicie el servicio Nginx (asegúrese de que el puerto 80 esté abierto y no ocupado, si no está abierto, consulte la configuración anterior para abrir el puerto a través del firewall)
	systemctl start nginx.service
	或
	service nginx start
  • Configure Nginx, use el siguiente comando para encontrar la ruta de instalación
	find / -name nginx.conf
  • El nginx.confarchivo de cambios es el siguiente:
	#user  nobody;
	worker_processes  2;
	
	error_log  /data/wwwroot/ChatRobot/error.log;
	error_log  /data/wwwroot/ChatRobot/error.log  notice;
	error_log  /data/wwwroot/ChatRobot/error.log  info;
	
	#pid        logs/nginx.pid;
	
	
	events {
    
    
	    worker_connections  1024;
	}
	
	
	http {
    
    
	    include       mime.types;
	    default_type  application/octet-stream;
	
	    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
	    #                  '$status $body_bytes_sent "$http_referer" '
	    #                  '"$http_user_agent" "$http_x_forwarded_for"';
	
	    access_log  /data/wwwroot/ChatRobot/access.log  main;
	
	    sendfile        on;
	    #tcp_nopush     on;
	
	    #keepalive_timeout  0;
	    keepalive_timeout  65;
	
	    fastcgi_connect_timeout 300; 
	    fastcgi_send_timeout 300; 
	    fastcgi_read_timeout 300; 
	    fastcgi_buffer_size 64k; 
	    fastcgi_buffers 4 64k; 
	    fastcgi_busy_buffers_size 128k; 
	    fastcgi_temp_file_write_size 128k;
	
	    #gzip  on;
	
	    server {
    
    
		listen 80;
		server_name localhost;
		charset utf-8;
	
		client_max_body_size 75M;
	
		location /static {
    
    
			alias /data/wwwroot/ChatRobot/static;
		    	proxy_connect_timeout   18000;   
	          	proxy_send_timeout      18000;  
	          	proxy_read_timeout      18000;  
		}
	
		location /media {
    
    
			alias /data/wwwroot/ChatRobot/media;
		}
	
		location / {
    
    
			uwsgi_pass 127.0.0.1:8001;
			include /etc/nginx/uwsgi_params;
		}
	}
  • Una vez completada la configuración, compruebe si es legal
	nginx -t

Inserte la descripción de la imagen aquí

  • Cree robot_uwsgi.iniun archivo de configuración nombrado en el directorio raíz del proyecto del sitio web con el siguiente contenido:
	[uwsgi]
	chdir = /data/wwwroot/ChatRobot
	home = /data/env/pyweb
	module = ChatRobot.wsgi:application
	master = true
	processes = 4
	harakiri = 600
	max-requests = 5000
	socket = 127.0.0.1:8001
	uid = 1000
	gid = 2000
	pidfile = uwsgi.pid
	daemonize = uwsgi.log
	vacuum = true
  • Inicie uWSGI y Nginx
	uwsgi --ini /data/wwwroot/ChatRobot/chatrobot_uwsgi.ini
	service nginx start
  • Compruebe si uWSGI y nginx se inician correctamente
	ps -aux | grep uwsgi
	ps -aux | grep nginx

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

  • En este momento, ingrese la dirección IP en el navegador para visitar el sitio web

Inserte la descripción de la imagen aquí
  ¡OKAY! ¡Eso es!

Inserte la descripción de la imagen aquí

  • Si desea finalizar la operación, puede utilizar el siguiente comando
	pkill -9 uwsgi
	pkill -9 nginx

7. Suplemento de parte de Django

  • Construye un proyecto
	django-admin startproject ChatRobot(工程名)
  • Inicie la base de datos MySQL y cree tencentuna base de datos llamada
	net start MySQL80(我的本地MySQL是8.0版本的)
	mysql -uroot -p
	create database tencent;
  • En __init__.pyagregar código para ser compatible con la versión MySQL8.0
	import pymysql 
	pymysql.install_as_MySQLdb()
  • Django usa la base de datos SQLite de forma predeterminada y settings.pyMySQL está configurado en el archivo
	DATABASES = {
    
    
	    'default': {
    
    
	        'ENGINE': 'django.db.backends.mysql',
	        'NAME': 'tencent',
	        'USER': '用户名',
	        'PASSWORD': '密码',
	        'HOST': '数据库服务器IP,本地是localhost',
	        'PORT': '端口名,默认是3306',
	    }
}
  • Crea una aplicación
	python manage.py startapp tencent(应用名)
  • En el settings.pyarchivo, se 'tencent'puede añadir a INSTALLED_APPSla
  • puesta en marcha
	# ip可以不写,即默认本机ip
	# 端口号可以不写,默认为8000,可以修改
	python manage.py runserver ip:port

Supongo que te gusta

Origin blog.csdn.net/qq_42730750/article/details/112292993
Recomendado
Clasificación