【CentOS-7.4】Flask+Vue+nginx+mysql

笪健
2023-12-01

【CentOS7.4】Flask+Vue+nginx+mysql


【升级】

yum update
yum upgrade
yum update

安装软件

yum install wget tree vim zip unzip -y

官方建议使用 LAMP 架构,不过我的服务器已经安装了 nginx 和 MySQL-8,只能使用 LNMP。

【安装】nginx

# 添加 nginx 到 yum 源
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

或者 

vi /etc/yum.repos.d/nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
# 安装依赖

# gcc 是 linux 下的编译器
yum install gcc gcc-c++ -y

# pcre 是一个 perl 库,包括 perl 兼容的正则表达式库,nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要安装 pcre 库。
yum install pcre pcre-devel -y

# zlib 库提供了很多种压缩和解压缩方式 nginx 使用 zlib 对 http 包的内容进行 gzip
yum install zlib zlib-devel -y

# openssl 是 web 安全通信的基石,没有 openssl,可以说我们的信息都是在裸奔
yum install openssl openssl-devel -y
# 安装
yum install nginx

# 配置 nginx 开机启动
systemctl enable nginx

# 启动 nginx 服务
systemctl start nginx

# 查看 nginx 服务是否启动成功
ps -ef | grep nginx

【配置】https 访问


【配置】防火墙

# 查看防火墙【服务】状态
systemctl status firewalld

# 查看防火墙【运行】状态
firewall-cmd --state

# 开启
service firewalld start

# 重启
service firewalld restart

# 关闭
service firewalld stop

# 查询端口是否开放
firewall-cmd --query-port=8080/tcp

# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=8080-8085/tcp

# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp

# 查看防火墙的开放的端口
firewall-cmd --permanent --list-ports

# 重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

如果是阿里云 ECS,则去【安全组】配置防火墙规则。  


【配置】SElinux

# 临时关闭 SELinux
setenforce 0

# 临时打开 SELinux
setenforce 1

# 查看 SELinux 状态
getenforce

# 开机关闭 SELinux
# 编辑 /etc/selinux/config 文件,将 SELinux 的值设置为 disabled。
vi /etc/selinux/config

# 查看防火墙规则
firewall-cmd --list-all 

【安装】MySQL-8

官方网站

https://dev.mysql.com/downloads/repo/yum/

# 下载 MySQL-8 源
wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm

# 安装 yum repo 文件并更新 yum 缓存
rpm -ivh mysql80-community-release-el7-3.noarch.rpm

# 配置禁用 mysql5.7 的仓库,启用 mysql8.0 的仓库
yum install yum-utils -y
yum-config-manager --disable mysql57-community
yum-config-manager --enable mysql80-community

# 检查是否正确启用了仓库
yum repolist enabled | grep mysql

# 安装
yum install mysql-community-server

# 启动 MySQL 服务
systemctl start mysqld

# 配置开机启动
systemctl enable mysqld

# 查看 MySQL 密码
grep 'temporary password' /var/log/mysqld.log

# 输入密码
mysql -uroot -p

# 修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'UUUUXXXX';
exit

# 启动 MySQL 服务
systemctl restart mysqld
# 查看
show databases;

# 创建数据库
create database mydatabase;

# 删除数据库
drop database mydatabase;

# 打开、使用数据库
use mydatabase;

# 查看数据库表结构
desc student;

# 查询表中的记录
select id,name,sex,degree from student;

【安装】 Node.js

NodeJS 官网:https://nodejs.org/dist/

清华大学源:https://mirror.tuna.tsinghua.edu.cn/nodejs-release/

下载

cd /usr/src && wget https://mirror.tuna.tsinghua.edu.cn/nodejs-release/v13.14.0/node-v13.14.0-linux-x64.tar.xz

解压

xz -d node-v13.14.0-linux-x64.tar.xz
tar -xvf node-v13.14.0-linux-x64.tar

链接

ln -s /usr/src/node-v13.14.0-linux-x64/bin/node /usr/bin/node
ln -s /usr/src/node-v13.14.0-linux-x64/bin/npm /usr/bin/npm

验证

node -v
v13.14.0
npm -v
6.14.4

 安装依赖

cd /var/www/UUUXXX

更换 npm 源

npm config set registry https://registry.npm.taobao.org/
npm set sass_binary_site https://npm.taobao.org/mirrors/node-sass

查看 npm 配置

npm config get

安装

npm install --unsafe-perm

【安装】 python3

查看当前 python 版本

python
Python 2.7.5 (default, Aug  7 2019, 00:51:29) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()
# 安装 python3
yum install python3 python3-devel
python3
Python 3.6.8 (default, Aug  7 2019, 17:28:10) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()

【安装】 pip3

yum install python3-pip

【查看】pip 版本

pip -V

或者

pip3 -V

【安装】pipenv

# 方法一
pip install pipenv

或者

pip3 install pipenv


# 方法二
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pipenv

或者

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pipenv

离线安装

pip3 install \
pipenv-2018.11.26-py3-none-any.whl \
virtualenv-16.7.9-py2.py3-none-any.whl \
virtualenv_clone-0.5.3-py2.py3-none-any.whl \
certifi-2019.3.9-py2.py3-none-any.whl
进入文件夹,执行 pipenv shell 启动 pipenv

在 pipenv 虚拟环境中执行:

pip3 list 查看这个虚拟环境有哪些安装包

pipenv graph 可以查看依赖关系

pipenv install  flask 安装包

pipenv --venv 查看这个虚拟环境所属目录,在 pycharm 中添加

 


【创建项目】,且在对应的目录下创建对于的虚拟环境

# 建立目项目录
mkdir -p /var/www/UUUXXX

# 进入项目目录
cd UUUXXX/

# 创建虚拟环境
pipenv install

【配置】源

vim /var/www/UUUXXX/Pipfile

# [[source]]
# name = "pypi"
# url = "https://pypi.org/simple"
# verify_ssl = true


[[source]]
name = "pypi-tsinghua"
url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
verify_ssl = true

vim /var/www/UUUXXX/Pipfile.lock 

                "name":  "pypi-tsinghua"
                "url":   "https://pypi.tuna.tsinghua.edu.cn/simple/"

在 pipenv 中虚拟机安装【Flask】及其他【whl】

# 首先进入 pipenv shell
pipenv shell

# 进入 requirements.txt 文件目录
cd

pipenv install -r requirements.txt

# 生成 requirement.txt 文件
pipenv lock -r --dev > requirements.txt

pip 安装离线本地包 

导出本地已有的依赖包
pip freeze > requirements.txt

将依赖包下载到本地
# 下载到当前目录,指定 pip 源
pip download -r requirements.txt -d . -i https://mirrors.aliyun.com/pypi/simple/

创建虚拟环境
# -q 安静的方式创建
# --no-site-packages 不拷贝本地的第三方包,创建干净的虚拟 python 运行环境
# --python=python3.6 指定创建 python 版本环境
# .venv 虚拟环境目录
virtualenv -q --no-site-packages --python=python3.6 .venv

进入虚拟环境
source .venv/bin/activate

安装本地依赖包
pip install --no-index --find-links=. -r requirements.txt

 

certifi==2019.3.9
chardet==3.0.4
Click==7.0
cymysql==0.9.13
Flask==1.0.2
Flask-Cors==2.1.0
Flask-JWT-Extended==3.12.1
Flask-SQLAlchemy==2.3.2
Flask-WTF==0.14.2
idna==2.6
itsdangerous==1.1.0
Jinja2==2.10
MarkupSafe==1.1.1
pipfile==0.0.2
PyJWT==1.7.1
requests==2.18.4
six==1.14.0
SQLAlchemy==1.2.11
toml==0.10.0
urllib3==1.22
Werkzeug==0.14.1
WTForms==2.2.1
oss2==2.6.1
pandas==0.25.3
xlrd==1.2.0
xlwt==1.3.0
markdown==3.2.1
# 或者


pipenv install certifi

 

配置 VUE API 

1. 将前端、后端开发的电脑连接至同一局域网内(如同一个WiFi下),将虚拟机设置的网络连接方式改为桥接
2. 修改前端、后端虚拟机的IP地址,保证在同一个网关下。(如前端:192.168.31.142,后端:192.168.31.143)
3. 在前端虚拟机上,修改前端程序代码src/config/index.js中的baseURL切换为后端服务器IP地址。(如:baseURL: 'http://192.168.31.143:5000/')
4. 在后端虚拟机上启动后端服务(python starter,py)
5. 在前端虚拟机上启动前端程序
6. 在局域网内使用浏览器访问前端IP。(如:http://192.168.31.143:5000)
7. 点击登录,后端显示请求接受日志,前后端连接成功。
找到 VUE 目录下 src/config/index.js

vi index.js

# 更改改成服务器IP地址,端口 5000(与flask后端一致)此虚拟机IP为 192.168.11.139

 baseURL: 'http://192.168.11.139:5000/',

# 在 VUE 的根目录下运行
# 生成 dist 文件夹

npm run-script build 

将文件夹放入 Nginx 目录中(替换原目录中的HTML文件夹)

cp -R dist /usr/share/nginx # 拷贝dist到 Nginx文件夹中
cd /usr/share/nginx #到该路径中
rm -rf html #删除原有的文件夹
mv dist html  #把build的文件夹dist改名为html

到 flask 根目录中的 starter.py 中 端口为 5000

cd /var/www/UXmall
vi starter.py #进行编辑
app.run(host='0.0.0.0',port=5000,debug=True) #

找到 nginx 配置文件
cd /etc/nginx/conf.d

vi default.conf #进行编辑
    #server 的参数
    listen       80; #参数可改为80
    server_name  localhost; #参数为localhost

    #location 的参数
     root   /usr/share/nginx/html; #nginx 代理的路径
     index  index.html index.htm;  #nginx 代理的页面
启动 nginx


在 flask 根目录下,进入虚拟环境

pipenv shell

运行starter.py

python3 starter.py

启动后端,激活 pipenv 虚拟环境

#	启动
		pipenv shell

#	退出
		exit

#	执行
		python3 starter.py


# 快捷执行
cd /var/www/UUUXXX && pipenv shell && python3 starter.py

测试

# 访问网页
curl http://127.0.0.1:5000/

启动前端,配置 nginx

……
location / {
        root    /var/www/UXmall/dist;
        index  index.html index.htm;
    }
……

###
###
###

这里注意
1、【目录】及【用户】权限
2、SELinux
3、防火墙

前端——后端,连接

# 安装 uwsgi

pip3 install uwsgi



# 安装 C、C++ 的编译器

yum install -y gcc pcre-devel openssl-devel



# 安装 python 依赖

yum install -y python3-devel

Dependencies Resolved

=========================================================================================================================
 Package                         Arch            Version               Repository                                   Size
=========================================================================================================================
Installing:
 python3-devel                   x86_64          3.6.8-10.el7          /python3-devel-3.6.8-10.el7.x86_64          621 k
Installing for dependencies:
 dwz                             x86_64          0.11-3.el7            rhel-7-server-rpms                           99 k
 perl-srpm-macros                noarch          1-8.el7               rhel-7-server-rpms                          4.7 k
 python-rpm-macros               noarch          3-32.el7              rhel-7-server-rpms                          8.9 k
 python-srpm-macros              noarch          3-32.el7              rhel-7-server-rpms                          8.5 k
 python3-rpm-generators          noarch          6-2.el7               rhel-7-server-rpms                           20 k
 python3-rpm-macros              noarch          3-32.el7              rhel-7-server-rpms                          7.8 k
 redhat-rpm-config               noarch          9.1.0-88.el7          rhel-7-server-rpms                           81 k



# 安装 uwsgi

pip3 install uWSGI-2.0.18-cp36-cp36m-linux_x86_64.whl
将前端、后端开发的电脑连接至同一局域网内
将虚拟机设置的网络连接方式改为桥接
修改前端、后端虚拟机的IP地址,保证在同一个网关下。(如前端:192.168.0.142,后端:192.168.0.143)

在前端虚拟机上,修改前端程序代码 src/config/index.js 中的 baseURL 切换为后端服务器 IP 地址。(如:baseURL: 'http://192.168.0.143:5000/')

在后端虚拟机上启动后端服务(python starter.py)

在前端虚拟机上启动前端程序

在局域网内使用浏览器访问前端IP。(如:http://192.168.0.143:5000)
点击登录,后端显示请求接受日志,前后端连接成功。

 

更换IP或者端口时需要做哪些更改

前端

.env.environmment 和 .env.production中 vue_app_base_url = 改成后端的 IP 和端口

cd /etc/nginx/conf.d/ default.conf 
里 listen 改成前端端口

 后端

starter.py port
更改为与前端相同的端口

uWSGI 中127.0.0.1:port 
port 改为 starter.py 中的端口

配置 nginx https(http_ssl)

# 查看是否已经开启了 http_ssl

/usr/local/nginx/sbin/nginx -V

 

# 安装 openssl 包
yum -y install pcre  pcre-devel zlib  zlib-devel openssl openssl-devel

【迁移项目】

上传项目压缩包至服务器目录

/var/www/UUUXXX

解压

unzip UUUXXX.zip

配置

 类似资料: