最近在学习Python,有两个多月时间了,今天尝试用Python Flask框架搭建一个小型的系统,为了方便使用,在腾讯云购买了一台服务器,准备把项目架设到上面。自己做记录的同时也给大家做一个参考,将整个搭建过程完整的写下来。
开发环境:CentOS 7.5 / Python 3.7.3 / Nginx 1.14.2 / MySQL 8.0.15 / Flask 1.0.2 / Gunicorn 19.9.0
步骤一:关闭防火墙和 SElinux
[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable firewalld #开机禁用firewall服务
[root@localhost ~]# getenforce #查看SELinux状态 Enforcing [root@localhost ~]# /usr/sbin/sestatus #Current mode表示当前selinux防火墙的安全策略 SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 31 [root@localhost ~]# setenforce 0 #临时关闭SElinux [root@localhost ~]# getenforce Permissive [root@localhost ~]# vim /etc/selinux/config #永久关闭 将 "SELINUX=enforcing" 改为 "SELINUX=disabled",保存后退出,重启才会生效
步骤二:安装软件包
VPS 上安装的 CentOS 系统并非完整版的系统,有些命令无法运行。为了方便之后的配置,要将所需要的工具包手工给安装上。
[root@localhost ~]# yum install -y vim tree net-tools lrzsz [root@localhost ~]# yum groupinstall "Development Tools" -y
步骤三:安装 Pyenv
1. 什么是 Pyenv
Pyenv 是 Python 版本管理器。在不影响系统自带 Python 版本下,实现 Python 多版本共存。
2. 什么是 Pyenv-virtualenv
Pyenv-virtualenv 是 Pyenv 插件,可以用来创建基于不同Python版本的干净的虚拟环境。
2. 安装依赖包
[root@localhost ~] yum -y install git gcc make patch zlib-devel gdbm-devel openssl-devel sqlite-devel bzip2-devel readline-devel
3. 安装 Pyenv 和 Pyenv-virtualenv
[root@localhost ~] curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
4. 设置 Pyenv 环境变量
在 ~/.bash_profile 文件中加入三行配置文件,不会用 Vim 编辑器的可以先用 FTP 软件下载这个文件修改保存之后再上传上去。
export PATH="~/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
运行命令exec "$SHELL" 或者source ~/.bash_profile
5. Pyenv 使用指南
5.1. 查看可以安装的版本
[root@localhost ~] pyenv install --list
5.2. 安装 Python 3.7.3
[root@localhost ~] pyenv install 3.7.3
在安装 Python 3.7.0 以上的版本会报 ModuleNotFoundError: No module named '_ctypes' 错误
Python 3.7.0 以上的版本需要新的包 libffi-devel ,只需要安装此包,编译即可。
[root@localhost ~] yum install libffi-devel -y [root@localhost ~] make install
再次执行命令 pyenv install 3.7.3 ,即可安装成功。
5.3. Pyenv 常用命令
查看所有 pyenv 下安装的所有版本
[root@localhost ~] pyenv versions * system (set by /root/.pyenv/version) 2.7.13 3.6.5 3.7.3
切换 Python 版本
[root@localhost ~] pyenv local 3.7.3
6. Pyenv-virtualenv 使用指南
6.1. 创建虚拟环境语法
pyenv virtualenv 版本号 虚拟环境名
[root@localhost ~] pyenv virtualenv 3.7.3 venv-3.7.3
6.2. 创建项目
[root@localhost ~] mkdir Python3 [root@localhost Python3] pyenv local venv-3.7.3 (venv-3.7.3) [root@localhost Python3] (venv-3.7.3) [root@localhost Python3] cd .. [root@localhost Python3] cd Python3 (venv-3.7.3) [root@localhost Python3] (venv-3.7.3) [root@localhost python3] python -V Python 3.7.3
我们只要进入创建的项目,就会自动进入创建的虚拟环境,反之亦然。如需要关闭自动激活,可以运行 pyenv deactivate,需要重启可以运行 pyenv activate 虚拟环境名。
步骤四:安装 Nginx
1. 安装
cd /root/soft wget http://nginx.org/download/nginx-1.14.2.tar.gz tar -zxvf nginx-1.14.2.tar.gz cd nginx-1.14.2 ./configure make make install
2. 配置 Nginx
Nginx 配置文件位于
# /usr/local/nginx/conf/nginx.conf server{ listen 80; #监听的端口 server_name 127.0.0.1; #当请求这些server name的时候,nginx才会做反向代理,0.0.0.0是指全部 location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } # location 顾名思义,定位,就是当访问 / 的时候,nginx会将请求转给本地的8080端口,而后面的设置都是一些基本的配置,可以直接用 location /static { alias /home/project/static; } }
3. 常用命令
/usr/local/nginx/sbin/nginx # 启动 /usr/lcoal/nginx/sbin/nginx -s stop # 关闭 /usr/local/nginx/sbin/nginx -s reload # 重启
4. 其他
在执行到 make 命令,会出现 make[1]: Leaving directory /usr/local/nginx-1.14.2 无需理会即可。
步骤五:安装 MySQL
1. 下载并安装 MySQL 官方的 Yum Repository
[root@localhost ~] wget -i -c https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm [root@localhost ~] yum -y install mysql80-community-release-el7-3.noarch.rpm [root@localhost ~] yum -y install mysql-community-server
2. 启动 MySQL
[root@localhost ~] service mysqld start [root@localhost ~] systemctl start mysqld.service
3. 检查 MySQL 状态
[root@localhost ~] service mysqld status [root@localhost ~] systemctl status mysqld.service
4. 获取 MySQL 临时密码
grep 'temporary password' /var/log/mysqld.log
5. 修改 MySQL 密码
# 登陆 MySQL mysql -uroot -p # 修改 MySQL 密码 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
步骤六:安装 Gunicorn
1. 安装
# 进入之前创建的虚拟环境目录 (venv-3.7.3) pip install gunicorn
2. 运行
(venv-3.7.3) gunicorn -w4 -b 127.0.0.1:8080 -D manage:application
3 关闭和重启
# 获取Gunicorn进程树 pstree -ap|grep gunicorn # 关闭进程 kill -9 1234 # 重启进程 kill -HUP 1234
至此在 CentOS 部署 Flask 框架已经全部完成,因开发环境和其他因素的关系,以上内容仅供参考。在安装部署过程中出现的任何错误,建议 Google 查询。