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编辑  收藏  举报

导航