当前位置:博客首页 > Python > 正文

Flask基础入门笔记

作者: Jarvan 分类: Python 发布时间: 2019-08-27 22:00 百度已收录

一、flask基础教程链接

http://docs.jinkan.org/docs/flask/quickstart.html

二、常用命令

ssh root@47.75.212.216

cd /www/wwwroot/www.lignton.com/

python XX.py

三、ngix配置

server
{
    listen 80;
    server_name www.lignton.com m.lignton.com;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/www.lignton.com;
     
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    #SSL-END
     
    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END
     
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    include enable-php-70.conf;
    #PHP-INFO-END
     
    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/server/panel/vhost/rewrite/www.lignton.com.conf;
    #REWRITE-END
     
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
     
    # 获取域名
    if ($host ~* ([a-z0-9][a-z0-9\-]+?\.(?:com|cn|net|org|info|la|xyz|cc|co|gz|ah|gd|nm|sh|tj|gov|sx|gz|sh|sc|faith|date|space)(?:\.cn)?)$ ) {
       set $domain $1;
    }
    
    # 补全www
    if ($host ~* ^([a-z0-9][a-z0-9\-]+?\.(?:com|cn|net|org|info|la|cc|xyz|co|gz|ah|gd|nm|sh|tj|gov|sx|gz|sh|sc|faith|date|space)(?:\.cn)?)$){
       rewrite ^/(.*)$ http://www.$domain/$1 permanent;
    }
     
    set $baidu_trans 0;
    if ( $http_user_agent ~* (transcoder) ) {
        set $baidu_trans "${baidu_trans}1"; 
    }
     
    set $mobile 0;
    if ( $http_user_agent ~* (nokia|sony|ericsson|mot|samsung|htc|sgh|lg|sharp|sie-|philips|panasonic|alcatel|lenovo|iphone|ipod|blackberry|meizu|android|netfront|symbian|ucweb|windowsce|palm|operamini|mobi|openwave|nexusone|cldc|midp|wap) ) {
        set $mobile "${mobile}1";
    }
     
 
    # 移动客户端访问跳转至M站
    if ($host !~* ^m\.([a-z0-9][a-z0-9\-]+?\.(?:com|cn|net|org|xyz|info|la|cc|co|gz|ah|gd|nm)(?:\.cn)?)$){
        set $baidu_trans "${baidu_trans}2";
        set $mobile "${mobile}2";
    }
     
    if ($baidu_trans = "012"){
        rewrite ^/(.*)$ http://m.$domain/$1 permanent;
    }
    if ($mobile = "012"){
        rewrite ^/(.*)$ http://m.$domain/$1;
    }
     
    # 禁止Scrapy等工具的抓取,注意已经取消curl抓取
    if ($http_user_agent ~* (Scrapy|HttpClient)) {
         return 403;
    }
    # 禁止恶意user_agent访问
    if ($http_user_agent ~* (MegaIndex|MJ12bot|NHN|Twiceler|AhrefsBot|YandexBot)) {
            return  403;
    }
     
    # 禁止非GET|HEAD|POST方式的抓取
    if ($request_method !~ ^(GET|HEAD|POST)$) {
        return 403;
    }  
     
     
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }
     
    # 图片及javascrpt缓存
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log off;
        access_log /dev/null;
    }
     
    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log off;
        access_log /dev/null; 
    }
     
     
    access_log  /www/wwwlogs/www.lignton.com.log;
    error_log  /www/wwwlogs/www.lignton.com.error.log;
     
    # proxy_pass与flask主程序端口保持一致
    location / {
        proxy_pass         http://127.0.0.1:5000/;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }    
}

四、遇到的问题

问题1:error:[Errno 98] Address already in use的解决

报错原因是端口被占用,解决方法两种:

1)更换端口重新运行

2)运行程序没有通过ctrl+c正常结束而是直接关闭Terminal或者其他非正常途径退出的时候: 通过lsof -i:(port),查看占用该端口号的进程,一般就是刚未正常退出的进程。例如 sudo lsof -i:5000,以下是查询结果:

lsof(list open files)是一个列出当前系统打开文件的工具,在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。


lsof语法格式是: lsof [options] filename ,常用命令:

lsof abc.txt 显示开启文件abc.txt的进程

lsof -c abc 显示abc进程现在打开的文件

lsof -c -p 1234 列出进程号为1234的进程所打开的文件

lsof -g gid 显示归属gid的进程情况

lsof +d /usr/local/ 显示目录下被进程开启的文件

lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长

lsof -d 4 显示使用fd为4的进程

lsof -i 用以显示符合条件的进程情况

lsof -i[46] [protocol][@hostname|hostaddr][:service|port] 46 –> IPv4 or IPv6 protocol –> TCP or UDP hostname –> Internet host name hostaddr –> IPv4地址 service –> /etc/service中的 service name (可以不止一个) port –> 端口号 (可以不止一个)

参考文章: https://www.cnblogs.com/sparkbj/p/7161669.html

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python 14121 root 3u IPv4 2130789 0t0 TCP *:commplex-main (LISTEN)

然后kill掉该PID的进程,重新运行: kill[参数][进程号]

如:kill -9 4394

kill就是给某个进程id发送了一个信号。默认发送的信号是SIGTERM,而kill -9发送的信号是SIGKILL,即exit。exit信号不会被系统阻塞,所以kill -9能顺利杀掉进程。当然你也可以使用kill发送其他信号给进程。

问题2:配置端口后未生效

flask配置的端口号,确认centos是否已经开通此端口;若没开通,在centos中执行如下命令,以下是以5100端口为例:

# 开启5100端口
firewall-cmd --zone=public --add-port=5100/tcp --permanent
# 重启防火墙
firewall-cmd --reload

发表评论