1.安装git:
sudo yum install git
2.安装mysql客户端(如果数据库在本机需要安装mysql服务端)
wget https://dev.mysql.com/get/mysql-community-client-5.7.25-1.el7.x86_64.rpm
rpm -Uvh mysql-community-client-5.7.25-1.el7.x86_64.rpm
如果此处报错则在后面加上--force --nodeps(由于yum安装了旧版本的GPG keys造成的)
3.安装python3
sudo mkdir /usr/local/python3 # 创建安装目录
wget --no-check-certificate https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz #下载Python源文件
# 注意:wget获取https的时候要加上:--no-check-certifica
tar -xzvf Python-3.6.4.tgz # 解压缩包
cd Python-3.6.4 # 进入解压目录
sudo ./configure --prefix=/usr/local/python3 # 指定创建的目录
sudo make
sudo make install # 编译安装
配置两个版本共存:
配置python3软连接
sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3
错误解决:
(1)执行./configure时可能会报错,configure: error: no acceptable C compiler found in $PATH,这是因为未安装合适的编译器,安装下就好了,
sudo yum install gcc-c++
(使用sudo yum install gcc-c++时会自动安装/升级gcc及其他依赖的包。)
(2)执行sudo make install可能会报错"zipimport.ZipImportError: can't decompress data; zlib not available"错误提示,这是缺少zlib包导致的,安装下就好
yum install zlib zlib-devel –y
然后再去编译 make install python3.6就不会有错误提示
(3)在4中安装requriments.txt报错
ssl certificate:Can't connect to HTTPS URL because the SSL module is not available。原因是没有安装openssl
yum install openssl-devel zilb-devel python3-devel
然后安装python
4.安装pip
python2的pip安装:
sudo yum -y install epel-release # 首先安装 epel 扩展源
sudo yum -y install python-pip # 安装 python-pip
sudo yum clean all # 清除 cache
python3的pip安装:
wget --no-check-certificate https://github.com/pypa/pip/archive/9.0.1.tar.gz # 下载源代码
tar -zvxf 9.0.1.tar.gz # 解压文件
cd pip-9.0.1
python3 setup.py install # 使用 Python 3 安装
创建pip3链接:
sudo ln -s /usr/local/python3/bin/pip /usr/bin/pip3
升级pip:
pip install --upgrade pip
5.安装gunicorn
Gunicorn (独角兽)是一个高效的Python WSGI Server,通常用它来运行 wsgi application(由我们自己编写遵循WSGI application的编写规范) 或者 wsgi framework(如Django,Paster),地位相当于Java中的Tomcat。WSGI就是这样的一个协议:它是一个Python程序和用户请求之间的接口。WSGI服务器的作用就是接受并分析用户的请求,调用相应的python对象完成对请求的处理,然后返回相应的结果。简单来说gunicorn封装了HTTP的底层实现,我们通过gunicorn启动服务,用户请求与服务相应都经过gunicorn传输
创建虚拟环境:
cd /home/www
mkdir venv
python3 -m venv venv
激活虚拟环境:
source venv/bin/activate
根据requirements.txt文件安装依赖包:
pip3 install -r requirements.txt
安装报错:“ssl certificate:Can't connect to HTTPS URL because the SSL module is not available”。
问题修复:
先退出python虚拟环境找到Python3.6.4安装目录先安装openssl
yum install openssl-devel zilb-devel python3-devel
再重新编译Python3:make和make install
编译完成后再重新安装python requirems.txt文件安装依赖包:
pip3 install -r requirements.txt
查看pip已经安装python包:pip3 list --format=columns
安装gunicorn
pip3 install gunicorn
6.安装nginx
nginx 是一个高性能的web服务器。通常用来在前端做反向代理服务器。所谓正向与反向(reverse),只是英文说法翻译。代理服务,简而言之,一个请求经过代理服务器从局域网发出,然后到达互联网上服务器,这个过程的代理为正向代理。如果一个请求,从互联网过来,先进入代理服务器,再由代理服务器转发给局域网的目标服务器,这个时候,代理服务器为反向代理(相对正向而言)。
正向代理:{ 客户端 ---》 代理服务器 } ---》 服务器
反向代理:客户端 ---》 { 代理服务器 ---》 服务器 }{} 表示局域网
安装nginx
yum -y install nginx
启动nginx服务
systemctl start nginx.service
终止nginx服务
systemctl stop nginx.service
重启nginx服务
systemctl restart nginx.service
平滑重启,在nginx配置改动了,可以重新加载而不用先关闭再打开
nginx -s reload
nginx的配置
nginx的配置文件为:/etc/nginx/nginx.conf
server {
listen 80;
server_name adisonhyh.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
用vim命令查看nginx的配置文件
vim /etc/nginx/nginx.conf
出现“-bash: vim: command not found”错误是vim没有安装或者安装不全,可以用rpm -qa|grep vim查看已经安装的vim工具:
vim-enhanced-7.0.109-7.el5
vim-minimal-7.0.109-7.el5
vim-common-7.0.109-7.el5
如果缺少其中任何一条,比如 vim-enhanced 的,就用命令 yum -y install vim-enhanced 来安裝
查看nginx配置:
server {
listen 80;
#server_name _;
server_name serverIP;
charset utf-8;
#root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
#include uwsgi_params;
proxy_pass http://127.0.0.1:8000;
#uwsgi_pass 127.0.0.1:8000;
#uwsgi_param UWSGI_PYTHON /usr/local/python3;
#uwsgi_param UWSG_CHDIR /home/zhy/SocketServer;
#uwsgi_param UWSG_SCRIPT run:app;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
7.安装supervisor
如果你需要进程一直执行,若该进程因各种原因中断,也会自动重启的话,supervisor是一个很好的选择。supervisor管理进程,是通过fork/exec的方式将这些被管理的进程当作supervisor的子进程来启动,所以我们只需要将要管理进程的可执行文件的路径添加到supervisor的配置文件中就好了。此时被管理进程被视为supervisor的子进程,若该子进程异常终端,则父进程可以准确的获取子进程异常终端的信息,通过在配置文件中设置autostart=true,可以实现对异常中断的子进程的自动重启。
安装supervisor:
pip3 install supervisor
添加项目supervisor.conf配置文件
[program:blog]
command=/home/www/blog/venv/bin/gunicorn -w4 -b0.0.0.0:8000 wsgi:application ;supervisor启动命令
directory=/home/www/blog ; 项目的文件夹路径
startsecs=0 ; 启动时间
stopwaitsecs=0 ; 终止等待时间
autostart=false ; 是否自动启动
autorestart=false ; 是否自动重启
stdout_logfile=/home/www/blog/logs/gunicorn.log ; log 日志
stderr_logfile=/home/www/blog/logs/gunicorn.err ; 错误日志
使用 supervsior 启动 gunicorn,
supervisord -c supervisor.conf
sudo supervisorctl start program_name
查看supervisor进程:
pstree -ap|grep supervisor
报错"pstree:command not found",安装psmic即可:
yum install psmisc -y
8.参考资料
(1)CentOS 部署 flask项目
https://www.jianshu.com/p/da28ec28ef4b
(2)解决unix:///tmp/supervisor.sock no such file的问题
https://blog.youkuaiyun.com/qq_28885149/article/details/79364685