CentOS7 + Xshell6 + Xftp6 + Nginx+ Gunicorn环境部署与项目发布

本文详细介绍如何在阿里云服务器上部署Flask应用,包括Python环境搭建、安装Gunicorn、配置Nginx以及设置服务自启。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

具体步骤

 

1. 链接服务器

你需要拥有一个服务器,我是通过Xshell6 连接上阿里云服务器(CentOS7系统)的。

 

Xshell6 + Xftp6

 

阿里云操作系统CentOS7Server

 

2. 服务器CentOS7 上的准备

假定你是在腾迅云或者阿里云购买了VPS,那么直接执行以下指令吧,其它的不多解释了,无非就是准备一下 python 环境。

# sudo yum -y update # sudo yum -y install python-dev python-pip python-virtualenv

 

如果需要python3环境请按下面操作步骤:

3. 安装python3.6

服务器上是默认有python2.7 ,但是没有python3.6和pip所以我们需要安装python3.6和pip。

 

(1) 安装依赖环境

# 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

 

(2)下载Python3

https://www.python.org/downloads/

# wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz

 

(3)安装python3

我个人习惯安装在/usr/local/python3(具体安装位置看个人喜好)

创建目录:

# mkdir -p /usr/local/python3

 

解压下载好的Python-3.x.x.tgz包(具体包名因你下载的Python具体版本不不同⽽而不不同,如:我下载的是Python3.6.1.那我这里就是Python-3.6.1.tgz)

# tar -zxvf Python-3.6.1.tgz

 

(4)进入解压后的目录,编译安装。

# cd Python-3.6.1

# ./configure --prefix=/usr/local/python3

 

make

# make

 

make install

# make install    或者 # make && make install

 

(5)建立python3的软链

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

 

如果遇到下面的bug

ln: failed to create symbolic link '/usr/bin/python3': File exists

 

说明已经有链接链到 /usr/bin/python3上了,删除即可,使用命令

# rm -rf /usr/bin/python3

 

注意python后面不能加斜杠,安装完毕 ,输入python3验证

ctrl+d都可以退出。

 

(6)/。

# vim ~/.bash_profile

 

 

编辑bash_profile

 

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/usr/local/python3/bin

export PATH

 

按ESC,输入:q回车退出。

修改完记得执行行下面的命令,让上一步的修改生效:

# source ~/.bash_profile

 

检查Python3及pip3是否正常可用:

# python3 -V

Python 3.6.1

# pip3 -V

pip 9.0.1 from /usr/local/python3/lib/python3.6/site-packages (python 3.6)

 

(7)不行的话在创建一下pip3的软链接(我也不清楚这一步有什么用)

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

 

4.安装pip以及setuptools

毕竟丰富的第三方库是python的优势所在,为了更加方便的安装第三方库,使用pip命令,我们需要进行相应的安装。

 

(1)安装pip前需要前置安装setuptools

命令如下:

 

# wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26

# tar -zxvf setuptools-19.6.tar.gz

# cd setuptools-19.6

# python3 setup.py build

# python3 setup.py build

 

如果前面没布置好环境的话,就要苦逼一下了:

  报错: RuntimeError: Compression requires the (missing) zlib module

  我们需要在linux中安装zlib-devel包,进行支持。

  # yum install zlib-devel

 

  需要对python3.5进行重新编译安装。

  # cd python3.6.1

  # make && make install

 

  又是漫长的编译安装过程。

  重新安装setuptools

  # python3 setup.py build

  # python3 setup.py install

 

(2)安装pip

命令如下:

# wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb

# tar -zxvf pip-8.0.2.tar.gz

# cd pip-8.0.2

# python3 setup.py build

# python3 setup.py install

如果没有意外的话,pip安装完成。

 

如果没有搞好环境的话,会碰见亲切的报错:

  pip3 install paramiko

  报这个错

  pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

  然后开始进行如下操作

  # yum install openssl

  # yum install openssl-devel

  # cd python3.6.1

  # make && make install

 

5.安装virtualenv 

 # pip3 install virtualenv

 

6.构建项目独立环境

这个步骤理解为将这个项目所需的一切(python)相关基础内容,都放到一个单独的容器中去,这样改变这个容器中的python相关配置,不会影响到服务器。

 

(1)Nginx安装

将项目传入服务器:

假设目录结构如下   

# sudo yum -y install nginx

 

在 /var/www 目录下建立一个 myflask 的文件夹(你的项目目录),然后用 chmod 改一下权限

# sudo mkdir /var/www/myflask # sudo chmod 777 /var/www/myflask

 

注:当然你可以使用 nginx 的默认网站目录 /usr/share/nginx/html

 

然后用 scp 指令直接将本机上的 flask 项目传到服务器:

# scp -r myflask root@www.mydomain.com:/var/www/myflask

 

域名就改成地址或者你的服务器正在使用的域名,我这里是用 root 用户进入的,你得按你的服务器的用户来修改。两大云的默认根用户是:

  • 腾迅 :ubuntu
  • 阿里 :root

 

(2)Gunicorn安装

Gunicorn 绿色独角兽 是一个Python WSGI UNIX的HTTP服务器。这是一个pre-fork worker的模型,从Ruby的独角兽(Unicorn )项目移植。该Gunicorn服务器大致与各种Web框架兼容,只需非常简单的执行,轻量级的资源消耗,以及相当迅速。

 

我曾经Google 过 Gunicorn 与 uwsgi ,都说uwsgi 的性能要比 gunicorn 高,所以最终结果就杯具了。不过,现在回过头来看这只 “独角兽”还为时不晚吧。

 

安装Gunicorn

Gunicorn 应该装在你的 virtualenv 环境下,关于 virtualenv 就不多说了,如果没用过那就赶快脑补吧。安装前记得激活 venv

(venv) # pip install gunicorn

 

运行 Gunicorn

(venv) # gunicorn -w 4 -b 127.0.0.1:8080 wsgi:application

 

That's all! 它的安装就这么简单。不过这里得作一个解释。就是最后的那个参数 wsgi:application 这个是程序入口,我得写个小小的范例来说明一下:

 

新建一个 wsgi.py 的文件, 注意,这里和 Flask 项目中常用的 manage.py 引导脚本是没有半点毛关系的。(这是我笨,以前一直没分清被uwsgi搞糊涂了)

 

# wsgi.py from flask import Flask def create_app(): # 这个工厂方法可以从你的原有的 `__init__.py` 或者其它地方引入。 app = Flask(__name__) return app application = create_app() if __name__ == '__main__': application.run()

 

好了,这个 wsgi:application 参数就很好理解了, 分两部:wsgi 就是引导用的 python 文件名称(不包括后缀/模块名)application 就是 Flask 实例的名称。这样 gunicorn 就会找到具体要 host 哪一个 flask 实例了。

从这里开始就可以体现 gunicorn 的好了,我们根本不用配什么配置文件的,一个指令就可以将它起动。

 

(3)Nginx 的配置

关于 Nginx 我也就不详细讲了,我们就直奔主题,杀入 Nginx 的默认配置文件

# sudo nano /etc/nginx/site-avalidable/default

暴力修改成为以下的内容:

 

建议先备份一下 default 文件

# sudo cp /etc/nginx/site-avalidable/default /etc/nginx/site-avalidable/default.bak

 

server { listen 80; server_name example.org; # 这是HOST机器的外部域名,用地址也行 location / { proxy_pass http://127.0.0.1:8080; # 指向 gunicorn host 的服务地址 proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

 

记得完成 nginx 需要重新起动 nginx 服务喔!

# sudo service nginx restart

 

(4)将 Gunicorn 作为服务运行

这就是最后一步了,我们在此将采用 UpStart 配置Flask程序作为服务程序在Linux起动时运行。首先建立起动配置文件:

# sudo nano /etc/init/myflask.conf

 

然后加入如下配置

description "The myflask service" start on runlevel [2345] stop on runlevel [!2345] respawn setuid root setgid www-data env PATH= /var/www/myflask/venv/bin chdir /var/www/myflask/ exec gunicorn -w 4 -b 127.0.0.1:8080 wsgi:application

 

OK 大功告成,启动 myflask 服务

# sudo service myflask start

 

这里有一点必须补充的,请留意在 myflask.conf 中的

env PATH= /var/www/myflask/venv/bin chdir /var/www/myflask/

 

这里所指向的地址就是你的项目路径和 virtualenv 的路径

 

小结

这个部署过程感觉比我之前所介绍的 uwsgi 那种简单很多吧。这里给一点小 Tips 如果你用 Fabric 来完成这个部署过程的话那么就是纯自动化部署了喔,值得尝试的。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值