ssh
命令的shell运行上述命令。ubuntu
的非root帐户,Vagrant不用输入密码就可以自动登录。ubuntu
的用户帐户(如果你愿意,可以使用其他名称)。 要创建这个用户,请使用前一节中的ssh
指令登录到你的服务器的root帐户,然后键入以下命令来创建用户,给它sudo
权限并最终切换到它:ssh
命令的终端,所以它可能是一个bash
或者类似的提示符的终端,而不是本地的Windows终端。 在该终端会话中,检查 ~/.ssh 目录的内容:ssh
会用私钥执行加密操作来向服务器标识自己。 然后服务器使用你的公钥验证操作是否有效。ubuntu
会话,然后注销root
会话,然后尝试直接登录到ubuntu
帐户:ubuntu
帐户,并且可以通过sudo
从该帐户运行管理员命令,因此实际上不需要暴露root帐户。 要禁用root登录,你需要编辑服务器上的 /etc/ssh/sshd_config 文件。 你可能在你的服务器上安装了vi
和nano
文本编辑器,你可以用它来编辑文件(如果你不熟悉这两种文件编辑器,可以首先尝试nano
)。 由于SSH配置对普通用户是不可访问的,所以你需要在编辑器命令前添加sudo
(即sudo vi /etc/ssh/sshd_config
)。 你需要更改此文件中的单行:PermitRootLogin
开头的行(找不到就新建一行)并将该值更改为no
。ubuntu
用户的主目录中,然后运行:git checkout
命令。gunicorn
软件包是Python应用程序的生产Web服务器。 pymysql
软件包包含MySQL驱动程序,它使SQLAlchemy能够与MySQL数据库一起工作:DATABASE_URL
变量,我定义了一个MySQL URL。 我将在下一节中向你介绍如何配置数据库。FLASK_APP
环境变量设置为应用程序的入口点以启用flask
命令,但在解析 .env 文件之前需要此变量,因此需要手动设置。 为避免每次都设置它,我把它添加到ubuntu
帐户的 ~/.profile 文件的底部,以便每次登录时自动设置它:FLASK_APP
就已经设置好了。 你可以通过运行flask --help
来确认它是否已经设置好了。 如果帮助信息显示应用程序已添加的translate
命令,那么你就知道应用程序已被找到。flask
命令是有效的,我可以编译语言翻译:mysql
命令,该命令应该已经安装在你的服务器上:microblog
的新数据库的命令,以及具有完全访问权限的同名用户:<db-password>
。 这将是microblog
数据库用户的密码,所以不要使用你已为root用户选择的密码。 microblog
用户的密码需要与你包含在 .env 文件中的DATABASE_URL
变量中的密码相匹配。flask run
运行服务器时,正在使用的是Flask附带的Web服务器。 该服务器在开发过程中非常有用,但它不适合用于生产服务器,因为它不考虑性能和稳健性。 取而代之,我决定使用gunicorn,它是一个纯粹的Python Web服务器,但与Flask不同,它是一个支持高并发的强大生产服务器,同时它也非常容易使用。-b
选项告诉gunicorn在哪里监听请求,我在8000端口上监听了内部网络接口。 在没有外部访问的情况下运行Python Web应用程序通常是一个好主意,然后还需要一个非常快速的Web服务器,它可以优化来自客户端的所有静态文件的请求。 这个快速的Web服务器将直接提供静态文件,并将用于应用程序的任何请求转发到内部服务器。 我将在下一节中向你展示如何将nginx设置为面向公众的服务器。-w
选项配置gunicorn将运行多少worker。 拥有四个进程可以让应用程序同时处理多达四个客户端,这对于Web应用程序通常足以处理大量客户端请求,因为并非所有客户端都在不断请求内容。 根据服务器的RAM大小,你可能需要调整worker数量,以免内存不足。microblog:app
参数告诉gunicorn如何加载应用程序实例。 冒号前的名称是包含应用程序的模块,冒号后面的名称是此应用程序的名称。command
,directory
和user
设置告诉supervisor如何运行应用程序。 如果计算机启动或崩溃,autostart
和autorestart
设置会使microblog自动重新启动。 stopasgroup
和killasgroup
选项确保当supervisor需要停止应用程序来重新启动它时,它仍然会调度成顶级gunicorn进程的子进程。git
安装在服务器中,因此,无论何时想要将应用程序升级到最新版本,都可以运行git pull
来下载自上次部署以来的新提交。