从0到1阿里云服务器部署pythonweb

2024-02-24 03:18

本文主要是介绍从0到1阿里云服务器部署pythonweb,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:老早就想总结一下如何在服务器上部署pythinweb了,一直到现在才开始写,其实我不是一个有拖延症的人,只是高速的生活很容易让现代人迷失方向。

当你拥有一台服务器是可以做很多事情,我这里是部署了个人的pythonweb,内容主要是之前的那个基于中医药知识图谱的智能问答还有一些生活中一些有意思的东西。
技术路线是:flask+uwsgi+nginx,哈哈,很老了吧,现在不都流行docker嘛?docker我还不会,以后会重构的。(是真的会重构)

先介绍一些知识点

1.什么是flask?

Flask是一个Web框架,就是提供一个工具,库和技术来允许你构建一个Web应用程序.这个Web应用程序可以是一些Web页面,博客,wiki,基于Web的日里应用或商业网站.

2.什么是wsgi?

WSGI(Web Server Gateway Interface,Web 服务器网关接口)则是Python语言中所定义的Web服务器和Web应用程序之间或框架之间的通用接口标准.
  WSGI就是一座桥梁,桥梁的一端称为服务端或网关端,另一端称为应用端或者框架端,WSGI的作用就是在协议之间进行转化.

WSGI将Web组件分成了三类:Web 服务器(WSGI Server)、Web中间件(WSGI Middleware)与Web应用程序(WSGI Application).
  Web Server接收HTTP请求,封装一系列环境变量,按照WSGI接口标准调用注册的WSGI Application,最后将响应返回给客户端.

3.什么是nginx?

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师lgor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

nginx主要是用于反向代理,打一个比方:我们去访问京东,京东需要大量分布式服务器来处理海量的请求,我们就是把请求发送到代理上,由代理决定发送到那一台服务器来处理我们的请求,隐藏了服务器的信息。

需要安装的软件
我们这里需要安装服务器宝塔面板,本地需要装FileZillaClient用来传输本地程序文件和Putty用于远程连接服务器(阿里云网页版也自带远程连接)

centos7服务器安装宝塔面板

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

在这里插入图片描述

下载成功后,会生成账号和密码,这是以后登录宝塔面板的凭证。在浏览器打开http://xxx.xxx.xxx.xxx:8888/(这个就是你的IP地址:8888端口)即可登录宝塔面板
在这里插入图片描述
python3安装

which python
mkdir /usr/local/python3 
cd /usr/local/python3

安装依赖

yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

安装python3

wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz

解压安装


tar -xvJf  Python-3.6.2.tar.xz
cd Python-3.6.2
./configure --prefix=/usr/local/python3
make && make install

创建软连接(相当于windows快捷方式)

ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

搭建web环境
创建虚拟环境

pip3 install --upgrade virtualenv
mkdir test
cd test
virtualenv -p python3 .env

安装flask(其他的第三方库也安装)

source .env/bin/activate
pip3 install flask
deactivate  

安装和配置uwsgi

apt-get install python3.6-dev()
pip3 install uwsgi
find / -name uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

配置nginx

[uwsgi]
chdir=/www/wwwroot/test # 工程目录
home=/www/wwwroot/test/.env # 虚拟环境目录
module=test  # 启动flask应用的文件名,不用加.py
callable=app # 应用名,与我们hell
master=true
processes=2 # worker的进程个数
chmod-socket=666
logfile-chmod=644
procname-prefix-spaced=test # uwsgi的进程名称前缀,启动后可通过ps -ef | grep test查找到这个进程
py-autoreload=1 #py文件修改,自动加载,也就是设置热启动了
#http=0.0.0.0:8080 #监听端口,测试时使用vacuum=true # 退出uwsgi是否清理中间文件,包含pid、sock和status文件
socket=%(chdir)/uwsgi/uwsgi.sock # socket文件,配置nginx时候使用
stats=%(chdir)/uwsgi/uwsgi.status # status文件,可以查看uwsgi的运行状态
pidfile=%(chdir)/uwsgi/uwsgi.pid # pid文件,通过该文件可以控制uwsgi的重启和停止
daemonize=%(chdir)/uwsgi/uwsgi.log # 设置后台模式,然后将日志输出到uwsgi.log。当调试时,可先注释掉此内容
[uwsgi]
chdir=/www/wwwroot/test
home=/www/wwwroot/test/.env
module=test
callable=app
master=true
processes=2
chmod-socket=666
logfile-chmod=644
procname-prefix-spaced=test
py-autoreload=1
#http=0.0.0.0:8080vacuum=true
socket=%(chdir)/uwsgi/uwsgi.sock
stats=%(chdir)/uwsgi/uwsgi.status
pidfile=%(chdir)/uwsgi/uwsgi.pid
daemonize=%(chdir)/uwsgi/uwsgi.log

需要创建几个相应的配置文件

mkdir uwsgi
cd uwsgi
vi uwsgi.pid
vi uwsgi.sock
vi uwsgi.status
vi uwsgi.log

uwsgi常用命令

uwsgi --ini uwsgi.ini             # 启动
uwsgi --reload uwsgi.pid          # 重启
uwsgi --stop uwsgi.pid            # 关闭

配置nginx(在宝塔面板配置)

location / {include uwsgi_params;uwsgi_pass unix:/www/wwwroot/test/uwsgi/uwsgi.sock;
}

最后附上我的web链接
在这里插入图片描述

这篇关于从0到1阿里云服务器部署pythonweb的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/740779

相关文章

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

Python WSGI HTTP服务器Gunicorn使用详解

《PythonWSGIHTTP服务器Gunicorn使用详解》Gunicorn是Python的WSGI服务器,用于部署Flask/Django应用,性能高且稳定,支持多Worker类型与配置,可处... 目录一、什么是 Gunicorn?二、为什么需要Gunicorn?三、安装Gunicorn四、基本使用启

Linux部署中的文件大小写问题的解决方案

《Linux部署中的文件大小写问题的解决方案》在本地开发环境(Windows/macOS)一切正常,但部署到Linux服务器后出现模块加载错误,核心原因是Linux文件系统严格区分大小写,所以本文给大... 目录问题背景解决方案配置要求问题背景在本地开发环境(Windows/MACOS)一切正常,但部署到

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do