这是开博的第一篇文章,为什么会选择将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
友情链接: 721qq.space    www.dro3.com

分享 Tag:python,Nginx,gunicorn,MySQL
土拨鼠Author
 

检查评论功能!

回复
友情链接: 721qq.space    www.dro3.com