1. 程式人生 > >Flask+uWSGI+Nginx實現簡單檔案上傳web應用

Flask+uWSGI+Nginx實現簡單檔案上傳web應用

本文不講理論,只講過程!!!

主機環境:

rhel 7.2 x86_64bit 192.168.1.112 python系統自帶

1、安裝flask

pip install Flask
# tar -xzvf pip-1.5.4.tar.gz
# cd pip-1.5.4
# python setup.py install

2、安裝uWSGI

pip install uwsgi

安裝過程如果有以下錯誤:

ImportError: No module named setuptools

可知setuptools沒有安裝,安裝setuptools就好了

#  wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz

解壓setuptools包

# tar -xvf setuptools-0.6c11.tar.gz

# cd setuptools-0.6c11

編譯setuptools

# python setup.py build

開始執行setuptools安裝

# python setup.py install

若報檔案找不到的錯誤,多半因為python-devel沒有正確安裝,執行以下命令

yum install python-devel -y

3 、 安裝Nginx

# tar -zxvf nginx-1.12.2.tar.gz
# cd nginx-1.12.2

為了安全遮蔽具體的版本號
# vim src/core/nginx.h

#define NGINX_VER          "Lockey23"// NGINX_VERSION

如果執行了上一步,最後編譯安裝的版本應該是這樣的:
這裡寫圖片描述

關閉編譯時的除錯模式,這樣編譯得到的原始碼包的大小會減少很多
vim auto/cc/gcc

# debug
CFLAGS="$CFLAGS -g"

對於比較純淨的系統可能更需要安裝一些依賴,以下步驟是基於rhel7.2的操作:

# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# sed -i  's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo
# yum clean all
# yum install gcc-c++ pcre-devel openssl-devel -y

然後執行配置和編譯安裝以及安裝完成的服務啟動驗證:

# ./configure --prefix=/usr/local/nginx --with-file-aio --with-threads --with-http_ssl_module --with-http_stub_status_module
# make && make install
# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
# nginx -t
# nginx 
# curl localhost

4、編寫你的應用:

[[email protected] flaskapp]# tree
.
├── app.py
├── app.pyc
├── static
│?? ├── js.js
│?? └── main.css
├── templates
│?? ├── index.html
│?? └── page_not_found.html
└── uwsgi.ini

2 directories, 7 files

5、uwsgi.ini檔案解析:

[uwsgi]  
socket = 127.0.0.1:8080#繫結的埠號
pythonpath = /root/flaskapp#專案路徑
module = app#要執行的程式、模組
callable = app#模組內的Flask例項
processes = 2#uwsgi程式開啟的程序數
threads = 2#uwsgi程式開啟的執行緒數

6、NGINX配置檔案重點內容解析:

location / {
       include      uwsgi_params;
       uwsgi_pass   127.0.0.1:8080;  # 指向uwsgi 所應用的內部地址,所有請求將轉發給uwsgi 處理
       uwsgi_param UWSGI_CHDIR  /root/flaskapp/; # 指向應用目錄
       uwsgi_param UWSGI_SCRIPT app:app; # 指定啟動程式
   }

7、啟動uWSGI服務以及Nginx服務進行訪問測試:

[[email protected] flaskapp]# ls
app.py  app.pyc  nginx.conf  static  templates  uwsgi.ini
[[email protected] flaskapp]# uwsgi uwsgi.ini 


[[email protected] ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[[email protected] ~]# nginx -s reload

以下為簡單的測試頁面:

無驗證登入:
這裡寫圖片描述

檔案上傳功能:
這裡寫圖片描述

檔案線上預覽功能:
這裡寫圖片描述

本文部分細節未列出,留給後來者採坑學習,有問題可以留言交流!

相關推薦

Flask+uWSGI+Nginx實現簡單檔案web應用

本文不講理論,只講過程!!! 主機環境: rhel 7.2 x86_64bit 192.168.1.112 python系統自帶 1、安裝flask pip install Flask # tar -xzvf pip-1.5.4.tar

struts實現簡單檔案

以前呢 實現一個檔案上傳需要在servlet裡寫很多的程式碼 然後用struts也就兩三行程式碼即可完成操作。 一般struts的action裡要有一個公用的類 裡面放著那些資料處理返回碼跟資訊返回碼等等 public class BaseAction implement

Django實現任意檔案(最簡單的方法)

利用Django實現檔案上傳並且儲存到指定路徑下,其實並不困難,完全不需要用到django的forms,也不需要django的models,就可以實現,下面開始實現。 第一步:在模板檔案中,建立一個form表單,需要特別注意的是,在有檔案上傳的form表單中,method屬

Spring MVC實現MultipartFile檔案功能

前端 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>修改資訊</title> </head> <body

javaweb實現圖片檔案

圖片上傳到檔案中,可以直接上傳圖片到目錄中,也還可以將圖片檔名、檔案路徑寫入到資料庫中,也可以在程式中動態的建立檔案路徑。 參看:http://blog.csdn.net/lmdcszh/article/details/9201173 package com.ioif.wha.ima

TP5實現檔案及展示

view層上傳: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body&

jq實現前端檔案

FormData FormData是XMLHttpRequest Level 2 新增的一個介面。 使用FormData可以實現各種檔案上傳。   使用 // 建立FormData的例項 var formdata = new FormData(); // 用append()為例項新

webuploader實現檔案

問題:  1: 上傳失敗,不知道怎麼在服務端寫返回值?  2: 做個多檔案上傳怎麼辦?  1:上傳失敗,不知道怎麼在服務端寫返回值? (1):首先在初始化Web Uploader  的方法寫上 server: 'http://localho

在SSM框架中使用AJAX實現檔案

今天來學習一下在SSM框架中使用ajax實現檔案的上傳。 1.首先我們需要一個搭建好的SSM框架專案,這個在這篇文章裡不是重點,自行先搭建好需要的專案。 這裡我是用的jsp頁面來和後臺介面關聯,在jsp檔案中我們需要一個form表單,請求方法為POST,enctype="mu

JAVAWeb簡單檔案

版權宣告:本文為博主原創文章,未經博主允許不得轉載。https://blog.csdn.net/qq_40348465/article/details/83758904 1.先匯入兩個包:commons-fileupload-1.3.3.jar,commons-io-2.6.jar。 2.前

java jsch實現sftp檔案,並且控制的速度,同時監控進度

工作中,有些環境頻寬有限,比如說專線,通常頻寬比較小,又不便宜,當業務量大的時間,如果在專線上還要傳輸檔案的話,往往在檔案傳輸的時間會導致頻寬佔慢,就有可能導致時實交易進不來,有可能影響交易,今天貼一下 jsch實現sftp檔案上傳,並且控制上傳的速度,同時監控上傳進度,供大家參考。

AJAX+Servlet3.0實現非同步檔案(單個檔案、多個檔案、帶檔案的表單提交)

   一、上傳單個檔案           1.JSP頁面程式碼       <%@ page language="java" contentType="text/html;

Java Web FormData格式資料流實現檔案

1.html <``input type="file" multiple="multiple" accept="image/gif, image/jpeg, image/png, image/jpg, image/bmp" /> 2.JS $(document).on("ch

java實現檔案01

1、html程式碼 <html> <head> <link rel="stylesheet" type="text/css" href="table.css" /> <link rel="stylesheet" type="text/css"

TCP實現文字檔案

伺服器端: import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.InputS

easyPoi實現Excel檔案下載

easyPoi 官方API http://easypoi.mydoc.io/ pom引入 <dependency> <groupId>cn.afterturn</groupId> <

vue+element+springboot實現.txt檔案

前端html程式碼 <div class="p-upload-box"> <form action='dic/uploadWord' enctype='multipart/form-data' method='post' id="fileUpl

Spring MVC實現檔案

1、修改POJO和DAO實現類  public class User{ //......其他屬性省略 private String idPicPath;//證件照路徑 private String workPicPath;//工作證照片路徑

java實現檔案至本地伺服器

博主最近在做一個內網專案,內部可以訪問外部資料,但是外部訪問不了內部資料,這也就造成了可能檔案無法上傳,所以博主另闢蹊徑,在本地伺服器上建立一個資料夾專門用來儲存上傳資料。 環境:jdk,tomcat 一、前臺上傳檔案(ajax上傳) <input type=

C#實現檔案功能(二)---webuploader

                                        一、問題來源 近些時候,處理專案的時候發現如果使用者上傳大檔案的時候使用HtmlInputFile通過httppostfilebase 來實現上傳,如果檔案較小的話較小的話,上傳沒有問題(4M)