Python---项目上线部署(Tornado)

一、部署环境

# 1.查看当前python版本
  python --version

# 2.下载python3.7的安装包(目前更新到了python3.7.3)
  wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz

# 3.解压下载包
  tar -xvJf Python-3.6.4.tar.xz

# 4.编译安装
  cd Python-3.6.4
  ./configure --prefix=/usr/local/bin/python3
  sudo make
  sudo make install

# 5.安装依赖包
  pip install tornado              # 安装最新版本的包    
  pip install tornado==5.1.1       # 安装指定版本的包
  pip install -r require.txt       # 安装所有依赖包(文件名自己定义,一般使用requirements.txt)

# 6.运行程序
  python Main.py

# 7.浏览器访问(不用nginx代理转发http请求)
  如果tornado使用的是80端口,则直接用域名访问。
  如果tornado没有使用80端口,则需要用'域名+端口号'或者'IP+端口号'访问。

# 8.浏览器访问(使用nginx代理转发http请求)
  如果nginx使用的是80端口,则直接用域名访问。然后转发给tornado服务器。
  如果nginx没有使用80端口,则需要用'域名+端口号'或者'IP+端口号'访问。然后转发给tornado服务器。

# 9.用Nginx监听80端口做代理
  Tornado默认是监听IP加端口形式,运行后,使用浏览器访问:IP+端口号。
  如果你想支持域名访问,可以用Nginx监听80端口做代理,或者你只有这么一个应用,直接就用Tornado监听80端口免去Nginx这一步,关键是这么干别人使用IP或者域名都能访问。
  使用Nginx监听80端口做代理,这时候tornado的端口就不能是80了。nginx的端口是80,http请求默认端口是80,nginx监听到http请求之后,把请求转发给应用服务器tornado。

# 默认为80端口 是因为80端口可以默认不写,这样就简便了url的格式,如百度是80端口的,www.baidu.com:80 跟www.baidu.com 是一样的 只有80端口可以默认不写 要是改成其他端口的话 需要写端口号,比如改成端口号8080 需要写成www.baidu.com:8080。
# HTTP 默认端口是 80, 指提供 HTTP 服务的进程监听在 TCP 80 端口。
# 这好比银行的服务大厅有多个窗口,其中有个窗口提供外币兑换服务。为了让客户更便捷的找到窗口,银行总部规定默认情况下,各分行的第 80 个窗口提供外币兑换服务,这样需要兑换服务的客户只要找到任意一家分行,直奔 80 号窗口便是。
# 这里各分行地址可理解成 IP 地址,大厅的各个窗口可理解成端口。大厅各个窗口的服务内容可由大厅经理安排,这个经理可理解成服务器管理员,意思是虽然 HTTP 默认端口是 80, 管理员也可以改成 81 端口,也可以把 80 端口改成 SSH 等其他服务。

二、使用nginx反向代理 


# 0.安装软件包
  # sudo apt-get install 软件包名称` 
  # sudo apt-get install nginx

# 1.安装nginx
  # 方法1:apt-get install -y nginx
  # 方法2:1.手动下载:http://nginx.org/en/download.html。2.下载完后,利用sftp工具上传到ECS上。如果没有购买外挂硬盘,上传到系统盘也可以。Linux送20GB系统盘。还剩下18GB左右,足够做实验了。
  # 方法3:
    wget http://nginx.org/download/nginx-1.9.9.tar.gz
    tar -zxvf nginx-1.9.9.tar.gz -C /usr/local/src
    cd /usr/local/src/nginx-1.9.9
    ./configure
    make
    make install
    # 最后三步,可以写成一行代码:./configure && make && make install

# 2.监测Nginx服务是否正在运行
  netstat -anput | grep nginx

# 3.启动nginx服务
  方法1:service nginx start
  方法2:进入/usr/sbin/ 即nginx的安装目录。通过 ./nginx 启动nginx服务。

# 4.停止nginx服务
  方法1:service nginx stop
  方法2:进入/usr/sbin/ 即nginx的安装目录。通过 ./nginx -s stop 停止nginx服务。
  方法3:进入/usr/sbin/ 即nginx的安装目录。通过 ./nginx -s quit 停止nginx服务。

# 5.重启nginx服务
  方法1:service nginx reload
  方法2:进入/usr/sbin/ 即nginx的安装目录。通过 ./nginx -s reload 重启nginx服务。

# 6.卸载软件包
  sudo apt-get remove 软件包名称
  sudo apt-get remove nginx
  # 删除依赖包:sudo apt-get autoremove
# 6.卸载软件包且不保留配置文件
  sudo apt-get remove --purge 软件包名称 
  sudo apt-get remove --purge nginx
  # 删除依赖包:sudo apt-get autoremove --purge

# 7.查询nginx进程:
  ps aux|grep nginx

# 8.查找nginx安装路径:
  whereis nginx

# 9.查看Nginx安装目录、版本号信息
  安装目录:ps  -ef | grep nginx   # /usr/sbin/nginx
  版本信息:cd /usr/sbin   
          nginx -v 或者nginx -V

# 9.查看nginx配置文件路径以及该文件语法是否正确
  进入安装目录下面:cd /usr/sbin
  查看配置文件路径:./nginx -t

# 参考:nginx安装和测试(已验证):https://www.cnblogs.com/monjeo/p/7570117.html 
# 参考:带ssl配置与配置文件的详解:https://www.cnblogs.com/hzl6255/p/7324438.html
# 参考:https://www.cnblogs.com/wyd168/p/6636529.html
# 参考:https://blog.csdn.net/qq_36886883/article/details/80674665
# 参考:https://www.cnblogs.com/MyOceansWeb/p/10577444.html
# 参考:https://blog.csdn.net/menghaocheng/article/details/79861832 

Nginx配置文件详解 

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
   worker_connections 768;
   # multi_accept on;
}

http {
    # 设定负载均衡的服务器列表,weigth参数表示权值,权值越高被分配到的几率越大
    # 使用默认的轮询分发配置多个分布的服务主机
    upstream tornadoes {
        server 127.0.0.1:8081 weight=1;  #supervisor控制的域名
        server 127.0.0.1:8082 weight=1;  
        # server 192.168.35.137:80 weight=1;          
        # server 192.168.35.130:80 weight=1; 
    }

    server{
        # listen 8888;                 # 监听的端口
        listen 80;                     # 监听的端口:80,可以修改。
        
        # server_name www.xx.com;      # 定义使用www.xx.com访问,即浏览器输入的地址。
        # server_name localhost;       # 服务器的地址
        server_name 120.79.60.146;     # 使用120.79.60.146访问
        
        root /root/home/server/study_test;  #定义服务器的默认网站根目录位置      

        #设定查看Nginx状态的地址
        location /nginxstatus{
            stub_status on;
            access_log on;
        }

        # 配置分布式负载转发
        location / {
            allow 120.79.60.146;
            proxy_pass_header Server;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Scheme $scheme;
            proxy_pass http://127.0.0.1:8082;
            # proxy_pass http://tornadoes;
        }

        # 配置静态文件服务器
        location /static {
            alias /home/worker/django_pro_1_11/myweb/static_file/;
        }

        error_page 404 /404.html;
        # 定义错误提示页面
        error_page 500 502 503 504 /50x.html;  
        location = /50x.html {
            root  /root;
        }
    }
}
# 我们访问120.79.60.146:80就会转发到120.79.60.146:8082上,就可以实现nginx配置的Tornado了。
# 参考:https://blog.csdn.net/yongche_shi/article/details/52004088
# 参考:完整配置:https://blog.csdn.net/sc4599/article/details/50069667
# 参考:完整配置:http://www.nginx.cn/76.html
# 参考:部分配置:https://www.jianshu.com/p/9bebb99368ea
# 参考:部分配置:https://www.cnblogs.com/DjangoBlog/p/8044234.html
# 参考:完整配置:https://blog.csdn.net/ithongchou/article/details/83618112

如何给域名配置https证书

https://blog.csdn.net/qq_38719039/article/details/80202418
https://www.jianshu.com/p/90128aba680e

常见报错 

1.error: Unable to locate package 错误解决办法
  最后发现问题出在执行sudo apt-get install之前更换了软件源,但是却忘了update下了,于是执行下面的命令:
  sudo apt-get update

2.error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
  查看自己python的版本,然后下载自己版本Python的devel。
  比如python3.6.8 就是:apt-get install python3.6-dev
  比如python2.7.12就是:apt-get install python2.7-dev
  # apt-get install libpcap-dev:应该不需要执行这条命令

3.pip安装出现Command "python setup.py egg_info" failed with error code 1 的解决方案
  sudo python -m pip install --upgrade --force pip 
  sudo pip install setuptools==33.1.1

4.Ubuntu14.04.3,apt-get出现dpkg: error processing package xxx (--configure)和cups-daemon错误的解决方案:
  第一步:sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/info_backup/
  第二步:sudo mkdir /var/lib/dpkg/info/
  第三步:apt-get update
  第四步:apt-get install -y nginx
  # 1.执行完上一步操作后会在新的info文件夹下生成一些文件,现将这些文件全部移到info_old文件夹下 命令如下:
  # www@TinywanAliYunu:~# mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old/
  # 2.把自己新建的info文件夹删掉,命令如下:
  # www@TinywanAliYun:~# rm -rf /var/lib/dpkg/info
  # 3.把info_old文件夹重新改回info,命令如下:
  # www@TinywanAliYun:~# mv /var/lib/dpkg/info_old/ /var/lib/dpkg/info/

https://blog.csdn.net/c465869935/article/details/53242126

https://blog.csdn.net/qq_40285302/article/details/81064739

https://blog.csdn.net/lm_is_dc/article/details/80848912

https://blog.csdn.net/selectY/article/details/78502788

https://m.aliyun.com/yunqi/articles/703955?spm=5176.11156470.0.0.bb95f619KP0yrp

https://zhidao.baidu.com/question/1929490288130572867.html

你可能感兴趣的:(Python基础)