Python应用部署指南

Python随着机器学习的东风越来越火了,名副其实的万能语言,web开发是Python其中一项应用,这个系列来自《Full stack python guide to deployments》,为大家带来Python应用部署的最佳实践。

下面这幅图显示了我们Python应用的整体抽象架构,

Python应用部署指南_第1张图片
整体抽象架构图

而这幅图显示了每个组件的具体实现,比如web server服务器我们用的就是Nginx,最流行的现代Http服务器。

Python应用部署指南_第2张图片
具体实现

这个系列的特点是先带大家熟悉手动的操作,再通过fabric和Ansible自动化所有的任务。Github地址:

https://github.com/mattmakai/fsp-deployment-guide。将要部署的App的代码地址:https://github.com/mattmakai/choose-your-own-adventure-presentations。

第一章 服务器

我们开发的应用必须部署在生产环境的服务器上,而不是你的开发笔记本,本章我们将使用VPS部署应用,你可以使用Linode或者阿里云。你需要申请购买安装了Ubuntu 14.04 LTS系统的虚拟服务器。

创建公钥和私钥:

mkdir -p fsp-deployment-guide/ssh_keys

cd fsp-deployment-guide/ssh_keys

ssh-keygen -t rsa -b 2048

当提示在哪存储公钥对时,输入./prod_key

之后你有了2个新文件,公钥prod_key.pub,私钥prod_key

cp prod_key.pub authorized_keys

接下来启动服务器,通过ssh root@{ip.address.here}连接到你的服务器,登录服务器第一件事,对系统包管理进行更新:

apt-get update

apt-get upgrade

打开/etc/ssh/sshd_config文件,

将#PasswordAuthentication yes改为PasswordAuthentication no,UsePAM yes改为UsePAM no,这样服务器不能通过密码登录。

#PermitRootLogin yes改为PermitRootLogin no,root用户不能登录。

现在我们用创建非root用户组合用户,把用户加入用户组并且设置密码:

/usr/sbin/groupadd deployers

mv /etc/sudoers /etc/sudoers-backup

(cat /etc/sudoers-backup ; echo "%deployers ALL=(ALL) ALL") > /etc/sudoers

chmod 0440 /etc/sudoers

/usr/sbin/useradd -c "Matt Makai" -m -g deployers deployer

/usr/bin/passwd deployer

/usr/sbin/usermod -a -G deployers deployer

mkdir /home/deployer/.ssh

chown -R deployer /home/deployer/.ssh

chgrp -R deployers /home/deployer/.ssh。

这一切都是在第一个root登录的shell中完成的,现在先别断开这个root连接,还需要上传key:

scp prod_key.pub authorized_keys deployer@{your.server.ip.address}:~/.ssh

接着重启ssh服务:

service ssh reload

现在我们不用输入密码,可以直接用公钥登录服务器啦

ssh -i ./prod_key deployer@{your.server.ip.address}

你可能感兴趣的:(Python应用部署指南)