深知用户痛点,不要告诉我什么原理不要告诉我什么原因,我只要安装上只要能跑起来,所以,开干吧!
1、pyenv 安装:
git clone https://github.com/pyenv/pyenv.git
2、pyenv环境配置
echo 'export PYENV_ROOT="$HOME/pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
3、安装python指定版本
pyenv install 3.7.3
安装python指定版本3.7.3,可以换成别的版本,由于下载网络原因,建议换成离线pyenv install安装:
https://blog.csdn.net/jorg_zhao/article/details/79493519
4、设置python全局并且更新pip
pyenv global 3.7.3
pip install –upgrade pip
5、 安装pyenv-virtualenv插件
git clone git://github.com/yyuu/pyenv-virtualenv.git ./pyenv/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
source ~/.bash_profile
6、 创建虚拟环境名为webserver
pyenv virtualenv webserver
6.1激活webserver:
pyenv activate webserver
6.2安装flask并且实现个flask程序:
6.2.1 安装: pip install flask
6.2.2 flask程序:
6.2.2.1执行vi main.py,按i然后复制
from flask import Flask,request
app = Flask(__name__)
@app.route("/",methods=['POST','GET'])
def helloworld():
return "success"
if __name__=='__main__':
app.run(host="0.0.0.0",port=8080,debug=True)
然后按esc,按shift+: 输入wq 保存退出
6.2.2.2 执行python main.py 在浏览器输入你的公网ip+:8080端口
6.2.2.3先给域名解析后可以直接输入域名地址+8080端口进行访问,这链接其实是http://mangoit.xyz:8080
7、给服务器nginx配置SSL实现可以使用https://mangoit.xyz 以下以腾讯云为例
7.1 链接地址https://console.cloud.tencent.com/ssl
7.1.1点击申请免费证书---》如果没有开通云解析就要自己手动DNS验证(https://b23.tv/BV1Qb411279Y这个视频里面有讲手动DNS验证的配置)
7.2 SSL配置,注:要先在服务器的安全组中打开443和80端口
7.2.1配置之前先安装Nginx,执行sudo apt-get install nginx
7.2.2证书颁发完毕后点击下载,打开压缩包,进入Nginx中,里面有两个文件夹,一个.crt、一个.key结尾的文件
将两个文件上传服务器放到同一个目录中,/etc/nginx/ssl 目录下
//打开etc/nginx目录
~$ cd /etc/nginx/
//新建ssl文件夹
~/etc/nginx$ mkdir ssl
7.2.3执行以下命令
//打开etc/nginx/conf.d目录
~$ cd /etc/nginx/conf.d/
//创建weapp.conf文件
~/etc/nginx/conf.d$ touch weapp.conf
7.2.4在weapp.conf文件中粘贴下面的内容,我列出需要修改的3个地方,替换成自己域名的信息
vi weapp.conf 打开这个文件,将以下代码复制进去保存:
upstream app_weapp {
server localhost:8080;
keepalive 8;
server {
listen 80;
#=====需要修改=========替换成自己的域名
server_name mangoit.xyz;
#服务器自动把 HTTP 的请求重定向到 HTTPS
rewrite ^(.*)$ https://$server_name$1 permanent;
}
server {
listen 443;
#=====需要修改=========替换成自己的域名
server_name mangoit.xyz;
ssl on;
#=====需要修改=========下面两行替换成自己SSL文件的路径
ssl_certificate /etc/nginx/ssl/1_mangoit.xyz_bundle.crt;
ssl_certificate_key /etc/nginx/ssl/2_mangoit.xyz.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
ssl_session_cache shared:SSL:50m;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://app_weapp;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
7.2.5 验证并重启Nginx
//输入nginx -t,出现下列信息说明配置成功了
~$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
//重启nginx
~$ sudo service nginx restart
注意:此时要在webserver这个虚拟环境中要重新执行python main.py 并且不能是在root用户要转变成普通用户才可以
8、安装gunicorn
要在虚拟环境中安装
8.1 pip install gunicorn
8.2 创建文件夹 mkdir logs
8.3 vi gunicorn.conf
# 并行工作线程数
workers =4
# 监听内网端口8080【按需要更改】
bind ='127.0.0.1:8080'
# 设置守护进程【关闭连接时,程序仍在运行】
daemon =True
# 设置超时时间120s,默认为30s。按自己的需求进行设置
timeout = 120
# 设置访问日志和错误信息日志路径
accesslog ='./logs/acess.log'
errorlog ='./logs/error.log'
8.4 gunicorn -c gunicorn.conf main:app
然后就安装完成了。就不用python main.py也能自己挂着运行 了。
补充: 关闭 gunicorn:
1、pstree -ap|grep gunicorn 查看端口号
2、kill - 9 端口 (这个端口是刚才查到的第一个端口号)