flask项目上线部署

这篇文档是我回滚服务器以后从零开始操作的,适合新手小白,大神勿喷!

(假设看这篇文档之前你已经有了自己的服务器和自己的域名)
(假设你已经会将自己的项目文档放进服务器)
下面开始我们的操作:
1, 更新一下系统:

apt update

2,安装nginx

apt install nginx

3,安装MySQL

apt install mysql-server

4, 安装git apt install git

5,安装vim apt install vim

6,安装虚拟开发环境

​ 1.安装pyenv

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

  1. 将安装路径写入~/.bashrc

    vim ~/.bashrc

    将以下三条语句写入 :(安装pyenv最后生成的3句话)

    export PATH="/root/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"

    $ source ~/.bashrc #配置立刻生效

    $ echo $PATH
    #如果路径第一个结尾是shims则表示成功
    /home/python/.pyenv/plugins/pyenv-virtualenv/shims:/home/python/.pyenv/shims:/home/python/.pyenv/bin:/home/python/bin:/home/python/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    
    #也可以将上面三条命令写入到~/.barsh_profile,然后重启一下shell
    
     更新一下
    $ pyenv update
    

    然后就可以使用了

    查看pyenv的安装版本: $ pyenv

    #1.查看pyenv当前支持哪些Python版本
    python@ubuntu:~$ pyenv install --list
    Available versions:
      2.1.3
      2.2.3
      2.3.7
      ...
    

    安装python

    #1.在安装python之前,我们必须要安装python所需要的依赖包,这个必须要安装,安装会失败的:
    $ sudo apt-get install libc6-dev gcc
    $ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
    
    #2. 安装python
    $ pyenv install 3.6.5 -v  #-v 以日志模式显示安装过程
    #因为pyenv会自动到github上下载,速度超慢,所以一般会选择使用curl或者wget下载到~/.pyenv/cache下,然后再用pyenv安装,下面是可选的安装模式
    
    $ cd ~/.pyenv
    $ sudo mkdir cache
    $ wget -c http://mirrors.sohu.com/python/3.6.5/Python-3.6.5.tar.xz -P  ~/.pyenv/cache/
    $ pyenv install 3.6.5 -v
    
    #3.更新pyenv数据库
     $ pyenv rehash
    
    #4.列出所安装的python版本
      $ pyenv versions
    
    #5.切换python版本
    $ pyenv  global 3.6.5
    
    #6.验证版本
     $ python
    

首先使用pyenv建立一个虚拟开发环境,然后使用pip安装

pyenv virtualenv 3.6.5 flask

然后将你的项目以及数据库的sql文件放进 ~/var/www/HaiTao HaiTao是项目根目录

切换到项目根目录下,启动虚拟机 pyenv activate flask

更新一下虚拟环境

pip freeze

pip install --upgrade pip

安装flask pip install Flask

pip install flask-script

pip install Flask-Cache

pip install Click

pip install Flask-Migrate

pip install Flask-RESTful

pip install Flask-SQLAlchemy

pip install Flask-Session

pip install Mako

pip install MarkupSafe

pip install pillow

安装MySQL pip install pymysql

安装uwsgi pip install uwsgi

打开uwsgi配置文件 cd ~/var/www/HaiTao vim uwsigconf.ini

[uwsgi]   

  # 外部访问地址,可以指定多种协议,现在用http便于调试,之后用socket  #
  socket = 0.0.0.0:5000
  chdir =  /root/var/www/HaiTao
  wsgi-file = manage.py
  callable = app
  plugins = python# 这行一定要加上,不然请求时会出现-- unavailable modifier requested: 0 --错误提示

  # 处理器数
  processes = 1

  # 线程数
  threads = 2

试着运行nginx uwsgi --http 0.0.0.0:5000 --wsgi-file manage.py --callable app

ctrl + c 结束运行

切换到nginx 配置文件 cd /etc/nginx/sites-available/

建立配置文件 vim haitao

server {             
      listen 80;
      server_name www.jianfeihenshuai.xyz; #这里写自己的域名
      location / {
          # 转发端口必须和uwsgiconf.ini中socket端口一致
          uwsgi_pass      0.0.0.0:5000;
          include uwsgi_params;    # 导入uwsgi配置
          uwsgi_param UWSGI_SCRIPT manage:app;  # 指定启动程序
          # 项目的根目录
          uwsgi_param UWSGI_CHDIR  /var/www/HaiTao;
      }
      # 静态资源所在位置
      location /static {
          alias /var/www/HaiTao/static/;
      }
  }

切换到 sites-enabled 下加一个软连接

cd /etc/nginx/sites-enabled

ln -s ../sites-available/haitao haitao

ll看一下有没有成功

切到项目根目录 cd /var/www/HaiTao

试着运行nginx uwsgi --socket 127.0.0.1:5000 --wsgi-file manage.py --callable app

在浏览器输入你的域名,出现 Welcome to nginx!说明成功!

在MySQL中建立你的数据库 create database flask_ht default charset=utf8;

退出数据库,将你的数据文件导入, 切到家目录下 mysql -uroot -p flask_ht < /root/var/www/HaiTao/flask_ht.sql

然后启动nginx uwsgi --socket 0.0.0.0:5000 --wsgi-file manage.py --callable app

在浏览器输入域名看看效果

修改一下底层源码:

vim /root/.pyenv/versions/3.6.5/envs/flask/lib/python3.6/site-packages/flask_cache/jinja2ext.py

flask.ext.cache 改成 flask_cache 否则cache模块不能用

如果出现502错误,可能redis没装好: $ redis-cliping测试,看会不会出现 pong

如果没有,说明redis 没装好:apt install redis-server

apt install redis-tools

在执行运行命令之前增加nohup,在命令后增加& ,退出X-shell,程序继续运行:

nohup uwsgi --socket 127.0.0.1:5000 --wsgi-file manage.py --callable app &

如果被报端口被占用:

​ 1,首先,用ps查看进程,方法如下:$ ps -ef 找到需要杀死的进程

​ 2,此时如果我想杀了火狐的进程就在终端输入:$ kill -s 9 1827

​ 这里的1827指的是火狐的pid端口号

服务启动

  1. sudo service nginx start

  2. sudo service nginx stop

  3. sudo service nginx restart

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值