一、FLASK服务器
Flask 是一个轻量级的 Web 应用框架,非常适合快速开发小型到中型的应用程序。
从搭建这个服务器开始
需要下载下面的
- python+jupyter
- flask
- mysql
- 反向代理服务器 Nginx
准备:
对Ubuntu相关资源升级
- linux资源升级
sudo apt-get update
- 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)