这是开博的第一篇文章,为什么会选择将flask项目部署作为第一篇文章来写呢?对于Mack来讲为了迈出这一步等得时间稍长(因为个人原因整整一个月没有碰代码),对于很多同学来说第一次部署确实会遇到很多问题,我仅将自己完成部署的步骤和过程分享出来,也算作整理的一个笔记。
既然要部署Web项目,那必然需要服务器端,出于便捷考虑Mack购买了香港的VPS(不需要备案且访问速度不逊色于国内线路)。
VPS安装的镜像是Ubuntu 16.04 64位版本的,这个版本自带的python除2.7版本以外还有3.5的版本,对于我将部署的flask项目而言Python3.5已经满足,如需3.6或更高版本可以参考其他资料完成安装。
需要准备的工具(自行百度搜索下载安装):
1. WinSCP(用于ssh方式远程连接Linux服务器,可以上传和管理文件)
2. putty (用于ssh方式远程连接Linux服务器)
系统更新升级
apt update
apt upgrade
添加用户并更改用户权限(非必要项)
adduser zheng
usermod -aG sudo zheng
切换用户安装必备的包(选择)
sudo apt install python-dev python-pip (python2)
sudo apt install python3-dev python3-pip (python3)
升级python版本(ubuntu16.04如果不升级3.6可以不使用)
sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python3.6
使用将python3 默认对应的python3.4 改成python3.6
sudo mv /usr/bin/python3 /usr/bin/python3-old
sudo ln -s /usr/bin/python3.6 /usr/bin/python3
sudo ln -s /usr/bin/python3/bin/pip3 /usr/bin/pip3
安装pipenv来简化安装项目虚拟环境以及依赖(我是安装了,不过还没用过)
sudo pip3 install pipenv
安装mysql
sudo apt-get install mysql-server
sudo apt-get install mysql-client
MySQL相关设置以及创建数据库
服务管理启动:sudo service mysql start
服务启动:sudo systemctl mysql start
停止:sudo service mysql stop
服务状态:sudo service mysql status
重启Mysql:sudo service mysql restart
登录MySql数据库:mysql -u root -p
连接数据库:mysql -h 127.0.0.1 -P 3306 -uroot -p123456 #-h为远程IP,-P为端口号,-u为用户名,-p为密码
测试SQL:show databases;
检查mysql默认支持的字符串:show variables like "%char%";
确认有非utf8之后修改文件,先quit;退出当前登录状态
退出连接:quit;
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
增加character-set-server=utf8
apt install gedit
sudo vim /etc/mysql/conf.d/mysql.cnf
增加default-character-set=utf8
sudo service mysql restart
开启远程访问:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉bind-address
删除匿名用户:
#查看所有数据库: show databases;
#选择Mysql数据库:use mysql;
#查看mysql数据库所有表:show tables;
#查看mysql数据库所有用户:selct * from user;
创建一个数据库:
mysql -h 127.0.0.1 -P 3306 -uroot -p123456
create database blog
设置防火墙
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 3306
sudo ufw enable
sudo ufw status
创建项目目录以及虚拟环境安装、开启、关闭
mkdir /home/www/blog
cd /home/www/blog
mkdir venv
apt-get install python3-venv
python3 -m venv venv
在本地先生成依赖
pip freeze > requirements.txt
安装依赖
pip3 install -r requirements.txt
安装独角兽
pip3 install gunicorn
运行独角兽
gunicorn -w 4 -b 0.0.0.0:8000 wsgi:app
source venv/bin/activate 运行虚拟环境
deactivate 退出虚拟环境
安装nginx
sudo apt install nginx
sudo rm /etc/nginx/sites-enabled/default
sudo nano /etc/nginx/sites-enabled/marmot
sudo nginx -t
sudo service nginx restart
正式运行项目(如果这样运行,可能网站会经常挂掉502,还是使用supervisor将gunicorn常驻进程)
gunicorn -w 4 wsgi:app
服务常驻进程
sudo apt install supervisor
sudo vim /etc/supervisor/conf.d/blog.conf
写入和保存
[program:blog]
command=/home/www/blog/venv/bin/gunicorn -w 4 wsgi:app
directory=/home/www/blog
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
非必要操作
sudo vim /etc/supervisor/supervisord.conf
#在[supervisord]下面插入保存:(为了pipenv click 调用命令不出编码问题,在这里我没用pipenv run ,没有一定的必要性执行这样的操作!纯作为记录)
environment=LC_ALL='en_US.UTF-8',LANG='en_US.UTF-8'
重启服务
sudo service supervisor restart
查看进程运行情况
sudo supervisorctl
土拨鼠Author
2019-01-08T02:38:33Z检查评论功能!