apt-get update
apt-get upgrade
sudo apt update
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget
任意目录:
cd /srv/
下载方法一:
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
下载方法二:
curl -O https://www.python.org/ftp/python/3.7.3/Python-3.7.0.tar.xz
解压Python-3.7.0.tgz:
tar -zxvf Python-3.7.0.tgz
检查依赖:
cd Python-3.7.0
键入:
./configure --enable-optimizations
运行make以启动构建过程(为了缩短构建时间,请根据处理器修改-j标志。 如果你不知道处理器的核心数,可以通过键入nproc来找到它。 我的系统有1个内核,所以我使用-j1标志。)
键入:
make -j 1
安装Python二进制文件:
sudo make altinstall
检查:
python3.7 --version
创建python与python3和pip软连接(即:键入python3得到python3.7[操作系统默认python3.5])
查看python3.7的路径:
which python3.7
在环境变量中添加该软连接(把which python3.7的路径写到配置中):
vim ~/.bashrc
alias
alias python3='/usr/local/bin/python3.7'
wq保存并退出
生效配置文件:
source ~/.bashrc
检查python3.7:
分别键入python和python3输出的版本均为python3.7
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 16:52:21)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
在环境变量中添加pip软连接:
vim ~/.bashrc
alias pip3='/usr/local/bin/pip3.7'
wq保存并退出
生效配置文件:
source ~/.bashrc
检查pip3
键入which pip3 (显示路径与/usr/local/bin/pip3.7一致)
root@instance-1:~# which pip3
/usr/bin/pip3
root@instance-1:~#
键入pip3 -V(显示python3.7表示正确)
root@instance-1:~# pip3 -V
pip 10.0.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
root@instance-1:~#
apt-get install git -y
git --version
cd /srv/
git clone https://github.com/xxx/xxx.git
pip3 install Pipenv
可以先使用demo进行调试后在使用git拉取的项目
创建一个demo:
cd /srv/
mkdir myproject
cd myproject
vim run.py
# run.py文件内容
from flask import Flask
app = Flask(__name__)
@app.route("/")
def helloWorld():
return "Hello World"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
按:esc
保存并退出:wq
使用Pipenv
键入:pipenv shell创建一个虚拟环境
root@instance-1:/srv/YangZhiXiaoBlog# pipenv shell
Launching subshell in virtual environment…
root@instance-1:/srv/YangZhiXiaoBlog# . /root/.local/share/virtualenvs/YangZhiXiaoBlog-gAVpubB9/bin/activate
(YangZhiXiaoBlog) root@instance-1:/srv/YangZhiXiaoBlog#
查看虚拟环境路径:pipenv –venv用于Uwsgi配置文件中的home参数
安装包(例如Flask):pipenv install flask
(如果是已经有的项目直接使用:pipenv install安装项目中的所有包)(Pipenv不作详细介绍)
apt-get install nginx
pip3 install uwsgi
启动:Nginx service nginx start
在浏览器中访问ip+80端口 如:59.12.32.4:80
出现以下页面表示成功
在项目根目录创建uwsgi配置文件.ini:文件名称随便取我取名:test.ini
cd /srv/myproject/
vim test.ini
以下我生产环境的配置
[uwsgi]
# 基本配置
chdir = /srv/YangZhiXiaoBlog
module = run
home = /root/.local/share/virtualenvs/YangZhiXiaoBlog-gAVpubB9
master = true
processes = 2
threads = 4
buffer-size = 32768
socket = /srv/YangZhiXiaoBlog/YangZhiXiaoBlog.sock
wsgi-file = /srv/YangZhiXiaoBlog/run.py
callable = create_app()
chmod-socket = 666
# plugins = python3
enable-threads = true
vacuum = true
# 处理(超时/请求/进程结束/虚拟内存)
reload-mercy = 8
harakiri = 60
limit-as = 256
max-requests = 5000
listen = 120
# 日志
daemonize = /srv/log/myapp_uwsgi.log
disable-logging = true
log-maxsize = 50000000
保存退出
创建存放日志的文件夹mkdir /srv/log
由于需要与Nginx进行通信才能启动,接下来我们配置Nginx。
在以下路径下创建配置文件(名字可以随便取)这里我取名:myproject.conf
如果需要使用Nginx代理多个项目就创建多个配置文件(不一样的端口)
cd /etc/nginx/conf.d/
vim myproject.conf
PS:以下这种将前后端一起配置在同一端口下的话要将前端打包的dist文件里面的所有东西放到flask的static文件里面(或者将dist重命名为static覆盖flask中的static才能通过-> ip:9999/web 访问到flask,因为会默认访问static)
upstream YangZhiXiaoBlog {
server unix:///srv/YangZhiXiaoBlog/YangZhiXiaoBlog.sock;
}
server {
listen 9999;
server_name ip;
charset utf-8;
client_max_body_size 75M;
# 服务端
location / {
uwsgi_pass YangZhiXiaoBlog;
include /etc/nginx/uwsgi_params;
}
# 前端
location /web {
root /srv/Vue_Projects/dist;
try_files $uri $uri/ /index.html; # 官网介绍设置这条可以解决history路由的问题
index index.html;
}
}
第二种把前端分开另一个配置文件设置不一样的端口:如下(这样就可以通过:ip:9977启动前端)
server {
listen 9977;
server_name ip;
charset utf-8;
client_max_body_size 75M;
location / {
root /srv/Vue_Projects/dist;
index index.html;
# 官网介绍设置这条可以解决history路由的问题
try_files $uri $uri/ /index.html last;
# add_header Content-Type "text/plain;charset=utf-8";
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
# add_header 'Access-Control-Allow-Methods' 'GET, POST';
}
}
保存并退出
验证配置文件是否正常使用以下命令
nginx -t 或者 service nginx configtest
出现以下提示证明配置已经ok了
打开所配置的端口(如果是阿里云,腾讯云,谷歌云,亚马逊云等需要在云控制台配置出入口才能生效)
iptables -A INPUT -p tcp --dport 8099 -j ACCEPT
如果你想关闭它
iptables -A INPUT -p tcp --dport 8099 -j DROP
重启以下Nginx
service nginx restart
进去项目目录
cd /srv/myproject/
启动项目
uwsgi --ini test.ini
打开浏览器输入IP+端口号 例子如下
66.42.100.165:8099
最后可以直接使用git上的项目进行部署