如何部署网站?

发布于 2022-09-04 13:36:38 字数 84 浏览 23 评论 0

部署一个Web 需要哪些知识?不同语言写的Web,部署的方式有相同之处吗?最近想部署一个Python 写的Web,但是搜索到的教程实在看不明白,太郁闷了…

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

不羁少年 2022-09-11 13:36:38

昨天刚刚部署完python flask写得一个网站。写完网站后,本地测试好了,就开始上线部署了,正好分享下过程。
WebApp部署条件:
零、前提:
(1)掌握ubuntu基本知识:bash基本脚本的编写,vim的使用,curl的使用,ps的使用,kill的使用
(2)掌握HTTP协议基本知识:request-response模式、HTTP方法、HTTP状态
一、非必要条件:
(1)域名:可选万网、西部数据
(2)域名解析服务(DNS):CloudXNS(个人服务免费、企业服务收费)
二、必要条件:
(1)云服务提供商:阿里云、腾讯云、百度云、新浪云、DigitalOcean
(2)HTTP服务器:Apache、Nginx、uWSGI、Gunicorn
(3)进程管理:supervisor
三、具体部署案例:
(一)部署具体选型:万网域名 + CloudXNS + 腾讯云:Ubuntu 14.04 LTS + Nignx + Gunicorn
(二)部署过程:
(1)购买域名:3 - n 元,域名服务商有购买引导,此不赘述
(2)域名解析:CloudXNS写有教程,写得很好,此不赘述
(3)服务器购买:云服务器服务商有购买引导,此不赘述
(4)HTTP服务器配置:Nginx作为反向代理,实现负载均衡
Nginx安装:sudo apt install nginx
Nginx版本:nginx/1.10.0 (Ubuntu)
Nginx配置路径:Ubuntu 14.04 LTS,/etc/nginx/site-available/default
Nginx配置备份:mv default default.bak
Nginx配置内容:将内容修改为

server {
    listen 80;
    server_name 139.75.42.45(或者example.com); # 这是HOST机器的外部域名,用ip地址也行
    # 分发静态资源:html、css、js、img等
    location ~^\/static/\.*$ {  
        root /home/ubuntu/www/app/static;
    }    
    # 转发http请求,并且添加上部分头信息
    location / {
        proxy_pass http://127.0.0.1:8000; # 这里是指向 gunicorn host 的服务地址
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

  }

Nginx重启:service nginx restart
(5)HTTP服务器配置:Gunicorn(gevent模式)(编写语言python)
gevent安装:pip install gevent
Gunicorn安装:pip install gunicorn
Gunicorn配置:

#!/bin/python
# coding=utf-8
# config.py
import gevent.monkey
import multiprocessing

gevent.monkey.patch_all()

# 监听接口绑定
bind = '127.0.0.1:8000'
preload_app = True
# 日志配置
loglevel = 'error'
logfile = 'app/log/gunicorn/debug.log'
accesslog = 'app/log/gunicorn/access.log'
access_log_format = '%(h)s %(t)s %(U)s %(q)s'
errorlog = 'app/log/gunicorn/error.log'
# 进程名
proc_name = 'vservice' 
# 进程id储存文件:专门储存gunicorn进程id,方便kill
pidfile = 'app/log/gunicorn/gunicorn.pid'
# 进程开启数量
workers = multiprocessing.cpu_count() * 2 + 1
# 线程开启数量
threads = multiprocessing.cpu_count() * 2
# 职程运行模式
worker_class = 'gevent'

Gunicorn启动Flask实例:gunicorn -c config.py manege:app(manege是flask入口文件名,app是flask实例名)
(6)进程管理工具配置:supervisor(编程语言python)
supervisor安装:pip install supervisor
supervisor配置:

# 文件命名:supervisor.conf
[program:vservice]
command=/usr/local/bin/gunicorn -c /home/ubuntu/www/app/config.py manage:app 
startsecs=100
startretries=10
process_name=%(program_name)s
numprocs=1      
directory=/home/ubuntu/www/app/  
autostart=true
autorestart=unexpected                  
stdout_logfile=/home/ubuntu/www/app/log/supervisor/stdout.log
stderr_logfile=/home/ubuntu/www/app/log/supervisor/stderr.log

[supervisord]
# 

supervisor启动:supervisord -c supervisor.conf

一枫情书 2022-09-11 13:36:38

比如在CentOS上装,无非就是把你依赖的库安装好,然后启动服务就行

池予 2022-09-11 13:36:38

首先你需要搞一个项目;搞一个服务器,使用 ng 或者别的来启动你的服务;如果需要,再绑定一个域名。

至于服务器,推荐 Do (即 DigitalOcean ); nginx,部署起来要便捷许多;如果静态Web服务,也可以考虑 Github-page 等等;当然 ng 部署静态 Web 服务也非常容易,即便新手也很容易使用。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文