[Linux学习笔记] Linux Centos7 云服务器上的Flask项目部署

[Linux学习笔记] Linux Centos7 云服务器上的Flask项目部署_第1张图片

wenhaha的文章目录

    • 1.Shell ---> 壳程序 ---> 人机交互环境
      • 1.1 命令格式 ---> 命令 参数 目标对象
      • 1.2 Linux功能键/快捷键:
      • 1.3 Linux基础shell命令/常用shell命令:
    • 2. Linux系统安装软件/服务的方式:
      • 2.1 使用包管理工具:最方便最简单 ---> 软件管家
        • 2.1.1 YUM - Yellowdog Updater Modified
        • 2.1.2 RPM - Redhat Package Manager
        • 2.1.3 源代码构建安装:自己定制,麻烦
      • 实例1.Centos7 安装MySQL 5.7.34 (补包)
      • 实例2.Centos7 安装Python3.8 (补包)
      • 实例3.Centos7 安装Git (补包)
    • 3. Linux Vim ---> 文本编辑神器
      • 3.1工作模式
        • 3.1.1命令模式
        • 3.1.2 编辑模式
        • 3.1.3 末行模式(底线命令模式)
    • 4.Linux启动和停止服务命令
      • 4.1启动和停止Nginx服务:
      • 4.2启动和停止mysql服务:
    • 5.云服务器上的Flask项目部署过程:
      • 5.1. 克隆项目到云服务器
      • 5.2. 启动和初始化数据库
      • 5.3. 修改Nginx配置
      • 5.4. 启动Nginx
      • 5.5. 创建虚拟环境,安装依赖项
      • 5.6. 启动Gunicorn
      • 5.7. 修改Nginx配置并重启
      • 5.8. 域名绑定
      • 5.9. 配置HTTPS(了解)
    • 结语

1.Shell —> 壳程序 —> 人机交互环境

Bourne Shell —> bsh
Bourne Again Shell —> bash

1.1 命令格式 —> 命令 参数 目标对象

命令 --help—> 获得命令的帮助
man 命令 —> 查看命令的手册

1.2 Linux功能键/快捷键:

  • Tab - 命令或路径的自动补全
  • Ctrl+w - 删除光标前面的单词
  • Ctrl+u - 删除光标前所有的内容
  • Ctrl+k - 删除光标后所有的内容
  • Ctrl+a - 光标移到行首
  • Ctrl+e - 光标移到行尾
  • Ctrl+c - 终止进程

1.3 Linux基础shell命令/常用shell命令:

  • clear - 清除屏幕输出

  • history - 历史命令 —> !命令编号 —> 再次执行命令 -c:清除历史命令

  • who / w - 查询接入的用户

  • whoami - 查看当前用户的用户名

  • cal / date - 日历 / 日期时间

  • exit / logout - 退出登录

  • shutdown - 关机或重启

  • man - manual - 查看命令的帮助手册

  • whatis - 查看命令的描述信息

  • whereis / which - 查看命令对应的路径

  • pwd - print working directory - 打印工作目录

  • cd- change directory - 切换目录
    - 绝对路径
    - 相对路径
    - ls- list directory contents - 列出目录下的内容
    -l:长格式
    -a:所有文件

  • mkdir - make directory - 创建文件夹
    -p:自动创建父文件夹
    - cp / mv - copy / move - 复制/移动文件
    -r:递归式

  • rm - remove - 删除
    -r:递归式
    -f:强制
    -i:交互式

  • cat - concatenate - 连接多个文件(显示文件内容)
    -n:行号

  • gzip / gunzip - 压缩和解压缩

  • tar - 归档和解归档

  • wget - 网络下载器
    下载搜狐首页:wget https://www.sohu.com/

2. Linux系统安装软件/服务的方式:

2.1 使用包管理工具:最方便最简单 —> 软件管家

CentOS / Redhat:yum / rpm
Ubuntu:apt / apt-get

2.1.1 YUM - Yellowdog Updater Modified
搜索:yum search nginx
安装:yum install -y nginx
更新:yum update -y nginx
卸载:yum erase -y nginx/ yum remove -y nginx
查看信息:yum info nginx
查看所有安装过的包:yum list installed
2.1.2 RPM - Redhat Package Manager
安装:rpm -ivh 软件包文件
卸载:rpm -e 软件包名字
查看:rpm -qa | grep mysql
2.1.3 源代码构建安装:自己定制,麻烦

参见实例2和3

实例1.Centos7 安装MySQL 5.7.34 (补包)

  1. 下载安装文件
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.34-1.el7.x86_64.rpm-bundle.tar
  1. 解归档到指定文件夹
mkdir mysql
tar -xf mysql-5.7.34-1.el7.x86_64.rpm-bundle.tar -C mysql
cd mysql
  1. 卸载MariaDB的库文件
yum erase -y mariadb-libs
  1. 补充底层依赖项
yum install -y libaio libaio-devel
  1. 使用RPM安装(严格按顺序)
rpm -ivh mysql-community-common-5.7.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.34-1.el7.x86_64.rpm
  1. 启动MySQL
systemctl start mysqld
  1. 查看初始密码
cat /var/log/mysqld.log | grep password
  1. 用客户端工具连接并修改密码(如果要按照我的项目进行部署,请将用户和密码和我设置一致)
mysql -u root -p
mysql> alter user 'root'@'localhost' identified by 'Guest.618'; 

如果使用CentOS 8.x,需要调整以下两个步骤:
yum install -y perl
不需要安装mysql-community-libs-compat-xxx包

实例2.Centos7 安装Python3.8 (补包)

  1. 从官方网站下载Python源代码
wget https://www.python.org/ftp/python/3.8.10/Python-3.8.10.tgz
  1. 解压缩和解归档(把一个文件拆成多个文件)
gunzip Python-3.8.10.tgz / xz -d Python-3.8.10.tar.xz
tar -xf Python-3.8.10.tar
  1. 补充安装Python解释器需要的底层依赖项
yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libdb4-devel libpcap-devel xz-devel libffi-devel libxml2
  1. 检查有没有构建工具
gcc --version
make --version
如果没有就安装:`yum install -y gcc`
如果有执行更新:`yum update -y gcc`
  1. 安装前的配置 —> Makefile
cd Python-3.8.10
./configure --prefix=/usr/local/python38
  1. 构建和安装—> 不能断开连接
make && make install
  1. 配置环境变量
cd ~
vim .bash_profile
PATH=...:/usr/local/python3/bin
Esc ---> :wq(进入末行模式,保存退出)
  1. 退出重新登录,然后查看版本
python3 --version
pip3 --version
  1. 创建一个符号链接(相当于Windows的快捷方式)(非必需)
ln -s /usr/local/python38/bin/python3 /usr/bin/python3

实例3.Centos7 安装Git (补包)

  1. 下载Git源代码
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.32.0.tar.xz
  1. 解压缩和解归档
xz -d git-2.32.0.tar.xz
tar -xvf git-2.32.0.tar
  1. 补充依赖项
yum install -y curl libcurl libcurl-devel
  1. 安装前的配置
cd git-2.32.0
./configure --prefix=/usr/local/
  1. 构建和安装
make && make install
  1. 检查安装是否成功
git --version

3. Linux Vim —> 文本编辑神器

3.1工作模式

3.1.1命令模式
- **进入编辑模式:i / o / a**
- **进入末行模式:: (冒号)**
- 移动光标:h j k l / G gg / w / 0 $
- 翻页:Ctrl+f / Ctrl+b
- 翻行:Ctrl+e / Ctrl+y
- 删除:dd / d0 / d$ / dw
- 复制/黏贴:yy / p 
- 撤销/恢复:u / Ctrl+r
- 保存退出:ZZ
3.1.2 编辑模式
- 回到命令模式:Esc
3.1.3 末行模式(底线命令模式)
- 替换:1,$s/新闻/news/cgi 			c - confirm 			g - global 			i - ignore case
- 退出:q / qa / q!
- 保存:w / w! / w hello.py
- 保存退出:wq
- 显示行号/隐藏行号:set nu / set nonu
- 语法高亮:syntax on / syntax off
- 自动缩进:set autoindent
- 设置制表键(Tab)的空格数:set ts=4
- 将制表键转成空格:set expandtab

4.Linux启动和停止服务命令

4.1启动和停止Nginx服务:

启动:systemctl start nginx
停止:systemctl stop nginx
重启:systemctl restart nginx
查看状态:systemctl status nginx
开机启动:systemctl enable nginx
禁用自启:systemctl disable nginx

4.2启动和停止mysql服务:

启动:systemctl start mysqld
停止:systemctl stop mysqld
重启:systemctl restart mysqld

5.云服务器上的Flask项目部署过程:

服务器是我在阿里云上买的,注意是Centos7.

5.1. 克隆项目到云服务器

git clone https://gitee.com/wenhaha8/data_viz_2103.git

5.2. 启动和初始化数据库

systemctl start mysqld
mysql -u root -p < /root/data_viz_2103/order.sql
mysql -u root -p < /root/data_viz_2103/stock.sql
mysql -u root -p
mysql> create user 'guest'@'localhost' identified by 'Guest.618';
mysql> grant select on stock.* to 'guest'@'localhost';
mysql> grant select on data_viz.* to 'guest'@'localhost';

5.3. 修改Nginx配置

user root;

http {
    server {

        root /root/data_viz_2103/static;

    }
}

5.4. 启动Nginx

systemctl start nginx
systemctl restart nginx

5.5. 创建虚拟环境,安装依赖项

  • 安装virtualenv工具:pip3 install virtualenv
  • 使用virtualenv创建虚拟环境:virtualenv --python=/usr/bin/python3 venv
  • 激活虚拟环境:source venv/bin/activate
  • 安装依赖项:pip install -r requirements.txt

5.6. 启动Gunicorn

  • 如果需要修改数据库连接信息,可以先执行export命令配置环境变量
export DB_USER=guest
export DB_PASS=Guest.618

gunicorn -w 4 -b 127.0.0.1 main:app

5.7. 修改Nginx配置并重启

vim /etc/nginx/nginx.conf
http {

    server {
        
        location /api/ {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

改了配置文件,别忘了重启服务!!QAQ!!

systemctl restart nginx

5.8. 域名绑定

  • 购买域名:https://wanwang.aliyun.com/
  • 通过备案系统进行备案
  • 域名解析:A —> @ —> 云服务器公网IP地址
  • 云服务器 —> Web服务器(网站服务器)—> Apache / Nginx
    —> 浏览器 —> http://47.108.204.85
    —> 购买域名 —> jackfrued.top
    —> DNS解析 —> http://jackfrued.top

5.9. 配置HTTPS(了解)

  • 购买安全证书

  • 修改Nginx的配置文件 —> vim /etc/nginx/nginx.conf

      http {
          server {
              listen       443 ssl;
              listen       [::]:443 ssl;
              server_name  _;
              ssl_certificate /root/cert/python-jack.pem;
              ssl_certificate_key /root/cert/python-jack.key;
              ssl_session_timeout 5m;
              ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
              ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
              ssl_prefer_server_ciphers on;
    
          root         /root/data_viz_2103/static;
    
          # Load configuration files for the default server block.
          include /etc/nginx/default.d/*.conf;
    
          location /api/ {
                  proxy_pass http://127.0.0.1:8000;
                  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 = /404.html {
          }
    
          error_page 500 502 503 504 /50x.html;
          location = /50x.html {
          }
      }
      }
    
  • 最后别忘了:重启Nginx服务器:systemctl restart nginx

结语

如果大家有任何问题或者想和我交流,请评论或者私信我噢 !

求个赞!我只会心疼giegie!

你可能感兴趣的:(Linux学习笔记,linux,云服务器)