@[toc]
1. centos7.5系统安装python3.7
① 下载python安装包
[root@VM_39_157_centos ~]# wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
② 解压安装包到当前目录
[root@VM_39_157_centos ~]# tar zxvf Python-3.7.3.tgz -C ./
③ 安装python依赖
[root@VM_39_157_centos ~]# yum -y install openssl-devel bzip2-devel libffi-devel
④ 安装gcc、gcc-c++
[root@VM_39_157_centos ~]# yum -y install gcc gcc-c++
⑤ 进入python安装包目录
[root@VM_39_157_centos ~]# cd Python-3.7.3
⑥ 编译安装
[root@VM_39_157_centos Python-3.7.3]# ./configure --prefix=/usr/local
[root@VM_39_157_centos Python-3.7.3]# make
[root@VM_39_157_centos Python-3.7.3]# make install
⑦ 创建软链接
[root@instance-mtfsf05r ~]# cd /usr/bin
[root@VM_39_157_centos bin]# mv python python.backup
[root@VM_39_157_centos bin]# ln -s /usr/local/bin/python3.7 /usr/bin/python
[root@VM_39_157_centos bin]# ln -s /usr/local/bin/python3.7 /usr/bin/python3
⑧ 修改yum源指定为python2
[root@VM_39_157_centos bin]# cd /usr/bin
[root@VM_39_157_centos bin]# ls yum*
[root@VM_39_157_centos bin]# vi yum
[root@VM_39_157_centos bin]# vi yum-builddep
[root@VM_39_157_centos bin]# vi yum-config-manager
[root@VM_39_157_centos bin]# vi yum-debug-dump
[root@VM_39_157_centos bin]# vi yum-debug-restore
[root@VM_39_157_centos bin]# vi yumdownloader
[root@VM_39_157_centos bin]# vi yum-groups-manager
[root@VM_39_157_centos bin]# vi /usr/libexec/urlgrabber-ext-down
2. centos7.5安装nginx-1.16.0
① 下载nginx源码压缩包
[root@VM_39_157_centos ~]# wget http://nginx.org/download/nginx-1.16.0.tar.gz
② 解压压缩包
[root@VM_39_157_centos ~]# tar zxvf nginx-1.16.0.tar.gz
③ 安装nginx依赖
[root@VM_39_157_centos ~]# yum -y install gcc gcc-c++ openssl-devel pcre-devel httpd-tools
④ 进入nginx目录并添加用户
[root@VM_39_157_centos ~]# cd nginx-1.16.0
[root@VM_39_157_centos nginx-1.16.0]# useradd nginx
⑤ 指定所需的模块并执行配置文件
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_mp4_module --with-http_flv_module
⑥ 编译和安装nginx
[root@VM_39_157_centos nginx-1.16.0]# ./configure --prefix=/usr/local
[root@VM_39_157_centos nginx-1.16.0]# make
[root@VM_39_157_centos nginx-1.16.0]# make install
⑦ 检查nginx是否安装成功
[root@VM_39_157_centos nginx-1.16.0]# nginx -v
⑧ 创建一个软链接
[root@VM_39_157_centos nginx-1.16.0]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin
⑨ 启动nginx
[root@VM_39_157_centos ~]# nginx
⑩ 其它
- 查看nginx占用的端口
[root@VM_39_157_centos ~]# netstat -anptu | grep nginx
- 停止nginx
[root@VM_39_157_centos nginx-1.16.0]# nginx -s stop
- 强制停止nginx
[root@VM_39_157_centos nginx-1.16.0]# pkill -9 nginx
- 检查nginx是否应用配置文件
[root@VM_39_157_centos nginx-1.16.0]# nginx -t
3. nginx SSL证书的安装
① 将证书公钥和证书私钥传送到服务器(云主机)
thanlon@thanlon-Ubuntu:~/下载/www.blueflags.cn/Nginx$ scp 1_www.blueflags.cn_bundle.crt [email protected]:/root/flask/blueflag/cert
thanlon@thanlon-Ubuntu:~/下载/www.blueflags.cn/Nginx$ scp 2_www.blueflags.cn.key [email protected]:/root/flask/blueflag/cert
② 修改Nginx配置文件
打开nginx安装目录下conf目录中的nginx.conf文件:
[root@instance-mtfsf05r]# vi /usr/local/nginx/conf/nginx.conf
找到被注释掉的server 配置:
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
修改为:
# HTTPS server
#
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /root/flask/blueflag/cert/1_www.blueflags.cn_bundle.crt; #证书公钥
ssl_certificate_key /root/flask/blueflag/cert/2_www.blueflags.cn.key; #证书私钥
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
include uwsgi_params; #这里是导入的uwsgi配置
uwsgi_pass 127.0.0.1:8001;#需要和uwsgi的配置文件里socket项的地址
uwsgi_param UWSGI_PYHOME /root/flask/blueflag/blueflagvenv;#python的位置(虚拟环境下)
uwsgi_param UWSGI_CHDIR /root/flask/blueflag;#项目根目录
uwsgi_param UWSGI_SCRIPT manager:app;
}
}
保存退出。
③ 重新加载Nginx配置
检查配置文件是否正确:[root@instance-mtfsf05r]# nginx -t
重新加载Nginx配置文件:[root@instance-mtfsf05r]# nginx -s reload,通过Https方式访问站点:https://www.blueflags.cn/
数安时代, Nginx SSL证书安装指南:https://www.trustauth.cn/ssl-guide/676.html
4. centos7.5下安装和配置mysql5.6数据库
① 下载mysql rpm包
[root@VM_39_157_centos ~]# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
② 安装rpm包
[root@VM_39_157_centos ~]# rpm -ivh mysql-community-release-el7-5.noarch.rpm
③ 安装mysql-server
[root@VM_39_157_centos ~]# yum install mysql-server
④ 授权
[root@VM_39_157_centos ~]# chown mysql:mysql -R /var/lib/mysql
⑤ 安装mysql
[root@VM_39_157_centos ~]# mysqld --initialize
⑥ 开启服务
[root@VM_39_157_centos ~]# systemctl start mysqld
⑦ 查看服务状态
[root@VM_39_157_centos ~]# systemctl status mysqld
⑧ 设置打开计算机时启动服务
[root@VM_39_157_centos ~]# systemctl enable mysqld
⑨ 设置用户密码
[root@VM_39_157_centos ~]# mysqladmin -uroot password '123456'
⑩ 停止服务
[root@VM_39_157_centos ~]# systemctl stop mysqld
5. centos7.5+python3.7+nginx1.16+mysql5.6+uwsgi部署上线flask项目
① python3环境的安装(上文有介绍)
② nginx环境的安装(上文有介绍)
③ mysql环境的安装(上文有介绍)
安装完成后,将开发环境中的数据库文件导出:
thanlon@thanlon-Ubuntu:~$ mysqldump -uroot -p blueflag>db.sql
上传到服务器中:
thanlon@thanlon-Ubuntu:~$ scp db5.15.sql [email protected]:/root/db_file/
创建和use数据库后,通过source指令导入到MySQL中:
source db.sql
④ 上传项目源码到服务器中
在CentOS中的/root目录下创建flask文件夹用来存放项目文件
[root@instance-mtfsf05r ~]# mkdir flask
上传项目源码到服务其中(我的开发环境是Ubuntu,所以我就通过scp命令上传了)
thanlon@thanlon-Ubuntu:~/pythonWeb$ scp -r blueflag [email protected]:/root/flask
⑤ 安装Python虚拟化环境
通过pip3命令安装virtualenv
[root@instance-mtfsf05r ~]# pip3 install virtualenv
在项目根目录中创建虚拟环境文件目录(文件名自定义,这里是blueflagvenv)
[root@instance-mtfsf05r ~]# cd flask/blueflag
[root@instance-mtfsf05r blueflag]# virtualenv blueflagvenv
激活虚拟化环境
[root@instance-mtfsf05r blueflag]# source blueflagvenv/bin/activate
激活后出现虚拟化环境文件目录名子:(blueflagvenv) [root@instance-mtfsf05r blueflag]#
,说明激活成功,当前正处于Python虚拟环境。
⑥ 安装项目需要的第三方库
根据项目的需求安装(在虚拟环境中安装),例如:我的这些库
(blueflagvenv) [root@instance-mtfsf05r blueflag]# pip install flask
(blueflagvenv) [root@instance-mtfsf05r blueflag]# pip install wtforms
(blueflagvenv) [root@instance-mtfsf05r blueflag]# pip install flask_sqlalchemy
(blueflagvenv) [root@instance-mtfsf05r blueflag]# pip install requests
(blueflagvenv) [root@instance-mtfsf05r blueflag]# pip install pymysql
(blueflagvenv) [root@instance-mtfsf05r blueflag]# pip install flask_script
还可以使用:
thanlon@thanlon-Ubuntu:~$ pip3 freeze>blueflag.txt
导出依赖包,然后直接通过:
(blueflagvenv) [root@instance-mtfsf05r blueflag]# pip install -r blueflag.txt
安装这些依赖包。
⑦ 安装和配置uwsgi
安装:(blueflagvenv) [root@instance-mtfsf05r blueflag]# pip install uwsgi
在项目根目录下创建一个配置文件uwsgiconf.ini,文件名可以自定义:
(blueflagvenv) [root@instance-mtfsf05r blueflag]# touch uwsgiconf.ini
配置uwsgiconf.ini文件:
在uwsgiconf.ini文件中写入下面代码块的内容:(记得把注释全部删掉)
[uwsgi]
socket = 127.0.0.1:8001#启动程序时所使用的地址和端口
chdir = /root/flask/blueflag/#项目目录
wsgi-file = manager.py#项目程序启动文件
callable = app#程序内启用的application变量名字
processes = 2#处理器的数量,我的是2个处理器
threads = 2 #线程数量
stats = 127.0.0.1:9191#获取uwsgi统计信息的服务地址
~
在uwsgiconf.ini文件中写入下面代码块的内容:(记得把注释全部删掉)
⑧ 配置nginx
配置Nginx作为代理的目的是保证项目的安全和负载均衡。当存在网络请求时,Nginx先进行处理,然后再将请求交给uWSGI处理。
打开Nginx配置文件nginx.conf
[root@instance-mtfsf05r ~]# vi /usr/local/nginx/conf/nginx.conf
修改nginx.conf中的内容如下:(http{}中花括号中的server{})
server {
listen 80;
server_name 106.12.123.123;
#charset koi8-r;
#access_log logs/host.access.log main;
access_log /root/flask/blueflag/logs/access.log;#服务器接收的请求日志
error_log /root/flask/blueflag/logs/error.log;#错误日志
locatior / {
include uwsgi_params; #这里是导入的uwsgi配置
uwsgi_pass 127.0.0.1:8001;#需要和uwsgi的配置文件里socket项的地址
uwsgi_param UWSGI_PYHOME /root/flask/blueflag/blueflagvenv;#python的位置(虚拟环境下)
uwsgi_param UWSGI_CHDIR /root/flask/blueflag;#项目根目录
uwsgi_param UWSGI_SCRIPT manager:app;
}
⑨ 启动nginx与uwgi
启动Nginx
[root@instance-mtfsf05r ~]# nginx
到项目根目录blueflag(这是我的目录)下启动uWSGI,注意要激活Python虚拟环境中,这里在虚拟环境中安装了uwsgi
[root@instance-mtfsf05r blueflag]# cd /root/flask/blueflag/
[root@instance-mtfsf05r blueflag]# source blueflagvenv/bin/activate
(blueflagvenv) [root@instance-mtfsf05r blueflag]# uwsgi uwsgiconf.ini
通过服务器IP地址访问你的项目,正常访问,则部署上线成功