Flask:阿里云轻量应用服务器+Ubuntu16.04+uWSGI+Nginx+Flask
简介Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。
文章内容较长,希望可以仔细审阅。此教程亲测有效
一.把服务器公网IP记下来。
#转为root用户以获取权限
sudo su root
(1.修改文件,将其对应的主机名修改为新的主机名。
vim /etc/hostname
(2.需要将 /etc/hosts 中添加新的主机名。
vim /etc/hosts
127.0.0.1 localhost
127.0.0.1 gxr-aly
(3.重启服务器
shutdown -r now
二.所需软件安装
1.更新
清除索引
sudo apt-get clean
更新源
sudo apt-get update
修复损坏的软件包,尝试卸载出错的包,重新安装正确版本的
sudo apt-get -f install
更新软件
sudo apt-get upgrade
根据依赖关系更新
sudo apt-get dist-upgrade
2.MySQL
(1.安装mysql服务
默认5.7
sudo apt-get install mysql-server
(2.安装后的操作
通过这种方式安装好之后开机自启动和命令行上的环境变量都已经配置好。
修改文件 /etc/mysql/mysql.conf.d/mysqld.cnf
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
添加该句:
character-set-server=utf8
修改文件 /etc/mysql/conf.d/mysql.cnf
sudo vim /etc/mysql/conf.d/mysql.cnf
添加以下:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_general_ci
init-connect=‘SET NAMES utf8’
character-set-server = utf8
以上,修改完成后,重启mysql
sudo service mysql restart
(3.测试服务
mysql -uroot -p1111
(4.服务启动后端口查询
sudo netstat -anp | grep mysql
(5.服务管理
sudo service mysql start
#停止
sudo service mysql stop
#服务状态
sudo service mysql status
(6.查看守护进程mongod的运行状态
ps aux | grep mysql
(7.卸载
关闭守护进程mysql
sudo service mysql stop
卸载安装的软件包
sudo apt-get remove --purge mysql-server*
移除数据库和日志文件
数据库和日志文件的路径取决于配置文件中的配置
sudo rm -r 文件
3.MongoDB
(1.安装最新MongoDB服务
1.导入包管理系统使用的公钥
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
2.为MongoDB创建一个列表文件
echo “deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse” | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
3.更新本地包数据库
sudo apt-get update
4.安装最新版本
sudo apt-get install mongodb-org
5.安装指定版本
sudo apt-get install -y mongodb-org=4.0.0 mongodb-org-server=4.0.0 mongodb-org-shell=4.0.0 mongodb-org-mongos=4.0.0 mongodb-org-tools=4.0.0
(2.安装后的操作
配置文件mongod.conf所在路径:
sudo vim /etc/mongod.conf
配置项:
dbPath: /var/lib/mongodb
logAppend: true
path: /var/log/mongodb/mongod.log
port: 27017
bindIp: 127.0.0.1
开机启动mongodb服务
sudo systemctl enable mongod
(3.测试服务
mongo
(4.服务启动后端口查询
sudo netstat -anp | grep mongod
(5.服务管理
sudo service mongod start
#停止
sudo service mongod stop
#服务状态
sudo service mongod status
(6.查看守护进程mongod的运行状态
ps aux | grep mongod
(7.卸载
关闭守护进程mongod
sudo service mongod stop
卸载安装的软件包
sudo apt-get remove --purge mongodb-org*
移除数据库和日志文件
数据库和日志文件的路径取决于/etc/mongod.conf文件中的配置
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
4.Redis
(1.安装Redis服务
sudo apt-get install redis-server
(2.安装后的操作
开启远程连接
sudo vim /etc/redis/redis.conf
修改如下:#bind 127.0.0.1,如果不需要远程连接redis则不需要这个操作
设置密码
sudo vim /etc/redis/redis.conf
添加(密码设置为111111)
requirepass 111111
(3.测试服务
本地测试
redis-cli
set操作的时候要求输入密码,执行auth密码验证密码后,可以执行set操作
auth passwo
测试远程登录
有redis-cli.exe的目录输入:
redis-cli -h (IP) -p (端口)
(4.服务启动后端口查询
sudo netstat -anp | grep redis
(5.服务管理
sudo service redis start
#停止
sudo service redis stop
#服务状态
sudo service redis status
(6.查看守护进程mongod的运行状态
ps aux | grep redis
(7.卸载
关闭守护进程redis
sudo service redis stop
卸载安装的软件包
sudo apt-get remove --purge redis-server*
移除数据库和日志文件
数据库和日志文件的路径取决于配置文件中的配置
sudo rm -r 文件
5.Git
1.安装git
sudo apt-get install git
2.git配置
git config --global user.name “guoxianru”
git config --global user.email "[email protected]"
3.创建公钥
ssh-keygen -C ‘[email protected]’ -t rsa
cd ~/.ssh
vim id_rsa.pub
复制其中所有内容
https://github.com/settings/profile
点击SSH公钥
标题栏可以随意输入,公钥栏把你刚才复制的内容粘贴进去就OK了。
三.安装&创建虚拟环境
1.系统环境
Ubuntu16.04
2.安装psm
使用pip下载,会从国外的网站下载,速度超慢,所以要切换pip到国内的镜像源,一般会用psm切换pip的源
sudo pip install psm
psm的使用,以下操作需要在虚拟环境外进行,选择好镜像源后在进入虚拟环境
1.查看列出pip的镜像源
sudo psm ls
2.选择指定的镜像源
sudo psm use douban
3.查看当前的镜像源
sudo psm show
3.安装和配置虚拟环境
升级pip
sudo pip install --upgrade pip
安装虚拟环境
sudo pip install virtualenv
sudo pip install virtualenvwrapper
virtualenvwrapper 是virtualenv的扩展管理包,可以将所有的虚拟环境整合在一个目录下。
配置虚拟环境
1.创建虚拟环境管理目录
sudo mkdir ~/.envs
2.打开.bashrc
sudo vim ~/.bashrc
3.在.bashrc的末尾增加下面内容
export WORKON_HOME=$HOME/.envs # 所有虚拟环境存储的目录
source /usr/local/bin/virtualenvwrapper.sh
4.使配置生效
source ~/.bashrc
5.更新配置文件报错:No module named virtualenvwrapper
解决方法,重新添加python有关的环境变量:
(一定先确认virtualenvwrapper依赖的Python版本)
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
4.虚拟环境操作
1.创建虚拟环境
env_name为你要创建的虚拟环境的名字,需要联网
mkvirtualenv env_name
2.创建指定python版本的虚拟环境
mkvirtualenv -p /usr/bin/python3.5 python35_
mkvirtualenv -p /usr/bin/python2.7 python27_
3.查看安装的所有虚拟环境
workon
4.进入虚拟环境
workon env_nam
5.退出虚拟环境
deactivate
6.删除虚拟环境
rmvirtualenv env_nam
5.在Python环境下安装Django框架和所需第三方包
导出安装的库到list.txt
pip freeze > list.txt
导入list.txt中列出的库到系统
pip install -r list.txt
四.项目代码注意事项
1.公网访问配置
打开生产环境
DEBUG = False
2.同步数据库
五.安装与配置uwsgi
ngix是门户,它负责转发,它转发动态请求给uwsgi,然后uwsgi在转给django处理
1.#安装Uwsgi报错解决方法(Python环境下)
sudo apt-get install -y python3-dev
2.# 安装uwsgi
pip install uwsgi
3.测试是否安装完成并且正常
uwsgi --version
4.配置uwsgi.ini文件
在项目文件夹与manage.py同级的目录下创建uwsgi.ini,文件内容如下(注意路径):
[uwsgi]
socket = 127.0.0.1:5050
chdir = /srv/goodsmovie
wsgi-file = ./manage.py
callable = app
master = true
processes = 4
threads = 2
vacuum = true
daemonize = /srv/goodsmovie/uwsgi.log
5.配置完后在该目录下输入
uwsgi --ini flaskuwsgi.ini
出现getting INI configuration from uwsgi.ini(成功)
项目有更新的时候,需要先关闭uwsgi然后重启即可
sudo killall -9 uwsgi
6.基本命令
启动uwsgi服务器
uwsgi mypath/ flaskuwsgi.ini
查看uwsgi是否运行
ps -aux | grep uwsgi
查看端口号占用
netstat -anp | grep 7878
结束uwsgi进程
pgrep uwsgi | xargs kill -s 9
六.安装与配置Nginx
1.安装
sudo apt-get install nginx
2.启动
/etc/init.d/nginx start
3.配置nginx
sudo vim /etc/nginx/nginx.conf
在Http内创建server子项如下:
server {
listen 80;
server_name goodsmovie.top www.goodsmovie.top;
charset UTF-8;
access_log /var/log/nginx/goodsmovie_access.log;
error_log /var/log/nginx/goodsmovie_error.log;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:5050;
uwsgi_read_timeout 2;}
location /static {
expires 30d;
alias /srv/goodsmovie/app/static;}
}
:wq保存
若启动失败,则需要检查,输入 sudo nginx -t 测试配置文件是否正确
七.启动服务器
1.切换到项目目录下运行
uwsgi --ini flaskuwsgi.ini
2.重启服务器
/etc/init.d/nginx restart
八.维护更新
项目有更新的时候,需要先关闭uwsgi然后重启即可
1.关闭uwsgi
killall -9 uwsgi
2.重启
uwsgi --ini flaskuwsgi.ini
/etc/init.d/nginx restart