Directorio de artículos
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
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
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
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
- 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
- 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';
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
- 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
- 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:
# 在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
- 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
- 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
- En este momento, ingrese la dirección IP en el navegador para visitar el sitio web
¡OKAY! ¡Eso es!
- 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
tencent
una base de datos llamada
net start MySQL80(我的本地MySQL是8.0版本的)
mysql -uroot -p
create database tencent;
- En
__init__.py
agregar 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.py
MySQL 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.py
archivo, se'tencent'
puede añadir aINSTALLED_APPS
la - puesta en marcha
# ip可以不写,即默认本机ip
# 端口号可以不写,默认为8000,可以修改
python manage.py runserver ip:port