开始今日份整理

1. 系统优化部分

1.1 Linux防火墙安全相关(重要)

1.1.1 SELinux功能

SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,这个功能管理员又爱又恨,大多数生产环境也是关闭的做法,安全手段使用其他方法。

大多数ssh连接不上虚拟机,都是因为防火墙和selinux阻挡了。

永久关闭方式:

  1. 1.修改配置文件,永久生效关闭selinux
  2. cp /etc/selinux/config /etc/selinux/config.bak #修改前备份
  3. 2.修改方式可以vim编辑,找到
  4. # This file controls the state of SELinux on the system.
  5. # SELINUX= can take one of these three values:
  6. # enforcing - SELinux security policy is enforced.
  7. # permissive - SELinux prints warnings instead of enforcing.
  8. # disabled - No SELinux policy is loaded.
  9. SELINUX=disabled
  10. 3.sed替换
  11. sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  12. 4.检查状态
  13. grep "SELINUX=disabled" /etc/selinux/config
  14. #出现结果即表示修改成功

临时关闭selinux(命令行修改,重启失效):

  1. getenforce #获取selinux状态
  2. #修改selinux状态
  3. setenforce
  4. usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
  5. 数字0 表示permissive,给出警告,不会阻止,等同disabled
  6. 数字1表示enforcing,表示开启

注意:修改selinux配置后,想要生效还得重启系统,技巧就是(修改配置文件+命令行修改,达到立即生效) 生产环境的服务器是禁止随意重启的!!!!

1.1.2 iptables防火墙

在学习阶段,关闭防火墙可以更方便的学习,在企业环境中,一般只有配置外网ip的linux服务器才会开启防火墙,但是对于高并发流量的业务服务器仍然是不能开启的,会有很大性能损失,因此需要更nb的硬件防火墙。

关闭防火墙具体操作如下:

  1. iptables -L 查看防火墙规则
  2. iptables -F 清空防火墙规则
  3.  
  4. centos7默认已经使用firewall作为防火墙了
  5. 1.关闭防火墙
  6. systemctl status firewalld #查看防火墙状态
  7. systemctl stop firewalld #关闭防火墙
  8. systemctl disable firewalld#关闭防火墙开机启动
  9. systemctl is-enabled firewalld.service#检查防火墙是否启动

1.2 linux中文显示

此项优化为可选项,根据个人情况选择是否调整Linux系统的字符集,字符集就是一套文字符号以及编码。

Linux下常用字符集有:

  • GBK  实际企业应用较少
  • UTF-8  广泛支持,MYSQL也使用UTF-8,企业广泛使用
  1. #查看系统当前字符集
  2. echo $LANG
  3. #检查xshell crt的字符集
  4. #命令修改字符集
  5. export LANG=en_US.utf8
  6. 1.修改配置文件/etc/locale.conf
  7. LANG="zh_CN.UTF-8"
  8. 2.更改后查看系统语言变量
  9. locale

乱码核心解决办法

  1. 1.系统字符集utf8
  2. 2.xshell字符集utf8
  3. 3.文件字符集一致zh_CN.UTF-8

1.3 计划任务crond服务(一般重要)

计划任务:后台运行,到了预定的时间就会自动执行的任务,前提是:事先手动将计划任务设定好。这就用到了crond服务

crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似

语法:

  1. crontab (选项)(参数)
  2. -e:编辑该用户的计时器设置;
  3. -l:列出该用户的计时器设置;
  4. -r:删除该用户的计时器设置;
  5. -u<用户名称>:指定要设定计时器的用户名称。
  6.  
  7. 存放定时任务的文件
  8. /var/spool/cron

实例:

  1. #每分钟执行一次命令
  2. * * * * *
  3. */1 * * * *
  4. #每小时的3,15,35分执行命令
  5. 3,15,35 * * * * 执行命令
  6.  
  7. #在上午8-11点的第3和第15分钟执行
  8. 3,15 8-11 * * * 执行
  9.  
  10. #每晚21:30执行命令
  11. 30 21 * * * 命令
  12.  
  13. #每周六、日的1:30执行命令
  14. 30 1 * * 6,7 执行命令
  15.  
  16. #每周一到周五的凌晨1点,清空/tmp目录的所有文件
  17. 0 1 * * 1-5 rm -rf /tmp/*
  18.  
  19. #每晚的21:30重启nginx
  20. 30 21 * * * systemctl restart nginx
  21.  
  22. #每月的1,10,22日的4:45重启nginx
  23. 45 4 1,10,22 * * systemctl restart nginx
  24.  
  25. #每个星期一的上午8点到11点的第3和15分钟执行命令
  26. 3,15 8-11 * * 1 执行命令
  27.  
  28. 每天凌晨6点备份mysql数据库
  29. 0 6 * * * 备份数据库mysqldump

1.4 其他命令

  1. 1.tree命令
  2. 树状显示目录及子目录文件,需要安装才可以使用
  3. yum install tree
  4.  
  5. 2.设置主机别名:
  6. hostnamectl set-hostname qishi666
  7.  
  8. 3.Lrzsz
  9. #安装此软件,即可拖拽上传下载linux代码到windows
  10. yum install lrzsz

2.软件包安装

2.1 yum命令(非常重要)

yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

尽管 RPM 能够帮助用户查询软件相关的依赖关系,但问题还是要运维人员自己来解决, 而有些大型软件可能与数十个程序都有依赖关系,在这种情况下安装软件会是非常痛苦的。 Yum 软件仓库便是为了进一步降低软件安装难度和复杂度而设计的技术。Yum 软件仓库可以 根据用户的要求分析出所需软件包及其相关的依赖关系,然后自动从服务器下载软件包并安 装到系统。Yum 软件仓库中的 RPM 软件包可以是由红帽官方发布的,也可以是第三方发布的,当 然也可以是自己编写的。

yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

选项:

  1. yum(选项)(参数)
  2. -h:显示帮助信息;
  3. -y:对所有的提问都回答“yes”;
  4. -c:指定配置文件;
  5. -q:安静模式;
  6. -v:详细模式;
  7. -d:设置调试等级(0-10);
  8. -e:设置错误等级(0-10);
  9. -R:设置yum处理一个命令的最大等待时间;
  10. -C:完全从缓存中运行,而不去下载或者更新任何头文件。

2.2 yum源配置

2.2.1 目前yum目录

  1. #进入yum源目录
  2. cd /etc/yum.repos.d/
  3. #查看yum源文件
  4. ls l
  1.  

2.2.2 更改阿里云的yum源

  1. 1.好习惯,备份yum
  2. mkdir repo_bak
  3. mv *.repo repo_bak/
  4.  
  5. 2.下载阿里云repo文件
  6. wget http://mirrors.aliyun.com/repo/Centos-7.repo
  7.  
  8. 3.清空yum缓存并且生成新的yum缓存
  9. yum clean all
  10. yum makecache
  11.  
  12. 4.安装软件扩展源
  13. yum install -y epel-release
  1. yum repolist all 列出所有仓库
  2. yum list all 列出仓库所有软件包
  3. yum info 软件包名 查看软件包信息
  4. yum install 软件包名 安装软件包
  5. yum reinstall 软件包名 重新安装软件包
  6. yum update 软件包名 升级软件包
  7. yum remove 软件包名 移除软件包
  8. yum clean all 清楚所有仓库缓存
  9. yum check-update 检查可以更新的软件包
  10. yum grouplist 查看系统中已安装的软件包
  11. yum groupinstall 软件包组 安装软件包组

3.以python部署为例说明编译安装

3.1 centos中安装python的 多种方式

  • yum一键安装
  • RPM包安装(太麻烦,不推荐)
  • 下载源码包,进行编译安装(今天的安装方式)

3.2 python安装

3.2.1 下载python3的源码包

3.2.2 下载python3编译的依赖包

  1. yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

3.2.3 解压缩源码包

  1. tar -zxvf Python-3.6.6.tgz

3.2.4 编译且安装

  1. 1.切换到源码包目录
  2. cd Python-3.6.6
  3.  
  4. 2. ls或者ll查看目录下文件源码包内容
  5.  
  6. 3.释放编译文件
  7. ./configure --prefix=/opt/python36
  8.  
  9. 4.编译与安装
  10. make && make install
  11. 编译安装,此步才会最终生成 /opt/python36/

注意:在上述几步中,一定要在Python-3.6.6目录下安装!在上述几步中,一定要在Python-3.6.6目录下安装!在上述几步中,一定要在Python-3.6.6目录下安装!进入/opt目录查看python36文件夹,我们要的python3都在这里了

3.2.5 更改linux的path变量,添加python3

  1. echo $PASH
  2. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  3. vim ~/.bash_profile # 用户环境变量控制文件
  4. vim /etc/profile # 系统环境变量控制文件
  5. 一定要将python3的目录放在第一位!!!
  6. 一定要将python3的目录放在第一位!!!
  7. 一定要将python3的目录放在第一位!!!
  8. 为了永久生效path设置,添加到/etc/profile全局环境变量配置文件中
  9. vim /etc/profile
  10. 在最后一行加入:
  11. PATH=/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  12. 重载配置文件/etc/profile
  13. source /etc/profile

3.2.6 剩下就需要装我们一直在使用的django模块了

  1. pip3 install -i https://pypi.douban.com/simple django==2.1.7
  2. 配置django,把django项目跑起来
  3. (1) 创建一个django项目django-admin startproject qishi
  4. (2) 配置settings.py文件,将ALLOW_HOST=[]改为ALLOW_HOST=["*"]
  5. (3) 创建一个app python3 manage.py startapp app01
  6. (4) 启动django python3 manage.py runserver 0.0.0.0:8000

4.安装虚拟环境

在企业中一个服务器不可能只安装一个软件,对于企业来说一台服务器需要跑多个业务,这个时候就需要用到虚拟机了,每个虚拟机分别独立,安装不同的环境和需求包。

4.1 virtualenv模块

(1)下载安装虚拟环境模块:pip3 install -i https://pypi.douban.com/simple virtualenv

(2) 切换到opt目录下,创建一个virutal_env目录:

(3)  创建俩个虚拟环境:

  1. virtualenv --no-site-packages --python=python3 test1
  2.  
  3. virtualenv --no-site-packages --python=python3 test2

注:no-site-packages意味着虚拟环境为纯粹环境,只有最基本的俩个包,建立的虚拟环境就会在当前目录建立

(4)激活虚拟环境

  1. 1.相对路径
  2. cd /opt/virutal_env/test1/bin
  3. source activate
  4.  
  5. 2.绝对路径
  6. source /opt/virtual_env/test2/bin/activate

激活后前置名称更改为虚拟环境的名称

激活的虚拟环境只有以上三个包

(5)分别在俩个虚拟环境中创建django项目

  1. #1.分别进入两个虚拟环境,分别创建django项目,但是都在/opt/knight3目录下
  2.  
  3. 进入test1虚拟环境下
  4.  
  5. source /opt/virtual_env/xiangge/bin/activate
  6.  
  7. cd /opt/qishi3dj
  8.  
  9. django-admin startproject qishi3_1
  10.  
  11. 再进入test2虚拟环境下
  12.  
  13. source /opt/virtual_env/bangzheng/bin/activate
  14.  
  15. cd /opt/qishi3dj
  16.  
  17. django-admin startproject qishi3_2

启动虚拟机

启动后的页面,django1.x和2.x版本的

(6)退出虚拟环境:deactivate

4.2 virtualenvwrapper模块

virtualenv这个工具太麻烦了,命令太长, 不容易记住,管理虚拟环境特别麻烦, 容易弄错目录,容易找不到虚拟环境,最终导致得重装系统或者重装虚拟环境,现在就有一个可以统一管理的模块

(1)安装软件:virtualenvwrapper,一定要安装在python解释器目录下,不能安装在虚拟机上!

  1. pip3 install virtualenvwrapper -i https://pypi.douban.com/simple

(2)设置linux的用户配置文件配置virtualenvwrapper

  1. vim ~/.bashrc
  2. WORKON_HOME=~/Envs # 设置virtualenv的统一管理目录, 以后自动下载的虚拟环境,全部都放在这,这里可以更改目录
  3. VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' # 添加virtualenvwrapper的参数,生成干净隔绝的环境
  4. VIRTUALENVWRAPPER_PYTHON=/opt/python347/bin/python3 # 指定python解释器的本体(注意此路径随不同的linux环境改变而改变)
  5. source /opt/python34/bin/virtualenvwrapper.sh # 执行virtualenvwrapper安装脚本
  6.  
  7. 注意: 后面的注释你得知道,但是不能放到配置文件里面去,不然会报错!!!
  8.  
  9. 注意: 后面的注释你得知道,但是不能放到配置文件里面去,不然会报错!!!
  10.  
  11. 注意: 后面的注释你得知道,但是不能放到配置文件里面去,不然会报错!!!
  12.  
  13. 真实实验环境配置文件如下:
  14. 注:要根据实际的情况
  15. WORKON_HOME=~/Envs
  16. VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3
  17. source /opt/python36/bin/virtualenvwrapper.sh

(3)重新加载~/.bashrc文件:source ~/.bashrc

(4) 登出用户,重新再登录

(5)创建一个虚拟环境,创建成功自动进入虚拟机

  1. mkvirtualenv test1
  2.  
  3. mkvirtualenv test2
  4.  
  5. mkvirtualenv test3

(6) 激活一个虚拟环境

  1. workon test1
  2. workon test2
  3. workon test3

(7) 删除一个虚拟环境

  1. rmvirtualenv test1
  2. rmvirtualenv test2
  3. rmvirtualenv test3

(8)退出一个虚拟环境

  deactivate

5.安装MariaDB

5.1 添加MariaDB的yum仓库

由于官网的MariaDB版本要比阿里云的版本要高,所以我们应该优先使用官方的版本

  1. # 编辑创建mariadb.repo仓库文件
  2. vi /etc/yum.repos.d/MariaDB.repo
  3.  
  4. 2、添加repo仓库配置
  5. [mariadb]
  6. name=MariaDB
  7. baseurl=http://yum.mariadb.org/10.1/centos7-amd64
  8. gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
  9. gpgcheck=1

5.2 在 CentOS 7 中安装 MariaDB

  1. 3、当 MariaDB 仓库地址添加好后,你可以通过下面的一行命令轻松安装 MariaDB
  2.  
  3. yum install MariaDB-server MariaDB-client -y
  4.  
  5. # 由于官方的下载网速太慢,我们教学就使用阿里云低版本的mariadb数据库
  6.  
  7. # 删除或者重命名刚才创建的Mariadb.repo文件
  8. cd /etc/yum.repos.d
  9. mv Mariadb.repo Mariadb.repo.bak
  10.  
  11. # 然后一条命令安装Mariadb
  12. yum install mariadb-server mariadb -y

5.3 启动mariadb相关命令

  1. mariadb数据库的相关命令是:
  2.  
  3. systemctl start mariadb #启动MariaDB
  4.  
  5. systemctl stop mariadb #停止MariaDB
  6.  
  7. systemctl restart mariadb #重启MariaDB
  8.  
  9. systemctl enable mariadb #设置开机启动

启动后正常使用mysql:systemctl start mariadb

5.4 初始化mariadb

  1. mysql_secure_installation

5.5 解决sql的中文显示问题

  1. 1 停掉mariadb服务
  2. systemctl stop mariadb
  3. 2 修改配置文件vim /etc/my.cnf

进入mysql,基本配置结束,剩下就是SQL语句了!

5.6 启动失败时的解决办法

Mariadb启动报错Job for mariadb.service failed because the control process exited...

MariaDB重启后,执行 systemctl start mariadb 启动报错

  1. Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.

根据官方提示执行 systemctl status mariadb.service 或者 journalctl -xe 并不能看出真正原因,此时可以查看mariadb的日志文件,查看错误原因。

  1. cd /var/log/mariadb/
  2. vi mariadb.log
  3. #即可查看具体的错误信息!

a

Linux-基础学习(二)-基本部署的更多相关文章

  1. Linux基础学习-使用Squid部署代理缓存服务

    使用Squid部署代理缓存服务 Squid是Linux系统中最为流行的一款高性能代理服务软件,通常作为Web网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存.Squid服务配置简单. ...

  2. Linux基础学习二

    新建分区:fdisk /dev/sda(a代表第一块硬盘)                   建完后w保存 更新分区表:partprobe mkfs.ext4 /dev/sdb{1..3} : 格式 ...

  3. Linux基础学习系列目录导航

    Linux基础学习-通过VM安装RHEL7.4 Linux基础学习-命令行与图形界面切换 Linux基础学习-基本命令 Linux基础学习-RHEL7.4之YUM更换CentOS源 Linux基础学习 ...

  4. Python基础学习二

    Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...

  5. Linux基础练习题(二)

    Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...

  6. 运维之Linux基础(二)

    运维之Linux基础(二) 1. file 命令基期用法 2. 文件系统 Linux的文件系统结构是树状结构,所有的文件都在/root跟目录下 /boot:系统启动相关的文件, 如:内核.initrd ...

  7. linux基础学习之软件安装以及常用命令

    linux基础学习之软件安装以及常用命令 调用中央仓库: yum install wget 然后下载nodejs: wget https://nodejs.org/dist/v10.14.2/node ...

  8. Python入门基础学习 二

    Python入门基础学习 二 猜数字小游戏进阶版 修改建议: 猜错的时候程序可以给出提示,告诉用户猜测的数字偏大还是偏小: 没运行一次程序只能猜测一次,应该提供多次机会给用户猜测: 每次运行程序,答案 ...

  9. linux基础学习路线&review

    linux基础学习网址: https://www.runoob.com/linux/linux-tutorial.html 比较重点的是这个启动过程的介绍学习:https://www.runoob.c ...

  10. Linux 基础学习1

    目录 Linux 基础学习 用户登录 终端 交互式接口 bash 修改ssh连接慢的步骤 命令提示符 显示提示符格式 命令 别名 命令格式 获取命令的帮助信息 man bash 快捷键 tab 键 引 ...

随机推荐

  1. dotnet core使用开源组件FastHttpApi进行web应用开发

    FastHttpApi相对于asp.net mvc来说有着更轻量和性能上的优势,性能上面就不在这里介绍了(具体可查看 https://github.com/IKende/FastHttpApi).在这 ...

  2. shell高级特性-4

    1.shell模块 shell脚本中可以加载配置文件或调用已经完成函数或脚本. a.加载配置文件 新建配置文件config,插入以下代码: reboot_mode=True 在同一路径下,新建文件mo ...

  3. Koa 框架常用知识点整理

    简介 Koa 就是一种简单好用的 Web 框架.它的特点是优雅.简洁.表达力强.自由度高.本身代码只有1000多行,所有功能都通过插件实现. 学前准备 检查Nodejs版本 打开cmd命令行窗口nod ...

  4. leetcode — single-number

    /** * Source : https://oj.leetcode.com/problems/single-number/ * * * Given an array of integers, eve ...

  5. linux为什么不可以添加硬链接

    假设有个文件夹1 文件夹1里面还有个文件夹2 文件夹2里面还有个文件夹3 然后发现哎呀直接文件夹3放到文件夹1下就行了访问多方便. 也就是文件夹1下有文件夹2和文件夹3,然后问题就来了文件夹1下的文件 ...

  6. LeetCode专题-Python实现之第14题:Longest Common Prefix

    导航页-LeetCode专题-Python实现 相关代码已经上传到github:https://github.com/exploitht/leetcode-python 文中代码为了不动官网提供的初始 ...

  7. .NET Core中Object Pool的简单使用

    前言 复用,是一个重要的话题,也是我们日常开发中经常遇到的,不可避免的问题. 举个最为简单,大家最为熟悉的例子,数据库连接池,就是复用数据库连接. 那么复用的意义在那里呢? 简单来说就是减少不必要的资 ...

  8. SpringBoot整合系列-整合H2

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9959855.html SpringBoot整合H2内存数据库 一般我们在测试的时候习惯于 ...

  9. SQL Server分页存储过程通用存储过程

    CREATE proc [dbo].[p_paging]@tableName varchar(8000),          --表名.视图名@indexCol varchar(50) = 'id', ...

  10. 零基础学Python--------第8章 模块

    第8章 模块 8.1 模块概述 模块的英文是Modules,可以认为是一盒(箱)主题积木,通过它可以拼出某一个主题的东西.这与第6章介绍的函数不同,一个函数相当于一块积木,而一个模块中可以包括很多函数 ...