直接上代码
一:把本地代码提交到github上(具体看上一篇)
1. cd xxx #到你项目路径下
2. git init #git 初始化
3. git add * #提交所有修改后的文件
4. git remote add origin http:xxx.git #你的远程仓库地址
5. git commit -w # '提交 注释'
6. git push -u origin master #push 提交
二:保证你的服务器安装了pip
1. sudo apt-get install python3-pip
#如果不行就先卸载 再安装
2. sudo apt-get remove python3-pip
2. sudo apt-get install python3-pip
三:服务器安装Mysql
# 一定记住 root 密码,还要在配置文件中设置字符为UTF8
1. apt-get update 或 sudo apt-get update #更新apt
2. sudo apt-get install mysql-server #安装mysql服务
3. 安装完mysql-server 会提示可以运行mysql_secure_installation。#[安全配置向导](https://blog.csdn.net/qq_32786873/article/details/78846008)
4. That is allowed by default on MySQL # 允许远程链接数据库
5. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
/etc/mysql/my.cnf
#bind-address = 127.0.0.1
6. CREATE DATABASE xxx CHARACTER SET utf8 COLLATE utf8_general_ci; #创建一个数据库(注意名字)
四:安装虚拟环境 Vitualenv
1. pip install virtualenvwrapper #直接安装virtualenv
2. vim ~/.bashrc #注意需要先修改环境变量。否则命名无法使用
3. export WORKON_HOME=$HOME/.virtualenvs
4. source /usr/local/bin/virtualenvwrapper.sh
5. source ~/.bashrc # 别忘记重新加载
6. mkvirtualenv xxx -p python3 #用虚拟环境创建一个环境并指定版本为python3
7. workon xxx #切换到你的虚拟环境
五:服务器安装git下载代码
1. sudo apt install git
2. git init
3. git remote add origin http:xxx.git
4. git config credential.helper store #保存git密码
5. git pull origin master #拿到全部源码
6. git reset --hard HEAD #如果不小心改错了东西.就删掉本地的,再拉取一次
7. git pull oschina master #重新取得
六:正式部署源码
1. pip install -r requirements.txt #导入你项目的falsk依赖
#遇到报错: Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-bh2MXn/unroll/
#那么试试
#sudo python -m pip install --upgrade --force pip
#sudo pip install setuptools==33.1.1
2. pip manager.py db migrate #初始化数据库 如果初始化失败 清空migration文件夹
#清空migration你会丢掉你的测试数据,当然有不丢的办法,那就是直接去数据库里面改一个表
3. pip manager.py db upgrade #导入数据库,代码迁移完成
七:安装Nginx
apt install nginx #安装nginx 贴下配置文件位于: /etc/nginx/conf.d/xxx.conf
# 配置nginx与uwsgi的通信方式和名称,xxx就是名称,让各个服务之间能通信
upstream xxx {
# nginx使用socket的方式与uwsgi进行通信
# 这里指向你项目的目录下的socket文件,
# 这个socket文件不需要单独创建,在运行的时候会自动创建。
server unix:///srv/xxx/xxx.sock;
}
# 配置服务器
server {
# 监听的端口号
listen 80;
# 域名或者本机的ip地址
server_name dev.wudizu.com 47.104.22.138;
charset utf-8;
# 最大的上传大小
client_max_body_size 75M;
# adjust to taste
# 访问根目录下的任何url的配置
location / {
# 指定访问哪个upstream
uwsgi_pass wudi;
# 包括uwsgi参数的文件
include /etc/nginx/uwsgi_params;
}
location /static {
alias /srv/xxx/static;
}
}
运行 service nginx configtest 测试
安装Uwsgi
1. pip install uwsgi #安装uwsgi
贴下配置文件:
[uwsgi]
chdir = /srv/xxx
# 模块
module = firstweb #注意这里一定要你写的flask 首页文件名
# python的虚拟环境
home = /root/.virtualenvs/flask-py2
# 是否启用mater模式
master = true
# 进程数
processes = 10
# socket文件地址
socket = /srv/xxx/xxx.sock
# wsgi文件
wsgi-file = /srv/xxx/xxx.ini
# wsgi文件中的app变量
callable = app
# socket文件的权限
chmod-socket = 666
安装Supervisor
sudo pip install supervisor
# supervisor的程序名字
[program:mysite]
# supervisor执行的命令
command=uwsgi --ini mysite_uwsgi.ini
# 项目的目录
directory = /srv/xxx
# 开始的时候等待多少秒
startsecs=0
# 停止的时候等待多少秒
stopwaitsecs=0# 自动开始
autostart=true
# 程序挂了后自动重启
autorestart=true
# 输出的log文件
stdout_logfile=/srv/xxx/log/supervisord.log
# 输出的错误文件
stderr_logfile=/srv/xxx/log/supervisord.err
[supervisord]
# log的级别
loglevel=info
# 使用supervisorctl的配置
[supervisorctl]
# 使用supervisorctl登录的地址和端口号
serverurl = http://127.0.0.1:9001
# 登录supervisorctl的用户名和密码
username = admin
password = 123
[inet_http_server]
# supervisor的服务器
port = :9001
# 用户名和密码
username = admin
password = 123
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
然后使用supervisor运行uwsgi:
supervisord -c supervisor.conf
使用supervisorctl管理supervisord:supervisor是一个C/S模型,跟redis一样,有一个服务器,也有一个客户端命令用来管理服务的,使用以下命令进入到命令界面:
supervisorctl -c supervisor.conf
指定的文件必须和supervisord服务端保持一致。 一些常用的命令有:
supervisorctl -c supervisor.conf
> status # 查看状态
> start program_name # 启动程序
> restart program_name # 重新启动程序
> stop program_name # 停止程序
> reload # 重新加载配置文件
> quit # 退出当前的客户端