Flask入门小项目 - 搭建极简博客(7)部署到服务器,实现外网访问
目录:
零、效果
域名的话要等它备案完才能访问...
一、一些准备工作
1.购买云服务器(这里用的是阿里云的Ubuntu)
2.改服务器登录密码(做不做都行)
3.远程连接到服务器(用putty或者阿里云自带的远程连接,建议用阿里云自带的)
4.新建一个用户,赋予sudo权限,然后用这个用户登录,就不用root用户了(做不做都行)具体操作点这
5.设置默认python为python3 具体操作点这
6.安装MySQL,设置密码,新建一个schema叫blog(或者你取的其他名字) 具体操作点这
7.改pip源、升级pip、apt-get install upgrade等等七七八八的操作
8.将之前的工程文件拷到服务器中(可以用git或者其他传文件的东西)
二、虚拟环境virtualenv
pip install virtualenv # 安装virtualenv
cd /home/xxx/code/Simple-Flask-Blog # 进入工程文件夹中
virtualenv venv # 在此文件夹中创建虚拟环境venv
然后文件夹中就多了个venv文件夹,接着
source venv/bin/activate # 激活虚拟环境
三、安装依赖
pip install -r requirements.txt
四、数据库迁移
(要先在服务器中装好MySQL数据库并建一个同名的schema)
python manage.py db migrate
python manage.py db upgrate
看看数据库中是否发生变化:
sudo mysql -u root -p
输密码
show databases;
use blog; # 或 use 你的schema名称
show tables;
ctrl+D退出
五、试运行一下
python app.py
没问题,ctrl+C退出
六、gunicorn
pip install gunicorn
然后就能用gunicorn运行程序了:
gunicorn -w worker数量 -b ip:端口号 运行文件名:flask实例名
例:
gunicorn -w 1 -b 127.0.0.1:5000 app:app
gunicorn -w 1 -b 0.0.0.0:80 app:app
注: app:app中,前面的app是app.py,后面的app是app = Flask(name)
七、外网访问
在阿里云服务器管理控制台中,左边那一栏中找到网络与安全-安全组
添加安全组规则:
https://help.aliyun.com/document_detail/25475.html?spm=5176.2020520101.0.0.25b84df5shveJP#allowHttp
改这三个地方就行
授权对象改0.0.0.0/0,端口范围改你想开放的端口
其中,80端口是HTTP端口,访问xxx.xxx.xxx.xxx:80 = 访问http://xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx是公网ip)
然后在服务器终端中
gunicorn -w 3 -b 0.0.0.0:8080 app:app
这样就能在外网,比如自己手机上,访问xxx.xxx.xxx.xxx:8080了
其他端口同理
八、Nginx
sudo apt-get install nginx # 安装nginx
sudo rm /etc/nginx/sites-available/default # 删掉原来的配置文件
sudo vim /etc/nginx/sites-available/default # 编辑新配置文件
然后输入
server {
listen 80; # 80端口是http端口
server_name xxx.xxx.xxx.xxx; # 公网ip
location /{
proxy_pass http://127.0.0.1:5000; }
}
保存退出
:wq
这样当执行
gunicorn -w 3 -b 127.0.0.1:5000 main:app
的时候,也能通过访问xxx.xxx.xxx.xxx(公网ip)来访问网站
九、绑定域名
买了域名后,域名解析下就行
域名解析中记录值填服务器公网ip
接着访问域名就跟访问公网ip效果一样了
接着就会发现没有备案不让你访问啦
接着就是漫长的等备案
posted on 2020-04-11 17:45 HolaWorld 阅读(1066) 评论(0) 编辑 收藏 举报