• Linux从入门到入门


    一、 前言

    首先,在你的Windows系统上要想有linux系统,那就必须先安装一款软件,这里提供的是14、15的,还有ISO镜像VMware-workstation

    安装VMware:略

    新建虚拟机之前将ISO镜像加到配置,不然无法启动虚拟机,详见:CentOS 7的安装教程

    注意:安装Linux操作系统时对内存的最低要求为:512M

    二、 Linux虚拟机配置

    • 常用软件包安装
    yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc net-tools
    • 网络配置
    vim /etc/sysconfig/network-scripts/ifcfg-eth0
    	
    ONBOOT=“yes”
    BOOTPROTO=“static”
    IPADDR=10.0.0.100    # IP地址
    NETMASK=255.255.255.0  # 子网掩码
    GATEWAY=10.0.0.254    # 网关
    
    重启网卡:
    /etc/init.d/network restart
    	
    DNS配置:
    vim /etc/resolv.conf 
    nameserver 114.114.114.114
    nameserver 223.5.5.5
    	
    配置完成之后就可以使用ping命令,如:ping baidu.com
    • 主机名配置
    hostnamectl set-homename 主机名  
    • ip配置
    # ​方法1
    vim /etc/hosts进入文件编辑,输入:10.0.0.100 主机名,保存退出
    # 方法2
    echo '10.0.0.100' 主机名>>/etc/hosts
    
    然后执行命令:ping 主机名,能ping通就说明OK了
    
    • 防火墙配置
    # 检查防火墙是否开启
        iptables -L
    # 临时关闭防火墙
        iptables -F
        service iptablesa stop
    # 永久关闭防火墙 
        systemctl disable firewalld
    
    # 查询selinux防火墙
        getenforce(Enforcing 强制)
    # 临时关闭
        setenforce 0
    # 永久关闭
        vim /etc/selinux/config 修改:SELINUX=disabled
    # 重启虚拟机

    三、 常用快捷键

    退出当前用户: Ctrl + d
    查找: Ctrl + r
    历史: history
    锁屏: Ctrl + s
    解锁: Ctrl + q
    关机: poweroff
    重启: reboot

    四、 常用命令

    命令格式:命令 [选项] [参数]

    关机:init 0
    切换用户:Ctrl+Alt[F1~F6]
    退出: exit
    浏览:
        ls(当前文件夹下)
        ls -l 详细信息
        ll 详细信息
        ls -a 显示隐藏文件
        ls -ltr /var/log/ (时间倒序排列)
    切换到当前用户的家目录: cd ~ 如:cd ~之后,pwd一下,会得到/root
    返回上一次的目录: cd -
    返回根目录: cd
    日期:
        date
        date '月日时分年'(同步系统时间)
        hwclock -s(同步硬件时间)
    万年历 :
        cal
        cal 月 年
    清空屏幕:
        ctrl+l
        clear
    帮助信息:
        man 
         --help
        info

    五、 目录(d)相关操作

    创建目录: 
    	mkdir 文件名(指定路径,相对或绝对)
    	mkdir -p /a/b/c 级联创建目录
    	小技巧:
    		mkdir a{1..10}  批量创建多个目录
    查询目录:
    	ls
    	ls -ld   查看单层目录
    	tree /a  查看多层目录
    	tree -L 1 只查看一层
    	小技巧:
    		ls -ld dir*  迷糊查询
    修改目录:
    	1. 剪切: 
    		mv /原路径 /目标路径
    		mv /原路径 /目标路径/重命名
    		mv /原文件名 /新文件名
    	2. 拷贝:
    		cp    原路径     目标路径/重命名
    		cp -r /root/test /opt/new(拷贝目录)
    		cp -a (带源文件的属性拷	
    删除目录:
    	rm -rf /路径
    	rm -rf 多个文件
    通过文件句柄找回丢失数据(不能重启,不能继续写入)

    六、 普通文件(-)相关操作

    种类:
        ASCII TEXT:纯文本
        LSB Exe:二进制可执行文件(命令、程序)
        压缩文件:zip、tar、gz、cpio、iso、bz2
        二进制数据文件等
    
    文件创建:
    	创建空文件: touch a.txt
    	删除文件: rm -rf a.txt
    	文件查看: 
    		查看基本信息: ls -l a.txt
    		查看文件内容:
    			cat a.txt   适合小文件内容查看,可同时查看多个文件
    			cat -n a.txt   带序号显示
    			more a.txt   分页显示,查看大文件,不可上下翻页
    			less a.txt   分页,可上下翻页查看
    			head a.txt    查看前十行信息
    			head -n3 a.txt  查看前三行信息
    			tail a.txt    查看后十行信息
    			tail -f   监控
    	文件操作:
    		复制:cp 不用加 -r 
    		剪切:mv 的用法同目录操作
    	文件内容编辑:
    		1. 重定向:
    			>  覆盖重定向
    			>> 追加重定向
    			cat /etc/passwd >>a.txt
    			echo 
    		2. vim编辑器:
    			a:命令模式(初始模式)
    					1. 查看文件内容,移动光标,page up或down翻页
    					2. G,1G(gg),10G(最后一行, 第一行,第10行)
    					3. $行尾 ^行首
    					4. /搜索内容  高亮显示
    					5.  yy  复制光标所在行
    						Nyy 复制N行
    						dd  删除/剪切
    						Ndd 删除/剪切N行
    						p   粘贴
    						x(delete) 删除光标所在的单个字符
    						dG 光标删除至文本末尾
    						d$ 光标所在删除到行末,包括光标所在字符
    						d^ 光标所在删除到行首,不包括光标字符
    						r  替换光标所在的单个字符
    						u 撤销
    						ZZ 保存退出
    			b:编辑模式
                    i 光标字符之前插入数据
                    o 光标所在的下一行插入数据,新起一行
                    a 光标字符之后插入数据
                    A 行末录入数据
                    I 行首录入数据
                    O 上一行录入数据
                    退出编辑模式:按Esc,退回到命令模式
    			c:末行模式
    				命令模式下按:进入
    				强制退出: :q!
    				保存退出: :wq
    				显示行号: :set nu
    				不显示行号: :set nonu
    				批量替换: :%s/root/ROOT/g

    七、 磁盘 & 文件系统

    • 磁盘分区和格式化

    不同的操作系统具有不同的硬盘分区工具,Windows系统下非常有名的分区工具是FDISK,在LINUX系统下进行分区可以使用fdisk,或者使用相同功能的图形界面程序,在一块硬盘上最多只能有4个分区,通过分区当然不能产生任何文件系统。在分区之后只是对硬盘上的磁盘空间进行了保留,还不能直接使用。分区后必须要进行格式化。在Windows系统下可以通过资源管理器下的文件菜单或者format程序来执行,在Linux系统下大多使用mkfs命令来完成。Linux支持不同的文件系统,应用最广泛的是ext3。

    注意:进行任何磁盘分区或大小改动工作,都会丢失以前的数据,因此在分区之前一定要对数据进行备份。

    • 硬盘分区 & 格式化
    查看磁盘:
    	ls -l
    	fdisk -l
    分区:
    	fdisk /dev/sdb  ---> 进入
    	n 新建
    	p 查看现有分区
    	w 保存退出
    格式化成文件系统:XFS
    	mkfs.xfs /dev/sdb1/
    挂载设备:
    	挂载点(空目录):mkdir /data
    	挂载: mount /dev/sdb1 /data
    	查看磁盘使用情况: df -h
    自动挂载的配置文件:
    	vim /etc/fstab
    	/dev/sdb1   /data xfs   defaults 0 0
    	# 磁盘路径    挂载到哪     什么格式
    注:最好用uuid替换磁盘路径 UUID=asia-fofe-sada-123 /data xfs defaults 0 0 查看挂载设备信息: blkid
    • 补充RAID

      磁盘阵列(Redundant Arrays of Independent Drives,RAID)

    功能:

    • 1. 聚合多块磁盘的容量,提供更大的储存空间
    • 2. 高性能的并发存取(IO)
    • 3. 数据物理层面的安全性更高(做成镜像关系)

    RAID级别:

    1. raid0 条带化功能,性能极高,无安全性,至少2块盘
    2. raid1 磁盘镜像(把一个磁盘的数据镜像到另一个磁盘上),性能无明显提升,安全性高,浪费一半的空间
    3. raid1+0: 至少需要4块盘,镜像+条带化,兼顾性能与安全,成本较高,浪费一半空间
    4. raid5: 分布式奇偶校验的独立磁盘结构,至少3块盘,存储数据时计算校验值,写入性能低,读的速度较快,适用于读多写少的场景

    八、 用户、组、 权限

    更多请访问网址: http://www.cnblogs.com/linhaifeng/articles/6045600.html#_label7

    • 用户
    1. 用户及passwd文件
            /etc/passwd文件:存储所有用户的相关信息,该文件也被称为用户信息数据库(Database)。
            /etc/passwd文件每个字段的具体含义:
                字段1: 记录的是这个用户的名字(在创建用户时root用户起的)。
                字段2: 如果是x,表示该用户登录Linux系统时必须使用密码;如果为空,则该用户在登录时无须提供密码。
                字段3: 记录的是这个用户的uid。注意:(0-1000系统占用)uid为0,是root用户
                字段4: 记录的是这个用户所属群组的gid。
                字段5: 记录的是有关这个用户的注释信息(如全名或通信地址)。
                字段6: 记录的是这个用户的家目录的路径。
                字段7: 记录的是这个用户登录后,第一个要执行的进程
    	
    2. 用户管理:
    		了解useradd命令的常用选项:
                –u: 指定用户的UID
                –g: 指定用户所属的群组
                –d: 指定用户的家目录
                –c: 指定用户的备注信息
                –s: 指定用户所用的shell(/bin/bash 或者 /sbin/nologin)
            eg:
                创建用户: useradd [-u 1001 -g 1001 -d /home -c bigman -s /bin/bash] rongge
                查看用户信息: 
                    id 用户名
                    tail -1 /etc/passwd
                查看当前登录用户:whoami or who
                设置密码: passwd 用户名
                切换用户: su - 用户名
                删除用户: userdel -r 用户名
                修改用户: usermod -u uid 用户名
            
    3. 创建一个用户涉及到的5个文件,eg(useradd test):
            家目录: ls /home/
            密码目录: ls /etc/passwd
            密码详情目录: ls /etc/shadow
            组目录: ls /etc/gorup
            组密码目录: ls /etc/gshadow
            邮箱目录: ls /var/spool/mail/
    重点:在Linux中,一切皆文件,所以新创建的用户也是一个文对象!
    GID,组名
    组管理:
            创建组: groupadd [-g 1001] 组名
            查看组: 
                cat /etc/group
                tail -1 /etc/group
            删除组: groupdel 组名
            修改组的id: groupmod -g 10001 组名
    • 权限
    作用在文件上的属性
    普通权限的规划:
    	r 读   4
    	w 写   2
    	x 执行 1

    九、 程序管理 & 网络管理

    • 程序管理

    # 查看操作系统的进程状态: 
        ps
        ps -ef |grep 进程名  查看特定的进程
        ps aux | head -3    查看前三行的进程
    # 杀死进程:
        kill 进程号
        kill -9 进程号  强制杀死
        pkill 进程名
    # 服务的操作:
        systemctl start 服务
        systemctl restart 服务
        systemctl stop 服务
    • 网络管理

    # 查看地址:
        ip a
        ifconfig
    # 修改地址:
        vim /etc/sysconfig/network-scripts/ifcfg-eth0
    # 重启网络:systemctl restart network
    # 查看启动服务的端口: netstat -tulnp

    十、 软件包管理

    • rpm
    # 光盘挂载:
        mount /dev/cdrom /mnt
        cd/mnt/package
        查看软件包个数: ls -l |wc -l
    # 软件包的安装:
        rpm -ivh 软件包名.rpm
        rpm -Uvh 软件包名.rpm(更新安装)
    # rpm包的查询:
        rpm -q 完整的软件包名      安装显示
        rpm -qa         显示所有
        rpm -qa |grep   包名(过滤显示)
    # 软件包的卸载: 
        rpm -e 软件包名(正常卸载)
    # 查看命令的具体路径:
        which vim
    # 查询命令来自哪个软件包:    
        rpm -qf 命令文件路径
    # 查看安装软件的文件:
        rpm -ql 软件包名
    # 依赖安装:
        rpm -ivh a b c d(还是严格依赖版本号)
    • yum

    安装yum:
        yum配置文件(yum源)cd /etc/yum.repos.d
        移除Base源:mv *.repos /tmp
        从ali获取Base源,并安装: wget http://mirrors.aliyum.com/repo/Centos-7.repo
        安装epel源: yum install -y epel-release
     
    使用yum安装软件:
        yum install openssl -y  (证书软件)
        yum install openssl-devel -y    (支持软件)
        yum groupinstall "组名"       安装一个组的软件包
    查询软件包:
        yum list |grep python
        yum grouplist 
    卸载软件包:
        yum remove 
    优化yum源:
        移走网络的yum: 
            mkdir ali
            mv *.repo ali
        1. 设置本地的yum源:
            先将光盘挂载到mnt目录
            vim /etc/yum.repos.d/loacal.repo
                [local]
                name=localiso
                baseurl=file:///mnt
                gpgcheck=0
        使用:
            先清除缓存的yum:
                yum clean all
            安装软件:
                yum install 软件名 -y
        2. 局域网yum源  
            安装ftp软件:yum install vsftpd -y 
            启动ftp: 
                systemctl start vsftpd
                systemctl enable vsftpd
            创建站点目录,将光盘镜像拷贝到文件目录
                mkdir /var/ftp/pub/centos7
                cp -a /mnt/* /var/ftp/pub/centos7
            生成ftp站点的yum源的配置文件
                cd /etc/yum.repos.d/
                vim ftp.repo
                    [ftpd]
                    name=centos7
                    baseurl=ftp://ip地址/pub/centos7
                    gpgcheck=0
            测试安装:
                yum clean all
                yum install 软件名
    • 源码包

    zip 解压: unzip xxx.zip
    tar 解压: tar xf xxx.tar
    tar.gz
    tar.xz
    tgz
    iso  需挂载使用: mount -o loop xxx.iso /test
    下载redis
        wget http://download.redis.io/releases/redis-3.2.10.tar.gz
    redis安装
        tar xf redis-3.2.10.tar.gz
        cd /redis-3.2.10
            make
    添加环境变量        
        vim /etc/profile        
            末尾行添加: export PATH=/opt/redis-3.2.10/src:$PATH        
    保存后让它生效:source /etc/profile        
    启动服务: redis-server & 
    查看服务: netstat -tulnp|grep redis
    连接服务: redis-cli
    python连接redis:    
        1. unzip redis-py-master.zip    
        2. cd redis-py-master    
        3. python3 setup.py install    
    本地连接测试
        对redis的单实例进行连接操作
            python3
            >>>import redis
            >>>r = redis.StrictRedis(host='localhost', port=6379)
            >>>r.set('name', 'oldguo')
            True
            >>>r.get('name')
            b'oldguo'
    Redis源码包的安装
    源码包安装的流程(python3.6):
    先到官网下载Linux系统的源码包:Python-3.6.7.tar.xz
    解压文件:tar xf Python-3.6.7.tar.xz
    安装依赖环境:
        yum install openssl openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++ zlib zlib-devel -y
    配置:
        cd Python-3.6.7
        ./configure        定制功能
    编译为二进制文件并拷贝:
        make && make install
    python源码包的安装
    • 二进制包

    将MySQL解压到opt目录:tar xf mysql-5.7.20-linux-......gz
    软链接: ln -s 。。。。。 mysql
    编辑环境变量:
        vim /etc/profile
            末尾行添加: export PATH=/opt/mysql/bin:$PATH
            生效: source /etc/profile
    卸载自带的 mariadb库:
        yum remove mariadb-libs
    生成配置文件(/etc/my.cnf):
        vim /etc/my.cnf
        [mysqld]
            basedir=/opt/mysql
            datadir=/opt/mysql/data
            socket=/tmp/mysql.sock
            log_error=/var/log/mysql.log
            log_bin=/opt/mysql/data/mysql-bin
            server_id=100
        [mysql]
            socket=/tmp/mysql.sock
            
    创建用户&数据目录,并授权:
        useradd mysql
        mkdir /opt/mysql/data
        chown -R mysql.mysql /opt/mysql
    初始化数据:
        mysqld --initialize-insecure --basedir=/opt/mysql --datadir=/opt/mysql/data --user=mysql
        共享库问题报错:
        mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
        解决:
            yum install -y libaio
        
        权限问题报错:
    2019-04-19T09:39:31.312685Z 0 [ERROR] Could not open file '/var/log/mysql.log' for error logging: Permission denied
    2019-04-19T09:39:31.312901Z 0 [ERROR] Aborting
        解决:touch /var/log/mysql.log
        授权:chown -R mysql.mysql /var/log/mysql.log
    启动数据库:方法1
        cd /opt/mysql/support-fiels
        ./mysql.server start
        
    为方便启动:方法2
        cp mysql.server /etc/init.d/mysqld
        /etc/init.d/mysqld start
        
    扩展:方法3(systemctl方法)
        使用 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 start mysqld
    创建mysql链接用户,进入mysql授权
        grant all on *.* to root@'10.0.0.%' identified by '123';
    
    安装pymysql
        pip3 install pymysql
    
    进入mysql测试:
        vim testmysql.py
        #!/usr/bin/python3
        import pymysql
        db = pymysql.connect("10.0.0.100","root","123","bbs" )
        cursor = db.cursor()
        cursor.execute("SELECT VERSION()")
        data = cursor.fetchone()
        print ("Database version : %s " % data)
        db.close()
    
    执行py文件: python3 testpython.py
    MySQL的安装

    十一、服务

    • ssh服务

    安装ssh: yum install ssh -y
    查看:rpm -qa | grep openssh
    服务端启动ssh: service sshd status
    客户端连接ssh: ssh ip地址 
    修改ssh配置: vim /etc/ssh/sshd_config
        默认端口22
    重启服务: service sshd restart
    ​
    ssh启动优化:
        配置文件中:/etc/ssh/sshd_config 将UseDNS改为no
        hosts文件添加ip地址和主机名
    • http服务

    部署网页服务:
        准备环境: 关防火墙、配ip
        安装: yum install httpd -y
        修改配置文件:vim /etc/httpd/conf/httpd.conf
        Listen 80
        DocumentRoot 路径/var/www/html
        重启: service httpd restart
            echo 'test' >> /var/www/html/index.html
        测试: 打开浏览器输入
            http://服务端ip:端口/
    • samba服务

    samba是一个网络服务器,用于Linux和Windows之间共享文件
    '''
    注意:
    客户端要对目录是否有权限,必须samba软件放权+系统放权
    每个用户的访问方式是:\服务端ip用户名,默认访问自己的家目录(该用户对该目录有w权限,且samba对用户的家目录开启了writeable=yes的权限)
    对于共享的目录,是所有人打开目录进行操作的,而不是一个打印机,所以printable一定要设置no
    writeable=no,write list=user1,user2代表所有人都没有写权限,唯独user1和user2有
    '''
    安装: yum install samba -y
    修改配置: vim /etc/samba/smb.conf
        samba安全认证掌握两种:share(匿名访问)、user(用户名密码)
        security=user、share
    启动: service smb start
    重启: service smb restart
    关闭: service smb stop
    添加smb用户和设置密码:
        useradd 用户名
        smbpasswd –a 用户
    [common]
    comment = ......   设置共享注译
    path =    设置共享目录的物理路径
    valid users = @组名,用户名   设置允许哪些合法组或用户访问
    public = yes|no  设置共享资源是否能给游客帐号访问
    browseable = yes|no  设置该共享为隐藏共享
    writable = yes|no 设置是否允许客户端写入数据
    hosts allow =  设置允许访问该共享的合法网段或IP
    • Nginx服务

    使用官方Nginx yum源
        vim /etc/yum.repos.d/nginx.repo 
        [nginx]
        name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/
        gpgcheck=0
        enabled=1
    ​
    安装Nginx:
        yum install nginx -y
    ​
    启动Nginx,并将Nginx加入开机自启:
        systemctl start nginx
        systemctl enable nginx
    查看启动:
        netstat -tulnp|grep nginx

    十二、django项目测试

    # 依赖包安装:
    yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++  openssl-devel zlib zlib-devel -y
    ​
    # 安装Django框架和uwsgi:
    写入re.txt文件:
        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
    安装re.txt内的包:pip3 install -i https://pypi.doubanio.com/simple/ -r re.txt
    安装uwsgi:pip3 install -i https://pypi.doubanio.com/simple/ uwsgi
    ​
    # 测试uwsgi是否正常,新建 test.py文件,内容如下:
    vim test.py
    def application(env, start_response):
        start_response('200 OK', [('Content-Type','text/html')])
        return [b"Hello Django"]
    '''            
    注意,不能使用root用户,否则会报错:
    *** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
    your server socket listen backlog is limited to 100 connections
    your mercy for graceful operations on workers is 60 seconds
    mapped 72920 bytes (71 KB) for 1 cores
    *** Operational MODE: single process ***
    WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x1c608b0 pid: 24413 (default app)
    uWSGI running as root, you can use --uid/--gid/--chroot options
    *** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
    *** uWSGI is running in multiple interpreter mode ***
    spawned uWSGI worker 1 (and the only) (pid: 24413, cores: 1)
    ​'''
    解决:
        创建一个用户:useradd 用户名
        切换到用户下:su - 用户名
              
    然后在终端运行: 
        uwsgi --http :8001 --wsgi-file test.py &
        页面显示:Hello Django就对了
        
    测试django,运行:
        django-admin.py startproject demosite
        cd demosite
        vim settings.py
        修改:ALLOWED_HOSTS=['*']
        
        python3 manage.py runserver 0.0.0.0:8002
        在浏览器内输入:http://10.0.0.100:8002,检查django是否运行正常
    ​
    # 使用uwsgi进行项目管理
    配置uwsgi
        vim /root/demosite/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
        
    启动uwsgi
        uwsgi --ini /root/test1/uwsgi.ini &
        
    配置nginx
        vim /etc/nginx/conf.d/py.conf
        server {
            listen 80;
            server_name 10.0.0.100;
            client_max_body_size 100M;
    ​
            location / {
                index index.html;
                include uwsgi_params;
                uwsgi_pass 127.0.0.1:9999;  # 转发的地址
                uwsgi_param UWSGI_SCRIPT demosite.wsgi;
                uwsgi_param UWSGI_CHDIR /root/demosite;     # 项目目录
            }
        }
        
    # 重启nginx:
        systemctl restart nginx
    # 浏览器访问:
        http://10.0.0.100   会跳转至django项目        
    # 查看进程:
        ps -ef |grep uwsgi

    十三、Django项目部署

    1. 先将自己的项目打包(BBS.zip),传到opt目录下,再导出数据库sql,一并传到opt目录下
    2. 连接到mysql,导入SQL脚本
        a. 创建库:create database bbs charset utf8mb4
        b. use bbs;
        c. source /opt/bbs.sql;(导入)
        d. show tables;
        e. q (退出)
        
        cd /opt
        unzip BBS.zip
        cd BBS/BBS
        vim settings.py
            修改: 
                ALLOWED_HOSTS=["*"]
                DATABASES = {
                    'default': {
                        'HOST': '10.0.0.100',
                        'USER': 'root',
                        'USER': 'bbs',(优化后的用户)
                    }
                }
            授权用户:grant select,update,insert,delete on bbs.* to bbs@'10.0.0.%' identified by '123';
            测试用户连接mysql:
                mysql -ubbs -p123 -h10.0.0.100
    ​
    '''            
    补充:
        mysql用户的定义
            USERNAME@'白名单'
        权限:
            grant all
            grant select,update,insert
    '''
    3. 配置nginx
        cd /BBS
        vim /etc/nginx/conf.d/py.conf
            server {
            listen 80;
            server_name 10.0.0.100;
            client_max_body_size 100M;
    ​
            location  /static {
            alias /opt/BBS/static/;
            }
    ​
            location /media {
            alias /opt/BBS/media;
            }
    ​
            location / {
            index index.html;
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:9090;
            uwsgi_param UWSGI_SCRIPT BBS.wsgi;
            uwsgi_param UWSGI_CHDIR /opt/BBS;
            }}
        
    4. 配置uwsgi
        vim  uwsgi.ini
        [uwsgi]
            socket = 127.0.0.1:9090
            master = true
            workers = 2
            reload-mercy = 10
            vacuum = true
            max-requests = 1000
            limit-as = 512
            buffer-size = 30000
        关闭已有的uwsgi服务:
            kill -9 `ps -ef |grep uwsgi|awk {'print $2'}`
    5. 启动uwsgi
        uwsgi --ini uwsgi.ini &
    6. 重启nginx
        systemctl restart nginx

     

     

  • 相关阅读:
    安卓的sqlite增删改
    C#访问MySQL数据库(winform+EF)
    Sqlite在.NET下的使用和Sqlite数据库清理
    WPF小笔记-Popup拖动
    WPF自定义窗口最大化显示任务栏
    什么是Hash?什么是Hash算法或哈希函数?什么是map?什么是HashMap?HashMap的实现原理或者工作原理?HashMap是线程安全的吗?为什么?如何解决?
    字符串转换整数
    系统顺序图与顺序图区别,以及根据顺序图写代码
    设计领域模型有哪些难点?有哪些指导原则?
    斐波那契数列java实现
  • 原文地址:https://www.cnblogs.com/rongge95500/p/10222203.html
Copyright © 2020-2023  润新知