• linux学习-DAY2-经典互联网架构


    一、Linux软件包安装

    1.安装程序的方式

    • 软件包管理器:如RPM。
    • 软件包管理器的前端工具:如YUM。
    • 源码包应用。
    • 通用二进制格式:直接解压压缩文件,就可以使用。但一定要注意安装平台。

    2.RPM

    RPM早期被称为RedHat Package Manager,但由于目前RPM非常流行,且已经成为Linux工业标准。所以RPM现在又被称为RPM is Package Manager。

    RPM管理支持事务机制。增强了程序安装卸载的管理。

    RPM的功能:打包、安装、查询、升级、卸载、校验、数据库管理。

    但是RPM无法解决软件包的依赖关系。因为Linux中的程序大多是小程序,而程序与程序之间存在非常复杂的依赖关系。

    光盘挂载

    # 只要挂载好光盘,安装软件会显的特别方便 
    # 1.把/dev/cdrom挂载到/mnt
    mount /dev/cdrom /mnt
    
    # 进入/mnt查看,你会发现有一个Packages的目录,里面有所有下载安装的包
    cd  /mnt
    ls
    

    使用

    # 安装rpm包
    rpm -ivh 包名
    # 更新rpm包
    rpm -Uvh 包名
    # 卸载rpm
    rpm -e 包名
    
    # rpm包的查询
    rpm -q 包名
    # 查询过滤
    rpm -qa |grep vsf
    # 查询文件所在路径
    which vim
    # 查询某文件是由哪个rpm包安装生成的
    rpm -qf /usr/bin/vim
    

    3.yum

    YUM是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。

    YUM使用Python语言写成。YUM客户端基于RPM包进行管理,可以通过HTTP服务器下载、FTP服务器下载、本地软件池的等方式获得软件包,可以从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系。

    YUM在安装RPM时,会从服务器下载相应包,且缓存在本地。

    使用YUM进行RPM包的管理,非常简单方便。

    更改yum站点源

    # 使用aliyun yum站点源
    # BASE源:一些基本的软件包
    # 1.进入yum的源
    cd /etc/yum.repos.d/
    
    # 2.该文件夹里有安装系统是自动从官方下载的源,可以不要,我们把它挪走
    mv *.repo /tmp
    
    # 3.获取阿里的源
    wget http://mirrors.aliyun.com/repo/Centos-7.repo
    
    # EPEL源:扩展的软件包
    yum install -y epel-release
    

    操作

    # yum安装软件
    # -y:下载软件后会遇到选项:是否安装,有了-y会默认安装
    # openssl openssl-devel :这两个一定要先安装
    yum install -y openssl openssl-devel 
    
    # 软件包查询
    yum list |grep vsftpd
    
    # 软件包组查询
    yum grouplist
    
    # 软件包组安装
    yum groupinstall "Development Tools"
    
    # 卸载软件包
    yum remove 
    

    优化yum源

    # 本地镜像yum源(光盘挂载到/mnt下)
    # 挂在以后,下载yum源会从本地光盘找
    # 1.进入yum的源,必须把/etc/yum.repos.d/里的.repo结尾的文件挪走,linux先看到哪个配置,就用哪个配置文件
    cd /etc/yum.repos.d/
    
    # 2.创建一个yum的配置文件必须是.repo结尾
    vim local.repo
    
    # 3.在编辑模式中
    [local]
    name=localios
    baseurl=file:///mnt # 挂载到本地文件/mnt
    gpgcheck=0
    
    # 4.清空yum的缓存
    yum clean all
    
    
    # 局域网yum源(ftp)
    # 本地镜像yum源必须随身携带关盘,比较麻烦,所以搭建局域网yum源,可以通过局域网下载软件
    # 1.安装ftp软件
    yum install -y vsftpd
    # 2.启动ftp服务,并设置开机自启动
    systemctl start vsftpd
    systemctl enable  vsftpd
    
    # 3.创建站点目录,并将光盘软件拷贝其中
    # 现在就可以通过ftp://IP地址/pub/centos7/访问
    cp -a /mnt/*  /var/ftp/pub/centos7
    
    # 4.如果你的电脑想要通过局域网下载软件,就需要配置repo文件
    # 具体步骤和本地镜像yum源差不多
    # 唯一不同的是配置
    [ftp]
    name=centos7
    baseurl=ftp://10.0.0.100/pub/centos7
    gpgcheck=0
    

    4.源码包应用(python3.6、redis)

    解压

    # .zip
    unzip  xxx.zip
    # .tar .tar.gz .tgz.tar.bz2 .tar.xz
    tar xf  xxx.tar
    # .iso 挂载
    mount -o loop xxx.iso  /test
    # .cpio
    cpio -idcmv < xxx.cpio
    

    安装

    # 把压缩文件放到/opt里
    cd /opt
    
    # mysql 源码包
    # 1
    cmake
    # 2.编译
    make
    make install
    # 或 make && make install
    
    
    # python3.6源码包安装
    # 解压后进入文件
    # 1.定制功能
    ./configure  
    # 2.编译
    make
    make install
    # 或 make && make install
         
        
    # redis 源码包安装 
    # 解压后进入文件
    # 1.编译
    make
    
    # 2.修改环境变量
    vim /etc/profile
    
    # 添加以下一行:
    export PATH=/opt/redis-3.2.10/src:$PATH
    
    # 3.生效配置
    source /etc/profile
    

    python链接redis

    # 解压后进入文件
    cd redis-py-master
    # 用python3运行
    python3 setup.py install
    
    
    # 测试
    #运行python3
    [root@xcq redis-py-master]# python3
    >>> import redis
    >>> r = redis.StrictRedis(host='localhost', port=6379)
    >>> r.set('name', 'oldguo')
    True
    >>> r.get('name')
    b'oldguo'
    

    5.二进制包(mysql5.7.20)

    安装及配置mysql

    # 1.解压及制作软连接
    tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
    ln -s mysql-5.7.20-linux-glibc2.12-x86_64 mysql
    
    # 2.编辑环境变量
    vim  /etc/profile
    # 添加以下一行:
    export PATH=/opt/mysql/bin:$PATH
    
    # 3.生效配置:
    source /etc/profile
    
    # 4.卸载自带mariadb
    yum remove mariadb-libs
    
    # 5.生成配置文件(/etc/my.cnf)
    vim /etc/my.cnf
    # 内容
    [mysqld]
    basedir=/opt/mysql
    datadir=/opt/mysql/data
    socket=/tmp/mysql.sock
    user=mysql
    log_error=/var/log/mysql.log
    log_bin=/opt/mysql/data/mysql-bin
    server_id=100
    [mysql]
    socket=/tmp/mysql.sock
    
    
    # 6.创建用户和数据目录,并授权
    # 对mysql操作时,默认要有一个mysql用户
    useradd mysql 
    mkdir  /opt/mysql/data 
    chown -R mysql.mysql /opt/mysql
    
    # 7.初始化数据
    touch /var/log/mysql.log 
    
    chown -R mysql.mysql /var/log/mysql.log
    
    mysqld --initialize-insecure --basedir=/opt/mysql --datadir=/opt/mysql/data --user=mysql
    
    
    

    启动mysql

    # 1.进入目录
    cd /opt/mysql/support-files
    # 2.执行脚本
    ./mysql.server start
    
    
    # 为了启动方便,把mysql.serve,移动到/etc/init.d/mysqld
    # 这样就不用每次要进入目录在启动
    cp mysql.server /etc/init.d/mysqld
    
    # 以后用这条命令启动mysql
    /etc/init.d/mysqld start
    
    
    
    # 扩展:使用systemctl 管理mysql
    vim /etc/systemd/system/mysqld.service
    
    # 配置
    [Unit]
    Description=MySQL Server
    Documentation=man:mysqld(8)
    Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
    After=network.target
    After=syslog.target
    
    [Install]
    WantedBy=multi-user.target
    [Service]
    User=mysql
    Group=mysql
    ExecStart=/opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf
    LimitNOFILE = 5000
    
    # 配置好之后,以后就用systemctl来启动mysql
    systemctl start mysqld
    

    python3链接mysql

    # 创建mysql链接用户
    [root@xcq redis-py-master]# mysql
    
    mysql> grant all on *.* to root@'10.0.0.%' identified by '123';
    Query OK, 0 rows affected, 1 warning (0.13 sec)
    mysql> create database bbs charset utf8;
    
    
    # python代码测试
    
    pip3 install pymysql
    
    vim testmysql.py
    
    import pymysql
    db = pymysql.connect("10.0.0.100","root","123","bbs" )
    cursor.execute("SELECT VERSION()")
    data = cursor.fetchone()
    print ("Database version : %s " % data)
    db.close()
    
    python3  testmysql.py 
    

    二、经典互联网架构项目(LNMP)

    LNMP = Linux Nginx MySQL PHP

    1.Nginx 安装

    # 1.新建官方Nginx yum源的repo配置文件
    vim /etc/yum.repos.d/nginx.repo 
    
    # 配置官方Nginx yum源
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1
    
    # 2.下载安装
    yum install nginx -y
    
    # 3.启动Nginx,并将Nginx加入开机自启
    
    systemctl start nginx
    systemctl enable nginx
    
    # 之后就可以通过http://10.0.0.100(IP地址)访问页面了
    

    2.Django安装

    # 1.安装依赖包
    yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++  openssl-devel zlib zlib-devel -y
    
    # 2.安装Django和uwsgi,以及一堆模块
    vim  re.txt
    asn1crypto==0.24.0
    beautifulsoup4==4.6.3
    bs4==0.0.1
    certifi==2018.4.16
    cffi==1.11.5
    chardet==3.0.4
    Click==7.0
    cryptography==2.3.1
    Django==1.11.9
    Flask==1.0.2
    Flask-Cors==3.0.6
    gevent==1.3.6
    greenlet==0.4.15
    idna==2.7
    ItsDangerous==1.1.0
    Jinja2==2.10
    lxml==4.2.6
    MarkupSafe==1.0
    numpy==1.15.3
    Pillow==5.3.0
    pycparser==2.18
    PyMySQL==0.9.2
    pytz==2018.7
    requests==2.19.1
    selenium==3.141.0
    six==1.11.0
    urllib3==1.23
    virtualenv==16.1.0
    Werkzeug==0.14.1
    wordcloud==1.5.0
    
    pip3 install -i https://pypi.doubanio.com/simple/ -r re.txt
    
    

    3.uwsgi安装

    # uwsgi可以通过端口访问Django项目了
    # 1.安装
    pip3 install -i https://pypi.doubanio.com/simple/ uwsgi
        
        
    # 2.测试uwsgi是否正常
    # 新建test.py文件
    vim test.py
    
    def application(env, start_response):
        start_response('200 OK', [('Content-Type','text/html')])
        return [b"Hello Django"]
    
    # 运行
    # & :在后台运行
    # 我们就可以在浏览器通过10.0.0.100(IP地址):8001访问
    uwsgi --http :8001 --wsgi-file test.py &
    
    # 3.测试django是否正常,运行:
    # 新建django项目demosite
    django-admin.py startproject demosite
    # 进入项目demosite根目录
    cd demosite
    # 运行项目demosite
    python3 manage.py runserver 0.0.0.0:8002
    # 在浏览器内输入:http://10.0.0.100:8002,检查django是否运行正常。
    
    # 注:测试Django项目时,要在settings.py中配置ALLOWED_HOST=['*'],放开所有地址都可以访问
    

    4.nginx+uwsgi配置django空项目

    # 为什么要nginx+uwsgi一起来配置,因为
    # 单独只用uwsgi的话会显示出端口号,如果加上nginx就不会显示出端口
    # 能隐藏自己的真实端口,对于用户来说只是访问了域名而已
    
    
    # 1.配置uwsgi
    # 在Django项目根目录创建uwsgi.ini
    vim /root/demosite/uwsgi.ini
    # 配置uwsgi.ini
    [uwsgi]
    socket = 127.0.0.1:9999
    master = true
    workers = 2
    max-requests = 1000
    buffer-size = 30000
    pidfile = /run/uwsgi.pid
    daemonize = /var/log/uwsgi.log
    
    # 以Django项目里的uwsgi.ini的配置来启动uwsgi
    uwsgi --ini /root/demosite/uwsgi.ini &
    
    
    # 2.配置Nginx
    vim /etc/nginx/conf.d/py.conf
    # 配置
    server {
        # 监听来自80端口的请求
    	listen 80;
        # IP地址
    	server_name 10.0.0.100;
    	client_max_body_size 100M;
    
    	location / {
    		index index.html;
    		include uwsgi_params;
            # 同uwsgi内容,通过这个去访问uwsgi
    		uwsgi_pass 127.0.0.1:9999;
            # Django项目demosite的wsgi
    		uwsgi_param UWSGI_SCRIPT demosite.wsgi;
            # 要配置Django项目目录
    		uwsgi_param UWSGI_CHDIR /root/demosite;
    	}
    }
    
    # 重启nginx
    systemctl restart nginx
    
    # 配置好后就可以通过http://10.0.0.100访问Django
    
  • 相关阅读:
    plsql Developer11的工具栏没有了如何找回来
    postman发送HTTP请求自动生成MD5/SHA1签名
    Redis的安装+哨兵模式+集群
    SpringBoot笔记 --- @JsonFormat和@DateTimeFormat的作用
    HBase异常 -- hbase list报错 ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
    Windows使用进阶
    SpringBoot笔记 -- @RequestParam、@RequestBody、@PathVariable、@param
    SpringBoot笔记 -- 注解
    Mybatis笔记 -- 批量操作(查询、插入、更新、删除)
    Git异常 -- 汇总
  • 原文地址:https://www.cnblogs.com/xvchengqi/p/10241175.html
Copyright © 2020-2023  润新知