zoukankan      html  css  js  c++  java
  • linux下安装python3.7和安装MySQL和服务器部署项目

    Linux入门

    Linux服务器搭建工作需要掌握的核心点

    1. 虚拟机使用

    2. Linunx安装(注意事项)

    3. 服务器搭建[重点]

      1. 网络配置[真实阿里云服务器已经联网了]

      2. SSH连接远程服务器(putty)

      3. FTP文件传输(winscp)

      4. 升级Python(Linux系统默认自带2.7)

      5. 虚拟环境管理(virtualenv)

      6. django

      7. web服务器:(nginx + uwsgi )做django项目发布

      8. 数据库MySQL

      9. DNS解析实现

      10. nginx多项目配置

     

     

    1. 虚拟机认识

    重要功能:

    • 快照功能(保存系统当前状态,后期便于随时还原!)

    • 克隆(完全复制一份!)

    • 删除虚拟机

    2. 安装系统

    虚拟机安装[重要]:https://blog.csdn.net/qq_39038465/article/details/81478847

    安装步骤: https://blog.csdn.net/babyxue/article/details/80970526

    • 必须为虚拟机打开网络

    • 硬盘分区

      • boot: 系统引导分区(存储是启动相关的核心文件一般200M,或500M)

      • swap:内存交换分区(充当内存使用: 内存的2倍)

      • /跟分区: 其余所有空间

    • 记住自己的IP

    • 记住自己的root密码

    查看服务器IP地址

    # ifconfig   # 192.168.131.132

     

    注意:centos mini版默认默认ifconfig不能用

    #安装网络工具
    yum install net-tools

     

    3. 连接

    SSH:是客户端和Linux服务器数据传输的加密协议! 特点: 安全,数据压缩,传输速度快!

    CentOS 副武器端默认安装了SSH

    windows电脑需要安装SSH客户端就可和服务器进行SSH加密通信

    常用的SSH客户端 Putty

    核心配置(配置IP+端口, 窗口显示行列数, 配置字体大小,设置支持中文 )

     

    4. 使用FTP协议传文件

    常用的FTP协议软件,WinScp

     

    在跟目录上传一个文件!!!!....

     

    5. 虚拟机联网

    这里简单介绍下三种连网方式的不同:

    桥接模式:物理机和虚拟机处于并列状态。在同一网段,物理机网络环境发生变化,虚拟机会受影响。

    NAT模式:虚拟机和物理机之间相互独立,不受影响

    仅主机模式:虚拟机和物理机直接通讯

     

    • 桥连接(每个虚拟系统,都相当于一个真实电脑! 内网自动分1个IP)

    • NAT方式:

      • 192.168.43.2-254 该网段可分给1-253 台电脑!

      • 192.168.1-254. 1-254 : 可组建很庞大的内网系统!

    • 自连接: 只能主机和虚拟机通信!

    • 建议使用桥接!

     

     

     

    最快联网设置

      1. 多台虚拟机都设置为 桥接,桥接虚拟机启动时能自动分配内网的IP地址!

     

      1. 打开虚拟机的联网功能

        可在安装虚拟机时打开联网按钮!

         

      如果安装时忘记打开联网功能, 安装完登陆系统改配置文件! 改配置文件打开联网!

      配置ip地址等信息在/etc/sysconfig/network-scripts/ifcfg-ens33文件里做如下配置:

      # 编辑网络配置文件  vi是编辑文件的命令!
      vi   /etc/sysconfig/network-scripts/ifcfg-ens33

      # 修改内容如下:
      BOOTPROTO="static"  # 手动分配固定ip   [改] 原来是的动态分配: dhcp
      ONBOOT="yes"  # 该网卡是否随网络服务启动 [改]
      IPADDR="192.168.8.134"  # 该网卡ip地址就是你要配置的固定IP[加]
      GATEWAY="192.168.8.1"   # 网关 [加]
      NETMASK="255.255.255.0"   # 子网掩码 [加]
      DNS1="192.168.8.1"        # DNS地址 [加]

      # IP地址,网关,.子网掩码,DNS: 可以参考主机设置   ipconfig -all

      # 该完重启网路
      service network restart

      DNS和网关信息可在window电脑: cmd---->ipconfig -all 中查看!

      vi 编辑器使用:

      1. vi 文件名

      2. 进入编辑模式(i)

      3.改

      4: Esc退出, :wq 保存 :q!不保存直接退出

     

    检测网络是否能连接成功:

    主机和虚拟机之间相互ping

    ping 地址

    6 . Linux目录结构[重要]

     

     

    • 软件安装目录: /usr/local

    • 系统配置: /etc

    • 还可操作(home, root,opt较少)

     

     

    7 . 下载软件

    1. 从yum软件仓库中下载

    yum软件源,默认是国外服务器,下载慢!建议替换为国内的,比如:清华镜像

    https://mirrors.tuna.tsinghua.edu.cn/help/centos/

    2. wget 网址下载

    wget https://www.python.org/ftp/python/

    注意: 默认mini 版,wget不可用!需要重新安装

    3. 直接FTP传到服务器!

    最快

    小结

     

    熟悉虚拟机操作(快照,克隆,打开,删除)

    1. 安装系统(网络,系统分区)

    2. 联网(桥接)

    3. SSH远程连接

    4. FTP协议

    5. Linux目录结构

    6. 下载软件

    软件安装

    问题: 虚拟机经常连不上!

    问题描述,在班级内虚拟机连接正常, 回到宿舍后发现连不上!!!

    原因: 局域网变了,IP地址也自动的发生了变化! 因为桥连接,会自动的从局域网中分一个IP地址!

    步骤1: 确保联网方式是:桥连接

     

    步骤2:从虚拟机登陆查看ip

    #查看IP
    ipconfig

    步骤3: 改网络配置文件

    # 编辑配置
    vi  /etc/sysconfig/network-scripts/ifcfg-ens33
    # i 进入编辑模式

    #改
    BOOTPROTO="dhcp" # IP地址改为动态分配
    注释掉手动设置的IP(网络服务器重启后会自动分配)
    # IPADDR="192.168.220.101" # 该网卡ip地址就是你要配置的固定IP
    # GATEWAY="192.168.220.2"   # 网关
    # NETMASK="255.255.255.0"   # 子网掩码
    # DNS1="8.8.8.8"   # DNS,8.8.8.8为Google提供的免费DNS服务器的IP地

    #退出编辑 ESC   :wq 退出并退出
    # 重启网络服务器
    service network restart

    最后: SSH改IP重新连接

    安装Python

    centos 默认安装python2.7 ,先了解虚拟机中Python的相关信息

    # 查看是否有
    python  -V
    # 查看Python这个命令,详细的解析方式
    which python
    cd /usr/bin
    ls -al python*  #就可看到 python-->python2--->python2.7

     

     

    接下来从网上找详细的流程,一定要先确认: 是哪种安装方式?

    • 第一种: 改python指令的的软件的连接指向 3.6 [

    • 第二种: 添加python3指令,软件连接指向 3.6

    选第一种,详细步骤如下

    # 1 下载包管理器:gcc
    yum -y groupinstall "Development tools"   su切换到root根目录
    # 2 下载相关依赖
    yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
    # 3. 上传pyton3.6.6.tgz 到安装目录 /usr/local
    上传...,也可通过wget手动下载到/usr/local
    # 4. 解压 在安装目录加压
    cd /usr/local
    tar -zxvf Python-3.6.6.tgz  #多了Python3.6.6 文件夹
    tar Jxvf Python-3.7.0.tgz.xz
    # 5.进入 Python3.6.6,
    cd Python-3.6.6
    # 其实就是将Python编译安装至指定目录,这里指定为/usr/lib/python
    # 编译安装,指定安装路径 ./configure --prefix=安装目录
    ./configure --prefix=/usr/local/python3  #[管理工具和依赖包必须已经安装好]
    # 7. 安装

    make
    # 安装
    make install
    # 把python3/lib 保存到配置文件中,保存在 /etc/ld.so.conf.d中,并执行ldconfig
    echo "/usr/local/python3/lib" >> /etc/ld.so.conf
    ldconfig
    # 8 .建连接
    ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
    # 测试
    python3 -V  #执行3.6.6 表示成功


    #检查软连接情况
    cd /usr/bin  
    ls -l python*    # l表示显示完整路径

    pip

    # pip建软连接
    ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
    #测试pip 版本
    pip3 -V
    pip3 list  # 提示版本太低 [注意:pip list 可能报错!]

    pip3 版本9.0时pip3 list可能报错,解决

     

     

     

    #解决方案:新建
    vi /etc/pip.conf`
    #添加内容
    [list]
    format=columns
    保存退出

    pip 版本更新

    pip install --upgrade pip   pip3 install --upgrade pip

     

    安装虚拟环境

    安装

     

    建议安装虚拟环境.便于管理不同项目!

    # 安装 virtualenv 
    pip3 install virtualenv
    #建立软链接
    ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

    建目录

     

    安装成功在根目录下建立两个文件夹,主要用于存放env和网站文件的。(名字按照自己习惯来)

    # 创建报错虚拟环境目录  名字是任意的   -p参数:如果没有目录就自动新建!递归创建 
    mkdir  -p /data/env  
    # 个人网站发布文件夹 .名字都是任意的!
    mkdir  -p /data/wwwroot

    建虚拟环境

    创建指定版本的虚拟环境

    # 进入env目录
    cd  /data/env
    # 创建虚拟环境
    virtualenv --python=/usr/bin/python3   py3_django2
    # 启动
    cd  /data/env/py3_django2/bin
    # 激活虚拟环境
    source  activate  # 退出: deactivate
    # 安装django等.
    pip install django==2.1.3
    #查询django版本
    pip3 list
    # 安装uwsgi(web项目发布相关软件)
    pip3 install uwsgi
    # 给uwsgi建立软链接,方便使用
    ln -s /data/env/py3_django2/bin/uwsgi /usr/bin/uwsgi


    # 退出虚拟环境
    cd  /data/env/py3_django2/bin
    deactivate

    激活后虚拟环境.左边显示环境名:

     

    上传项目

    本地项目上传到wwwroot目录

    • 在项目根目录生成项目需要的依赖包文档描述!

    pip freeze requirements.txt 

     

     

    • setting文件常用设置:

      # 允许所有IP访问,一定要加!
      ALLOWED_HOSTS = ['*']
    • 上传项目到wwwroot下,启动测试是否正常运行!

      # 使用winscp上传到  /data/wwwroot下
      cd  /data/env/py3_django2/bin #进入虚拟环境目录
      source  activate   # 激活虚拟环境
      cd /data/wwwroot/mysite  #进入我的项目目录
      # 下载当前项目需要的依赖包
      pip install -r requirements.txt
      # 测试项目是否正常启动
      python manage.py runserver

    配置uwsgi

    配置 uwsgi

    在mysite的项目跟目录,新建mysite.xml配置文件,上传到/data/wwwroot/mysite下,内容如下

     

    <uwsgi>    
      <socket>127.0.0.1:8000</socket> <!-- 内部端口,自定义 -->
      <chdir>/data/wwwroot/mysite/</chdir> <!-- 项目路径 -->            
      <module>mysite.wsgi</module>  <!-- wsgi.py所在目录名-->
      <processes>4</processes> <!-- 进程数 -->    
      <daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
    </uwsgi>

    保存 注意<module>里的mysite,为wsgi.py所在的目录名。

    nginx相关

    下载nginx安装和配置

    # 下载
    cd /usr/local
    wget http://nginx.org/download/nginx-1.13.7.tar.gz
    # 解压
    tar -zxvf nginx-1.13.7.tar.gz
    # 进入目录
    cd  nginx-1.13.7
    # 依次执行以下命令:
    ./configure --prefix=/usr/local/nginx
    make
    make install > my_nginx.log
    # nginx一般默认安装好的路径为/usr/local/nginx在/usr/local/nginx/conf/中先备份一下nginx.conf文件,以防意外。
    cd /usr/local/nginx/conf/
    cp nginx.conf nginx.conf.bak
    # 然后打开nginx.conf,把原来的内容删除,直接加入以下内容:
    events {
       worker_connections  1024;
    }
    http {
       include       mime.types;
       default_type  application/octet-stream;
       sendfile        on;
       server {
           listen 80;
           server_name  自己域名; #改为自己的域名,没域名修改为127.0.0.1:80
           charset utf-8;
           location / {
              include uwsgi_params;
              uwsgi_pass 127.0.0.1:8000;  #端口要和uwsgi里配置的一样
              uwsgi_param UWSGI_SCRIPT mysite.wsgi;  #wsgi.py所在的目录名+.wsgi
              uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite/; #项目路径
             
          }
           location /static/ {
           alias /data/wwwroot/mysite/static/; #静态资源路径
          }
      }
    }
    # 启动,执行./nginx -t命令先检查配置文件是否有错,没有错就执行以下命令:
    cd  /usr/local/nginx/sbin/
    ./nginx
    # 终端没有任何提示就证明nginx启动成功
    # 测试
    curl 127.0.0.1:80  #就可以看到网站!

    启动项目

    启动django项目[最终]

    # 进入djnago项目
    cd /data/wwwroot/mysite/
    # uwsgi 解析项目中的配置文件
    uwsgi -x mysite.xml
    #以上步骤都没有出错的话。
    cd /usr/local/nginx/sbin/
    # 重启nginx
    ./nginx -s reload
    # 服务器内部测试是否发布成功
    curl 127.0.0.1:80  #就可以看到网站!
    # 关闭防火墙,否则远程不能访问!
    systemctl stop firewalld.service

    查看防火墙状态firewall-cmd --state
    停止firewall
    systemctl stop firewalld.service
    禁止firewall
    开机启动
    systemctl disable firewalld.service
    通过service iptables status 命令查看是否防火墙是否开启
    关闭防火墙 service iptables stop,正常访问

    uwsgi源码下载
    https://blog.csdn.net/cckavin/article/details/85071547
    ##部署项目的另一措施
    239   cd /usr/bin/
     240    224  ls -a uwsgi*
     241    225  rm -rf uwsgi
     242    226  ls -a uwsgi*
     243    227  pip list
     244    228  pip install uwsgi
     245    229  ln -s /data/env/py3_django2/bin/uwsgi /usr/bin/uwsgi
     246    230  cd /usr/bin/
     247    231  ls -a uwsgi*
     248    232  cd /data/wwwroot/untitled100/
     249    233  uwsgi -x untitled100.xml
     250    234  cd /usr/local/nginx/sbin/
     251    235 ./nginx -s reload
     252    236 ./nginx
     253    237  curl 127.0.0.1:80
     254    238  historynginx

    本地测试

    http://192.168.8.135 就可以看到图书首页!

     

    查看软件端口

    通过监控端口命令,查看程序是否启动.

    #查看进程端口号及运行的程序
    netstat -atunp
    #由端口号port(8000)查看进程id
    netstat -anp |grep 8000
    #停止
    #杀死指定进程根据pid(进程id) uwsgi
    kill pid
    #强制杀死指定进程根据pid(进程id) nginx
    kill -9 pid

     

     

    多域名配置

    https://www.django.cn/article/show-4.html#duo

     

    常见问题

    1. 安装python3.6后yum命令无法使用

    这是因为yum采用python作为命令解释器,原来系统自带的python解释器为python2.7,然后我之前为了方便将python默认的解释器设为了python3.6,导致按python3.6解析2.7的语法出错了。

     

     

    解决方法:

    修改/usr/bin/yum文件中的第一行为#!/usr/bin/python2.7

     

     

    服务器环境测试

    检测当前服务器的环境,查看已经安装了哪些软件

     

    # 主机网址
    ipconfig -all
    # 虚拟机联网方式: 桥接
    # 查看虚拟机IP
    ifconfig      # IP前3都一样,网络肯定正常!
    # 不正常时:看网络配置文件是否是动态分配IP: dhcp
    cat /etc/sysconfig/network-scripts/ifcfg-ens33
    # python是否安装
    python -V
    # 查看python命令如何解析
    which python    #找到命令位置 /usr/bin
    cd /usr/bin      
    ls -al  python*   # 重点:3.6的实际安装路径

    # 查pip命令如何解析
    which  pip
    cd /usr/bin
    ls -al  pip*
    # 查Python安了哪些包
    pip list  #检查是否安装了 virtualenv  
    # 查虚拟环境能用?
    virtualenv  --version

    # 虚拟目录和项目发布目录? 我的习惯(/data/env+wwwroot)
    cd /data  
    #进入虚拟环境,检测软件
    pip list
    # 检测uwsgi是否可用
    uwsgi
    which  uwsgi
    cd /usr/bin
    ls -al uwsgi*

    # nginx是否安装?

     

    MySQL安装

    详细步骤

    https://www.django.cn/article/show-2.html

    centos7 的yum源仓库包默认不支持mysql, 需要手动添加mysql官方yum仓库

    yum指令不能使用

    yum解析是默认依赖python2.7

    语法错误

     

    #编辑源码
    vi /usr/bin/yum
    #第一行明确指定python版本未python2
    改为  !/usr/bin/python2

     

    改密码

    修改密码规则
    set global validate_password.policy=0;
    set global validate_password.length=1;

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123';

     

    修改允许root远程访问

    use mysql  # 切换库
    select host, user from user;  #查
    update user set host = '%' where user = 'root'; #改
    flush privileges;  #刷新
    sudo service mysqld restart #重启mysql
    systemctl stop firewalld.service #关防火墙

     

     

    详细参考Django中文网

    https://www.django.cn/article/show-2.html

    错误

    yum 指令运行时有可能会提示语法错误!

    如果有语法错误,把yum文件头编译的环境指定为python2

     

    启动和停止服务

    # 查看启动状态
    sudo service mysqld status

    #启动(默认随着系统自动启动了)
    sudo service mysqld start

    #停止
    sudo service mysqld stop

     

     

    生产环境介绍

    工作中项目发布真实服务器环境

    • 域名(万网/阿里云购买)

    • 云服务器(阿里云/华为云/百度云)

    • 域名解析到服务器(DNS解析)

     

    买域名

    一级域名: www.zhouzhengyang.cn

    不带www叫子域名可以包含N个: m.zhouzhengyang.cn

    django.zhouzhengyang.cn

    阿里购买地址:

    https://developer.huaweicloud.com/campus

    https://wanwang.aliyun.com/?utm_content=se_1000301943

    买服务器

    阿里云

    https://www.aliyun.com/?utm_content=se_1000301881

     

    DNS解析

    域名解析到服务器叫:DNS解析

    登陆域名管理平台!

     

     

    阿里云解析过程

    实现: 输入 www.zhouzhengyang.cn 自动打开我的网站

    前提:

    • 购买www.zhouzhengyang.cn域名

    • 购买:阿里云服务器: 39.98.39.173

    • 进入阿里云后台进行DNS解析!

    • 解析之前: 需要完成备案!

     

    DNS解析

     

    配置完后:需要配置安全组或叫防火墙

    防火墙打开对应的端口,允许对应端口访问服务器

     

     

    服务器搭建:

    python3 + uwsgi + nginx +django2+ mysql5.7或以上

     

    www.zhouzhengyang.cn :80

    ====>nginx 监听80端口 =====> uwsgi: 每个web项目一个端口8000

     

    • 查看nginx 和 uwsgin 或其他软件,的运行状态?

    #查看进程端口号及运行的程序
    netstat -atunp
    #由端口号port(8000)查看进程id
    netstat -anp |grep 8000
    #停止
    #杀死指定进程根据pid(进程id) uwsgi
    kill pid
    #强制杀死指定进程根据pid(进程id) nginx
    kill -9 pid

     

    常用指令

    • 解压tar.xz使用 xz -d 命令解压出tar包

    xz -d Python-3.6.6.tar.xz
    • tar包解压

    tar -xvf Python-3.6.6.tar 
    • 查找

      find / -name *libsqlite3.so*

    • 检测服务列

    chkconfig --list
    service  服务名 start/stop/restart
    • 查看nginx 服务是否自动启动

    netstat -apn|grep nginx
    

     

     

    常用问题

    找不到sqlite3模块

    https://blog.csdn.net/sparkexpert/article/details/79118448 [详细说明]

    对python3进行重新编译

    # sudo yum install sqlite-devel
    #cd /usr/local/Python-3.6.6

    #LD_RUN_PATH=/usr/local/sqlite3/lib ./configure LDFLAGS="-L/usr/local/sqlite3/lib" CPPFLAGS="-I /usr/local/sqlite3/include"

    #LD_RUN_PATH=/usr/local/sqlite3/lib make

    #LD_RUN_PATH=/usr/local/sqlite3/lib sudo make install

     

    常用指令

    • 解压tar.xz使用 xz -d 命令解压出tar包

    xz -d Python-3.6.6.tar.xz
    • tar包解压

    tar -xvf Python-3.6.6.tar 
    
    • 查找

      find / -name *libsqlite3.so*

    • 检测服务列

    chkconfig --list
    service  服务名 start/stop/restart
    • 查看nginx 服务是否自动启动

    netstat -apn|grep nginx
    
    • 查看当前启动端口

    netstat -atunt

     

  • 相关阅读:
    Sqli Labs Less-21-31
    sqli labs Less-11-20
    基础知识补充及sqli-labs Less 5-10
    sqli-labs Less 2-4
    Sql简单的搜索语句及sqli-labs的less-1
    Sqli labs相关环境的下载与安装
    行内元素没有宽高,块级元素有宽高
    Webview上传文件的那些坑
    [Android开发] 代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常(常见于listview中)
    AndroidSupportDesign之TabLayout使用详解
  • 原文地址:https://www.cnblogs.com/cwx-0324/p/10879924.html
Copyright © 2011-2022 走看看