参考文章:www.jianshu.com/p/f1acbd401…
1.安装python
1)下载 python 3.6.1
wget https://www.Python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
2) 解压
tar xJf Python-3.6.1.tar.xz
3) 进入 python-3.6.1 目录
cd Python-3.6.1
4)安装
./configure --prefix=/usr/local/python3 && make && make install
如果安装失败需要先执行:
sudo yum install gcc-c++
如果报:zipimport.ZipImportError: can't decompress data; zlib not available
执行:yum -y install zlib*
5)创建python3软链接
sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3
sudo ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
一般安装python3后pip3会一起安装了,(pip3 -V查看是否安装)如果没有安装pip3
2.虚拟环境
1)安装虚拟环境
pip3 install virtualenv -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
2)创建Python的虚拟环境
在指定目录下执行则安装在该目录下(比如可以在py36venv下,先mkdir py36venv)
/usr/local/python3/bin/virtualenv -p /usr/bin/python3 venv
3)激活虚拟环境(虚拟环境目录下执行,如py36venv下)
source venv/bin/activate
4)关闭环境:
deactivate
3.requirements.txt的生成和安装
首先在项目的虚拟环境生成requirements.txt,进入虚拟环境:
pip freeze>requirements.txt
服务器端进入虚拟环境,执行安装
pip install -r requirements.txt
4.安装MySQL
wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'
sudo rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
yum repolist all | grep mysql
sudo yum install mysql-community-server
启动mysql服务
sudo service mysqld start
sudo systemctl start mysqld
sudo systemctl status mysqld
查看系统默认的root密码
grep "temporary password" /var/log/mysqld.log
mysql -u root -p输入密码后进入MySQL修改默认密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'(密码改成了root)
修改密码会提示校验不通过先执行:set global validate_password_policy=0;
PS:注意本地安装Navicat连接远程服务器的时候,会被拒绝这时需要在服务器端运行授权:
grant all privileges on *.* to 'root'@'%' identified by 'root';
flush privileges;
5.安装nginx
安装依赖包:
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel```
wget http://nginx.org/download/nginx-1.10.2.tar.gz
tar -zxvf nginx-1.10.2.tar.gz
cd nginx-1.10.2
./configure --prefix=/usr/local/nginxmake && make install
whereis nginx
/usr/local/nginx/sbin/nginx
修改NGINX配置文件:
cd /etc/nginx
vi nginx.conf
#location增加uwsgi的配置
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8080;
}
6.安装uwsgi
虚拟环境下安装uwsgi:pip install uwsgi
找一个文件夹下创建一个配置文件config.ini
[uwsgi]
# uwsgi 启动时所使用的地址与端口
socket = 127.0.0.1:8080
# 指向网站目录
chdir=/root/www/flask_idiom
# python 启动程序文件
wsgi-file = manage.py
# python 程序内用以启动的 application 变量名
callable = app
# 处理器数
processes = 4
# 线程数
threads = 2
buffer-size = 32768
#状态检测地址
stats = 127.0.0.1:9090
PS:socket地址和nginx处一致端口也要一致
启动直接:uwsgi config.ini
7. 项目部署:
项目地址:/root/www/flask_idiom
虚拟环境地址:/root/py36venv/venv
uwsgi配置地址:/root/www/flask_idiom
1)激活虚拟环境:[root@instance-9bor86dn venv]# source bin/activate
2)虚拟环境下进入到项目地址:初始化数据库
export FALSK_APP=manage.py
flask db init
flask db migrate
flask db upgrade
3)运行爬虫脚本初始化数据到数据库
mysql -u root -p
#创建数据库
create database bss_demo charset utf8;
4)运行项目:uwsgi config.ini
查看进程:ps -aux|grep uwsgi
kill -9 进程号停止服务
Tip:uwsgi是直接在前台启动的,当我们的连接终端跟服务器断开的时候uwsgi进程也被关闭了,所以我们需要uwsgi在后台运行。 后台启动项目用nohup启动:不挂断运行命令,用"&"可以让你的命令在后台执行(注意:别漏了&号。)
nohup uwsgi config.ini &
8.安装Supervisor(监控进程)
参考:www.jianshu.com/p/ac6c84a2f…
Supervisor(supervisord.org/) 是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具。
它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。
pip install supervisor
#修改supervisor的配置文件