云服务器部署网站(云服务器部署1)

目录云服务器部署1【Nginx、Supervisor、Flask、Python】(本篇)云服务器部署2【Nginx支持Flask多域名】前言后续准备编写一系列的教程,涉及到微信公众号、小程序、Android、Python以及C#\WPF相关。本篇文章主要记录在公有云服务器上部署Python的步骤,本篇的步骤也适用于阿里云服务器,其它的服务器大壮没有测试过,也欢迎随时讨论。如有哪里不对,欢迎批评指正,谢谢。环境云服务器版本:Ubuntu 16.04.1 LTS登陆云服务器通过SSH登录腾讯云服务器,该云服务器是我买来做实验用的,刚买的,洁净如新。安装Nginx执行指令$sudo apt-get install nginx安装成功之后,可以立即访问云服务器的公网IP地址或者解析到该IP地址的域名,因为我这里还没有将域名绑定到该服务器,所以直接访问我的公网IP地址。到这里就说明我们的Nginx服务安装成功。一笔带过,Nginx安装好的文件位置如下:/usr/sbin/nginx:主程序/etc/nginx/:存放配置文件,后续我们会用到/usr/share/nginx/:存放Nginx默认指向的静态网页/var/log/nginx/:存放日志解析域名到服务器接下来,我们将域名解析到服务器,比如我这里将demo.2019club.cn解析到云服务器。登陆腾讯云控制台,进入到域名列表点击箭头所指的“解析”,跳转到“解析管理”界面点击“添加记录”主机记录项输入二级域名,这里我的是demo,记录值项填写云服务器的公网IP地址,然后点击“保存”按钮。然后我们直接在浏览器里输入二级域名,看是否成功解析到云服务器。可以看到二级域名也已经可以访问,如果你的访问不了,也可能是因为TTL生效时间没到,可以等会再看。PS:解析域名到阿里云服务器的步骤也是类似的。安装包管理工具pip、pip3执行以下指令$ sudo apt-get install python-pip python3-pip从下图可以看到已经安装成功了安装Virtualenv执行指令(注意,这里使用的是pip,而不是pip3)$sudo pip install virtualenv执行指令$virtualenv –version可以看到也安装成功了。Python3 Flask最小应用我在目录/home/ubuntu/webroot/demo下新建应用,该目录路径后续会用到。执行指令$virtualenv -p python3 venv$source venv/bin/activate$pip install flask$pip install flask_script执行指令,新建manage.py$vim manage.pymanage.py文件内容如下from flask import Flask
from flask_script import Manager
app = Flask(__name__)
manager = Manager(app)
@app.route(‘/’)
def index():
return ‘Hello 玖零大壮’
if __name__ == ‘__main__’:
manager.run()
执行指令$python manage.py runserver可以看到程序运行没有问题。配置uWSGI生产环境执行指令$pip install uwsgi执行指令$vim uconfig.iniuconfig.ini文件内容如下[uwsgi]
# 外部访问地址,这里我使用的是socket,而不是用http
# 同时端口号,可以不使用这个9000,也可以使用其他的
socket=127.0.0.1:9000
# 指向项目目录,这里的目录是我们的程序的根目录
chdir=/home/ubuntu/webroot/demo/
# flask启动程序文件
wsgi-file=manage.py
# flask在manage.py文件中的app名
callable=app
# 处理器数,我的服务器是单核双线程的
# 不知道的话,写1就没问题
processes=1
# 线程数
threads=2
执行指令$uwsgi uconfig.ini输出以下内容(venv) ubuntu@VM-0-3-ubuntu:~/webroot/demo$ uwsgi uconfig.ini
[uWSGI] getting INI configuration from uconfig.ini
*** Starting uWSGI 2.0.18 (64bit) on [Sat Mar 16 00:57:24 2019] ***
compiled with version: 5.4.0 20160609 on 15 March 2019 16:42:36
os: Linux-4.4.0-130-generic #156-Ubuntu SMP Thu Jun 14 08:53:28 UTC 2018
nodename: VM-0-3-ubuntu
machine: x86_64
clock source: unix
detected number of CPU cores: 1
current working directory: /home/ubuntu/webroot/demo
detected binary path: /home/ubuntu/webroot/demo/venv/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
chdir() to /home/ubuntu/webroot/demo/
*** WARNING: you are running uWSGI without its master process manager ***
your processes number limit is 7331
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with –thunder-lock)
uwsgi socket 0 bound to TCP address 127.0.0.1:9000 fd 3
Python version: 3.5.2 (default, Nov 12 2018, 13:43:14) [GCC 5.4.0 20160609]
Python main interpreter initialized at 0xed6240
python threads support enabled
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 83344 bytes (81 KB) for 2 cores
*** Operational MODE: threaded ***
WSGI app 0 (mountpoint=”) ready in 0 seconds on interpreter 0xed6240 pid: 21793 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI worker 1 (and the only) (pid: 21793, cores: 2)
可以看到配置文件uconfig.ini没有错误现在可以退出virtualenv的虚拟环境了执行指令$deactivate安装 SupervisorSupervisor可以同时启动多个应用,最重要的是,当某个应用Crash的时候,Supervisor可以自动重启该应用,保证可用性。执行指令$sudo apt-get install supervisor$vim supervisor_demo.conf文件supervisor_demo.conf内容如下[program:demo]
# 启动命令入口
# 格式为command=/your/path/uwsgi /your/path/uconfig.ini
command=/home/ubuntu/webroot/demo/venv/bin/uwsgi /home/ubuntu/webroot/demo/uconfig.ini
# 命令程序所在目录
directory=/home/ubuntu/webroot/demo/
# 运行命令的用户名
user=root
autostart=true
autorestart=true
#日志路径
stdout_logfile=/home/ubuntu/webroot/demo/uwsgi_supervisor.log
Supervisor 的全局的配置文件位置在:/etc/supervisor/supervisor.conf ,正常情况下我们并不需要去对其作出任何的改动,只需要将新建的supervisor_demo.conf 文件放在/etc/supervisor/conf.d/下。执行指令$sudo mv supervisor_demo.conf /etc/supervisor/conf.d/配置Nginx自定义网站根目录执行指令$cd /etc/nginx/sites-available/$sudo vim demo_2019club_cn文件demo_2019club_cn内容如下server {listen 80;server_name demo.2019club.cn;location / {uwsgi_pass127.0.0.1:9000;#和uconfig.ini中的socket地址保持一致includeuwsgi_params;uwsgi_param UWSGI_PYHOME /home/ubuntu/webroot/demo/venv;#指向虚拟环境目录uwsgi_param UWSGI_CHDIR/home/ubuntu/webroot/demo;#指向网站根目录uwsgi_param UWSGI_SCRIPT manage:app;#指定启动程序}}执行指令$sudo ln -s /etc/nginx/sites-available/demo_2019club_cn /etc/nginx/sites-enabled/demo_2019club_cn$sudo service supervisor restart$sudo service nginx restart下面可以访问我们的网站了结语文章中将步骤详细记录,对其中的概念没有多做解释,如有不懂,可以去搜索相关内容或者留言,谢谢。//**************************************************************//转载请将该部分内容复制,否则侵权必究//禁止【东方头条】转载!!!//作者:玖零大壮//头条号@玖零大壮//公众号@玖零大壮//原文链接:https://www.toutiao.com/i6668632623864087047/***************************************************************/

本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://www.175ku.com/40001.html