FLASK服务器配置

一、FLASK服务器

Flask 是一个轻量级的 Web 应用框架,非常适合快速开发小型到中型的应用程序。

从搭建这个服务器开始

需要下载下面的

  • python+jupyter
  • flask
  • mysql
  • 反向代理服务器 Nginx

准备:

对Ubuntu相关资源升级

  1. linux资源升级 sudo apt-get update
  2. linux软件升级 sudo apt-get upgrade

在下载的时候记得虚拟机要拍摄快照

记录一下我搭建的过程

(未完待续更新中)

二、python

检查自己的unbuntu有没有python

1.查看unbuntu有没有python

ls -l /usr/bin | grep python

2.python可以进入编译模式

使用exit()退出

3. 将python3的指令设置为默认python(可以不用的)

建立软链接

ln -s /usr/bin/python3.8 /usr/bin/python

 测试一下发现还是ok的

已经下载了我就不再进行下载

下载安装pip

1.查看一下有没有安装

2.安装和更新pip

sudo apt install python3-pip
sudo pip3 install --upgrade pip

upgarde出现下面的错误,不影响后面的使用所以不用管他(maybe) 

juypter安装

创建一个目录存储我的notebook

注意cd到里面,没有cd的话就用修改过的代码
有的话就用参考文档里面的,后面会说到的

mkdir ~/project

安装虚拟环境

pip3 install virtualenv

安装虚拟环境扩展包

pip3 install virtualenvwrapper 

创建虚拟环境

 virtualenv notebookenv

命令激活虚拟环境

 source notebookenv/bin/activate

 

 使用命令安装juypter

pip install juypter

 使用juypter

jupyter notebook --allow-root

 生成 Jupyter Notebook 密码

 jupyter notebook --generate-config

设置 Jupyter Notebook 密码

 jupyter notebook password

停用虚拟环境

deactivate

 Jupyter Notebook 创建系统服务文件

nano /etc/systemd/system/jupyter.service

[Unit]
Description=Jupyter Notebook
 
[Service]
Type=simple
PIDFile=/run/jupyter.pid
ExecStart=/root/notebookenv/bin/jupyter-notebook --config=/root/.jupyter/jupyter_notebook_config.py --allow-root
User=root
Group=root
WorkingDirectory=/root/notebookenv
Restart=always
RestartSec=10
 
[Install]
WantedBy=multi-user.target

CTRL +S 保存 CTRL+X退出

 重新加载 systemd 守护进程

systemctl daemon-reload

启动 Jupyter Notebook 并使用以下命令使其在系统重启时启动 

systemctl start jupyter

systemctl enable jupyter
systemctl status jupyter

CTRL+C退出

将 Nginx 配置为 Jupyter Notebook 的反向代理

1.下载Nginx

apt-get install nginx -y

【和第一个参考文档基本一样我就不罗嗦这里】

2.在本机里面打开

vim ~/.jupyter/jupyter_notebook_config.py

添加下面的内容

c.NotebookApp.ip = '0.0.0.0'  # 允许从任何 IP 地址访问
c.NotebookApp.open_browser = False  # 不自动打开浏览器
c.NotebookApp.port = 8888  # 指定端口可以进行调整
c.NotebookApp.port_retries = 50  # 尝试重新分配的端口数量

jupyter notebook --ip=0.0.0.0 --port=8888 --allow-root

 root模式下一定要 --allow-root

防火墙设置

sudo ufw allow 8889/tcp

本机打开

输入密码登录成功

问题:

1.目录错误

 确保 /root/project/notebookenv/bin 目录存在,并且 root 用户有权访问它。

经过查看

ls -ld /root/project/notebookenv/bin

不在project里面 

 对路径进行修改

三、MYSQL

我采用在线上载的方式

1.下载MYSQL

sudo apt install mysql-server

查看下是不是下载成功 

mysql --version
systemctl status mysql

CTRL C退出

2.登录MYSQL

 mysql -u root -p

密码默认123456

\q退出 

创建新用户 

不需要停服务

sudo mysqld_safe --skip-grant-tables & 

CREATE USER 'myuser'@'localhost' IDENTIFIED BY '123456'; 

刷新权限

FLUSH PRIVILEGES;

授予权限

使用GRANT语句授予新用户创建数据库和表的权限,以及对数据库进行增删改查(CRUD)操作的权限。

GRANT ALL PRIVILEGES ON *.* TO 'myroot'@'%' WITH GRANT OPTION;

 刷新权限

FLUSH PRIVILEGES;

MYSQL安全配置(这里快照一下)(搞不定跳过这里)

1.安全配置指令

sudo mysql_secure_installation

我是一直回车的应该问题不大 

2. 停止mysql服务

sudo systemctl stop mysql

3.启动 MySQL 服务并跳过权限表 ()

sudo mysqld_safe --skip-grant-tables & 

4.重新开一个终端

 mysql -uroot -p

 5.SQL设置密码 

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin123!';

6.刷新权限 

FLUSH PRIVILEGES; 

 \q退出
7.重启

 systemctl restart mysql

 问题

如果走这一步就会有这么多问题还没有能力解决先放一下

启动 MySQL 服务并跳过权限表

sudo mysqld_safe --skip-grant-tables & 

1.出现/var/run/mysqld 目录不存在

root@ubuntu:~# sudo mysqld_safe --skip-grant-tables &
[1] 7768
root@ubuntu:~# 2024-08-07T06:40:02.173707Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2024-08-07T06:40:02.180719Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
 1.创建目录

sudo mkdir -p /var/run/mysqld 

2.设置正确的权限 

sudo chown -R mysql:mysql /var/run/mysqld

sudo chmod 755 /var/run/mysqld 

3.重新启动 MySQL 服务 

sudo mysqld_safe --skip-grant-tables & 

4.另外一个终端打开MYSQL

mysql -uroot -p

root@ubuntu:~# 2024-08-07T06:53:43.742493Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2. mysql开了别的进程

2024-08-07T06:53:43.871661Z mysqld_safe A mysqld process already exists 

 1.查看Mysql状态,没有开

解决方法如下:

注意kill进程是MYSQL服务器的

kill -15 IP

mysql       9005 13.7  9.9 2247696 395020 pts/0  Sl   00:10   0:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mysql/error.log --pid-file=ubuntu.pid  

 mysqld_safe A mysqld process already exists_mob64ca12d3dbd9的技术博客_51CTO博客

四、flask

1.进入虚拟环境下

 source notebookenv/bin/activate

2.下载flask

pip install Flask 

 python -m flask --version

 

3.下载依赖库

  • Flask-SQLAlchemy:用于数据库操作
  • Flask-Migrate:用于数据库迁移
  • Flask-WTF:用于表单处理
  • Flask-Login:用于用户认证
  • Flask-Bcrypt:用于密码加密
  • Flask-Cors:用于处理跨域请求

可以一起安装或者一个一个安装

pip install flask-sqlalchemy flask-migrate flask-wtf flask-login flask-bcrypt flask-cors

测试flask安装是否成功

FLASK和外部微信小程序连接

 1.防火墙开放端口,flask是使用5000的端口

ufw allow 5000/tcp

2.编写代码

 index.js

Page({
  get_data()
  {
  wx.request({
    url: 'http://ip地址:5000', 
    success (res) {
      console.log('请求成功', res.data)
    },
    fail(res)
    {
      console.log('请求失败', res)
    }
  })
  },
})

 index.wxml

<view>
<button bind:tap="get_data">测试按钮</button>
</view>

其他默认

flask

app.py

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/', methods=['GET'])
def index():
    # 返回一些数据
    response = {
        "message": "Hello from the Flask server!",
        "status": "success"
    }
    return jsonify(response)

if __name__ == '__main__':
    # 设置调试模式以便在更改代码时自动重启服务器
    app.run(debug=True, host='ip地址', port=5000)

3.运行程序

 python3 app.py

 windows本机telnet

点击测试,成功

FLASK连接内部MYSQL
MYSQL

1.创建database

 create database test2;

使用数据库

use test2

2.创建test2的user表格

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL
);
python代码

test.py

from flask import Flask
import pymysql

app = Flask(__name__)

# 配置MySQL连接
mysql_config = {
    'host': 'localhost',
    'user': 'myuser',  # 替换为你的MySQL用户名
    'password': '123456',  # 替换为你的MySQL密码
    'db': 'test3',  # 替换为你的数据库名
    'charset': 'utf8mb4',
    'cursorclass': pymysql.cursors.DictCursor
}

def get_db():
    return pymysql.connect(**mysql_config)

@app.route('/')
def index():
    db = get_db()
    cursor = db.cursor()
    cursor.execute('SELECT VERSION();')
    data = cursor.fetchone()
    cursor.close()
    db.close()
    return f'MySQL Server version: {data["VERSION()"] if data else "No data"}'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)
成功之后

 问题:

 1.Database error: (pymysql.err.OperationalError) (1698, "Access denied for user 'root'@'localhost'") (Background on this error at: https://sqlalche.me/e/20/e3q8)

错误说明:MySQL 用户 root 在尝试访问数据库时被拒绝了。这通常是因为密码不正确或用户没有适当的权限。

1.排查密码问题

没有设置root密码

创建新用户

参考文档

如何在 Ubuntu 22.04 上安装 Jupyter Notebook (linux-console.net)

基于flask框架的实现python作为微信小程序后端的方法(个人版) - 没法要了 - 博客园 (cnblogs.com)

  • 17
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值