V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Henrybsbhp
V2EX  ›  Python

Django App 部署到 Google Cloud 的问题

  •  
  •   Henrybsbhp · 2019-12-20 15:23:07 +08:00 · 4404 次点击
    这是一个创建于 1804 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近写了一个接口项目想要部署到服务器上,服务器用的 Google Cloud,一切都还挺顺利。

    生产环境中调用 python3 manage.py runserver 0.0.0.0:8000 命令后,使用外网 IP:8000 时不能访问。

    检查了 8000 端口,有开放;
    防火墙关闭也不行;

    代码内应该也没问题,这样设置的:
    DEBUG = True

    ALLOWED_HOSTS = ['*']


    请问还有什么样的原因导致无法访问呢?本人刚接触 Django,各位请多赐教。谢谢。
    第 1 条附言  ·  2019-12-20 19:32:01 +08:00
    不知道怎么搞的,回家后用 Terminal 重新 runserver 后就问题解决了,应该还是端口的问题!


    再次感谢热心的大家帮助!感激不尽!
    28 条回复    2019-12-20 21:06:25 +08:00
    hflyf123
        1
    hflyf123  
       2019-12-20 15:26:24 +08:00
    你现在服务器本机上访问看看返回正常不正常,然后再排查外部环境
    Henrybsbhp
        2
    Henrybsbhp  
    OP
       2019-12-20 15:36:11 +08:00
    @hflyf123

    感谢回复,

    curl 127.0.0.1:8000 了一下,在本地是可以的。
    wuwukai007
        3
    wuwukai007  
       2019-12-20 15:39:44 +08:00
    外面 telnet 看一下 ip 8000 能不能通
    007gzs
        4
    007gzs  
       2019-12-20 15:41:00 +08:00
    Google Cloud 里看看有没有安全组
    AM2coder
        5
    AM2coder  
       2019-12-20 15:41:46 +08:00 via Android
    是'*' 还是 * ?
    alw1329
        6
    alw1329  
       2019-12-20 15:42:38 +08:00
    Google Cloud 里安全组要放通端口。
    hflyf123
        7
    hflyf123  
       2019-12-20 15:43:02 +08:00
    @AM2coder 是'*'
    AM2coder
        8
    AM2coder  
       2019-12-20 15:44:41 +08:00 via Android
    @hflyf123 我的意思是是不是要设为[*]呢,不太记得了,试一下吧
    Henrybsbhp
        9
    Henrybsbhp  
    OP
       2019-12-20 15:54:15 +08:00
    @wuwukai007

    感谢回复,测试了,不行。

    nodename nor servname provided, or not known
    wuwukai007
        10
    wuwukai007  
       2019-12-20 15:55:30 +08:00 via Android
    外面能 ping 通吗
    janxin
        11
    janxin  
       2019-12-20 15:56:53 +08:00
    @AM2coder debug=True 时不需要

    @Henrybsbhp GCP 的安全组(非本机防火墙)要放开
    Henrybsbhp
        12
    Henrybsbhp  
    OP
       2019-12-20 16:01:18 +08:00
    @wuwukai007

    感谢回复,就是 GCP 的防火墙吗?应该是放开的。
    Henrybsbhp
        13
    Henrybsbhp  
    OP
       2019-12-20 16:01:38 +08:00
    @wuwukai007

    感谢回复,ping IP 倒是没问题。
    wuwukai007
        14
    wuwukai007  
       2019-12-20 16:04:16 +08:00 via Android
    ip 没问题一定是端口了,把启动改成 0.0.0.0:80,再访问一下
    Henrybsbhp
        15
    Henrybsbhp  
    OP
       2019-12-20 16:07:11 +08:00
    @wuwukai007

    端口改成 80 的时候提示我没有权限访问此端口。

    Error: You don't have permission to access that port.
    wuwukai007
        16
    wuwukai007  
       2019-12-20 16:08:26 +08:00 via Android
    启动不了,加上 sudo
    wuwukai007
        17
    wuwukai007  
       2019-12-20 16:08:54 +08:00 via Android
    如果被占用
    fuser -kn tcp 80
    Henrybsbhp
        18
    Henrybsbhp  
    OP
       2019-12-20 16:36:41 +08:00
    @wuwukai007

    不知道为啥,sudo python3 不行。找不到命令。。。
    wuwukai007
        19
    wuwukai007  
       2019-12-20 16:59:04 +08:00
    ln -s /usr/local/bin/python3 /usr/bin/python3
    pkuphy
        20
    pkuphy  
       2019-12-20 17:04:19 +08:00
    VPC 网络 - 防火墙规则 把 8000 加一下
    Henrybsbhp
        21
    Henrybsbhp  
    OP
       2019-12-20 17:09:07 +08:00
    @pkuphy

    感谢回复,

    防火墙规则的 协议 /端口 已经全部设置为 all 了,还是不行。
    Henrybsbhp
        22
    Henrybsbhp  
    OP
       2019-12-20 17:24:57 +08:00
    @wuwukai007

    这样是可以了,但是用 sudo python manage.py runserver 0.0.0.0:8000 的话,回报错:

    ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment varia
    ble? Did you forget to activate a virtual environment?

    很是无语啊。明明 Django 安装了,也在虚拟环境下了。
    hflyf123
        23
    hflyf123  
       2019-12-20 17:26:38 +08:00
    @Henrybsbhp 3 呢
    Ciwei0526
        24
    Ciwei0526  
       2019-12-20 18:18:05 +08:00
    @Henrybsbhp pip list 查看下是否存在 django,如果存在 看下当前 python 的路径对不对
    Henrybsbhp
        25
    Henrybsbhp  
    OP
       2019-12-20 19:30:40 +08:00
    @Ciwei0526

    感谢回复,不知道怎么搞的,问题突然解决了!
    Henrybsbhp
        26
    Henrybsbhp  
    OP
       2019-12-20 19:35:55 +08:00
    @hflyf123

    感谢跟进,问题已解决!
    scriptB0y
        27
    scriptB0y  
       2019-12-20 20:24:49 +08:00
    @Henrybsbhp 你之前遇到的 Python3 这个命令找不到,是因为 sudo 的命令跟你在的 shell 环境变量不一样,找不到 Python,可以用 sudo -E 或者用 Python 的绝对路径,用 ln 放到 sudo 的路径下可以的。

    Django 找不到是因为你的 Python 是这么来的 ln -s /usr/local/bin/python3 /usr/bin/python3,Python 找安装包的地放取决于 Python 所在的位置,所以 ln 之后就找不到了。
    Henrybsbhp
        28
    Henrybsbhp  
    OP
       2019-12-20 21:06:25 +08:00
    @scriptB0y 学习到了!感谢指教,很受用!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5553 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 07:56 · PVG 15:56 · LAX 23:56 · JFK 02:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.