Linux-基础学习(二)-基本部署
开始今日份整理
1. 系统优化部分
1.1 Linux防火墙安全相关(重要)
1.1.1 SELinux功能
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,这个功能管理员又爱又恨,大多数生产环境也是关闭的做法,安全手段使用其他方法。
大多数ssh连接不上虚拟机,都是因为防火墙和selinux阻挡了。
永久关闭方式:
- 1.修改配置文件,永久生效关闭selinux
- cp /etc/selinux/config /etc/selinux/config.bak #修改前备份
- 2.修改方式可以vim编辑,找到
- # This file controls the state of SELinux on the system.
- # SELINUX= can take one of these three values:
- # enforcing - SELinux security policy is enforced.
- # permissive - SELinux prints warnings instead of enforcing.
- # disabled - No SELinux policy is loaded.
- SELINUX=disabled
- 3.用sed替换
- sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
- 4.检查状态
- grep "SELINUX=disabled" /etc/selinux/config
- #出现结果即表示修改成功
临时关闭selinux(命令行修改,重启失效):
- getenforce #获取selinux状态
- #修改selinux状态
- setenforce
- usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
- 数字0 表示permissive,给出警告,不会阻止,等同disabled
- 数字1表示enforcing,表示开启
注意:修改selinux配置后,想要生效还得重启系统,技巧就是(修改配置文件+命令行修改,达到立即生效) 生产环境的服务器是禁止随意重启的!!!!
1.1.2 iptables防火墙
在学习阶段,关闭防火墙可以更方便的学习,在企业环境中,一般只有配置外网ip的linux服务器才会开启防火墙,但是对于高并发流量的业务服务器仍然是不能开启的,会有很大性能损失,因此需要更nb的硬件防火墙。
关闭防火墙具体操作如下:
- iptables -L 查看防火墙规则
- iptables -F 清空防火墙规则
- centos7默认已经使用firewall作为防火墙了
- 1.关闭防火墙
- systemctl status firewalld #查看防火墙状态
- systemctl stop firewalld #关闭防火墙
- systemctl disable firewalld#关闭防火墙开机启动
- systemctl is-enabled firewalld.service#检查防火墙是否启动
1.2 linux中文显示
此项优化为可选项,根据个人情况选择是否调整Linux系统的字符集,字符集就是一套文字符号以及编码。
Linux下常用字符集有:
- GBK 实际企业应用较少
- UTF-8 广泛支持,MYSQL也使用UTF-8,企业广泛使用
- #查看系统当前字符集
- echo $LANG
- #检查xshell crt的字符集
- #命令修改字符集
- export LANG=en_US.utf8
- 1.修改配置文件/etc/locale.conf
- LANG="zh_CN.UTF-8"
- 2.更改后查看系统语言变量
- locale
乱码核心解决办法
- 1.系统字符集utf8
- 2.xshell字符集utf8
- 3.文件字符集一致zh_CN.UTF-8
1.3 计划任务crond服务(一般重要)
计划任务:后台运行,到了预定的时间就会自动执行的任务,前提是:事先手动将计划任务设定好。这就用到了crond服务
crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似
语法:
- crontab (选项)(参数)
- -e:编辑该用户的计时器设置;
- -l:列出该用户的计时器设置;
- -r:删除该用户的计时器设置;
- -u<用户名称>:指定要设定计时器的用户名称。
- 存放定时任务的文件
- /var/spool/cron
实例:
- #每分钟执行一次命令
- * * * * *
- */1 * * * *
- #每小时的3,15,35分执行命令
- 3,15,35 * * * * 执行命令
- #在上午8-11点的第3和第15分钟执行
- 3,15 8-11 * * * 执行
- #每晚21:30执行命令
- 30 21 * * * 命令
- #每周六、日的1:30执行命令
- 30 1 * * 6,7 执行命令
- #每周一到周五的凌晨1点,清空/tmp目录的所有文件
- 0 1 * * 1-5 rm -rf /tmp/*
- #每晚的21:30重启nginx
- 30 21 * * * systemctl restart nginx
- #每月的1,10,22日的4:45重启nginx
- 45 4 1,10,22 * * systemctl restart nginx
- #每个星期一的上午8点到11点的第3和15分钟执行命令
- 3,15 8-11 * * 1 执行命令
- 每天凌晨6点备份mysql数据库
- 0 6 * * * 备份数据库mysqldump
1.4 其他命令
- 1.tree命令
- 树状显示目录及子目录文件,需要安装才可以使用
- yum install tree
- 2.设置主机别名:
- hostnamectl set-hostname qishi666
- 3.Lrzsz
- #安装此软件,即可拖拽上传下载linux代码到windows
- yum install lrzsz
2.软件包安装
2.1 yum命令(非常重要)
yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
尽管 RPM 能够帮助用户查询软件相关的依赖关系,但问题还是要运维人员自己来解决, 而有些大型软件可能与数十个程序都有依赖关系,在这种情况下安装软件会是非常痛苦的。 Yum 软件仓库便是为了进一步降低软件安装难度和复杂度而设计的技术。Yum 软件仓库可以 根据用户的要求分析出所需软件包及其相关的依赖关系,然后自动从服务器下载软件包并安 装到系统。Yum 软件仓库中的 RPM 软件包可以是由红帽官方发布的,也可以是第三方发布的,当 然也可以是自己编写的。
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
选项:
- yum(选项)(参数)
- -h:显示帮助信息;
- -y:对所有的提问都回答“yes”;
- -c:指定配置文件;
- -q:安静模式;
- -v:详细模式;
- -d:设置调试等级(0-10);
- -e:设置错误等级(0-10);
- -R:设置yum处理一个命令的最大等待时间;
- -C:完全从缓存中运行,而不去下载或者更新任何头文件。
2.2 yum源配置
2.2.1 目前yum目录
- #进入yum源目录
- cd /etc/yum.repos.d/
- #查看yum源文件
- ls –l
2.2.2 更改阿里云的yum源
- 1.好习惯,备份yum源
- mkdir repo_bak
- mv *.repo repo_bak/
- 2.下载阿里云repo文件
- wget http://mirrors.aliyun.com/repo/Centos-7.repo
- 3.清空yum缓存并且生成新的yum缓存
- yum clean all
- yum makecache
- 4.安装软件扩展源
- yum install -y epel-release
- yum repolist all 列出所有仓库
- yum list all 列出仓库所有软件包
- yum info 软件包名 查看软件包信息
- yum install 软件包名 安装软件包
- yum reinstall 软件包名 重新安装软件包
- yum update 软件包名 升级软件包
- yum remove 软件包名 移除软件包
- yum clean all 清楚所有仓库缓存
- yum check-update 检查可以更新的软件包
- yum grouplist 查看系统中已安装的软件包
- yum groupinstall 软件包组 安装软件包组
3.以python部署为例说明编译安装
3.1 centos中安装python的 多种方式
- yum一键安装
- RPM包安装(太麻烦,不推荐)
- 下载源码包,进行编译安装(今天的安装方式)
3.2 python安装
3.2.1 下载python3的源码包
3.2.2 下载python3编译的依赖包
- 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 解压缩源码包
- tar -zxvf Python-3.6.6.tgz
3.2.4 编译且安装
- 1.切换到源码包目录
- cd Python-3.6.6
- 2. ls或者ll查看目录下文件源码包内容
- 3.释放编译文件
- ./configure --prefix=/opt/python36
- 4.编译与安装
- make && make install
- 编译安装,此步才会最终生成 /opt/python36/
注意:在上述几步中,一定要在Python-3.6.6目录下安装!在上述几步中,一定要在Python-3.6.6目录下安装!在上述几步中,一定要在Python-3.6.6目录下安装!进入/opt目录查看python36文件夹,我们要的python3都在这里了
3.2.5 更改linux的path变量,添加python3
- echo $PASH
- /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
- vim ~/.bash_profile # 用户环境变量控制文件
- vim /etc/profile # 系统环境变量控制文件
- 一定要将python3的目录放在第一位!!!
- 一定要将python3的目录放在第一位!!!
- 一定要将python3的目录放在第一位!!!
- 为了永久生效path设置,添加到/etc/profile全局环境变量配置文件中
- vim /etc/profile
- 在最后一行加入:
- PATH=/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
- 重载配置文件/etc/profile
- source /etc/profile
3.2.6 剩下就需要装我们一直在使用的django模块了
- pip3 install -i https://pypi.douban.com/simple django==2.1.7
- 配置django,把django项目跑起来
- (1) 创建一个django项目django-admin startproject qishi
- (2) 配置settings.py文件,将ALLOW_HOST=[]改为ALLOW_HOST=["*"]
- (3) 创建一个app python3 manage.py startapp app01
- (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) 创建俩个虚拟环境:
- virtualenv --no-site-packages --python=python3 test1
- virtualenv --no-site-packages --python=python3 test2
注:no-site-packages意味着虚拟环境为纯粹环境,只有最基本的俩个包,建立的虚拟环境就会在当前目录建立
(4)激活虚拟环境
- 1.相对路径
- cd /opt/virutal_env/test1/bin
- source activate
- 2.绝对路径
- source /opt/virtual_env/test2/bin/activate
激活后前置名称更改为虚拟环境的名称
激活的虚拟环境只有以上三个包
(5)分别在俩个虚拟环境中创建django项目
- #1.分别进入两个虚拟环境,分别创建django项目,但是都在/opt/knight3目录下
- 进入test1虚拟环境下
- source /opt/virtual_env/xiangge/bin/activate
- cd /opt/qishi3dj
- django-admin startproject qishi3_1
- 再进入test2虚拟环境下
- source /opt/virtual_env/bangzheng/bin/activate
- cd /opt/qishi3dj
- django-admin startproject qishi3_2
启动虚拟机
启动后的页面,django1.x和2.x版本的
(6)退出虚拟环境:deactivate
4.2 virtualenvwrapper模块
virtualenv这个工具太麻烦了,命令太长, 不容易记住,管理虚拟环境特别麻烦, 容易弄错目录,容易找不到虚拟环境,最终导致得重装系统或者重装虚拟环境,现在就有一个可以统一管理的模块
(1)安装软件:virtualenvwrapper,一定要安装在python解释器目录下,不能安装在虚拟机上!
- pip3 install virtualenvwrapper -i https://pypi.douban.com/simple
(2)设置linux的用户配置文件配置virtualenvwrapper
- vim ~/.bashrc
- WORKON_HOME=~/Envs # 设置virtualenv的统一管理目录, 以后自动下载的虚拟环境,全部都放在这,这里可以更改目录
- VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' # 添加virtualenvwrapper的参数,生成干净隔绝的环境
- VIRTUALENVWRAPPER_PYTHON=/opt/python347/bin/python3 # 指定python解释器的本体(注意此路径随不同的linux环境改变而改变)
- source /opt/python34/bin/virtualenvwrapper.sh # 执行virtualenvwrapper安装脚本
- 注意: 后面的注释你得知道,但是不能放到配置文件里面去,不然会报错!!!
- 注意: 后面的注释你得知道,但是不能放到配置文件里面去,不然会报错!!!
- 注意: 后面的注释你得知道,但是不能放到配置文件里面去,不然会报错!!!
- 真实实验环境配置文件如下:
- 注:要根据实际的情况
- WORKON_HOME=~/Envs
- VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3
- source /opt/python36/bin/virtualenvwrapper.sh
(3)重新加载~/.bashrc文件:source ~/.bashrc
(4) 登出用户,重新再登录
(5)创建一个虚拟环境,创建成功自动进入虚拟机
- mkvirtualenv test1
- mkvirtualenv test2
- mkvirtualenv test3
(6) 激活一个虚拟环境
- workon test1
- workon test2
- workon test3
(7) 删除一个虚拟环境
- rmvirtualenv test1
- rmvirtualenv test2
- rmvirtualenv test3
(8)退出一个虚拟环境
deactivate
5.安装MariaDB
5.1 添加MariaDB的yum仓库
由于官网的MariaDB版本要比阿里云的版本要高,所以我们应该优先使用官方的版本
- # 编辑创建mariadb.repo仓库文件
- vi /etc/yum.repos.d/MariaDB.repo
- 2、添加repo仓库配置
- [mariadb]
- name=MariaDB
- baseurl=http://yum.mariadb.org/10.1/centos7-amd64
- gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
- gpgcheck=1
5.2 在 CentOS 7 中安装 MariaDB
- 3、当 MariaDB 仓库地址添加好后,你可以通过下面的一行命令轻松安装 MariaDB。
- yum install MariaDB-server MariaDB-client -y
- # 由于官方的下载网速太慢,我们教学就使用阿里云低版本的mariadb数据库
- # 删除或者重命名刚才创建的Mariadb.repo文件
- cd /etc/yum.repos.d
- mv Mariadb.repo Mariadb.repo.bak
- # 然后一条命令安装Mariadb
- yum install mariadb-server mariadb -y
5.3 启动mariadb相关命令
- mariadb数据库的相关命令是:
- systemctl start mariadb #启动MariaDB
- systemctl stop mariadb #停止MariaDB
- systemctl restart mariadb #重启MariaDB
- systemctl enable mariadb #设置开机启动
启动后正常使用mysql:systemctl start mariadb
5.4 初始化mariadb
- mysql_secure_installation
5.5 解决sql的中文显示问题
- 1 停掉mariadb服务
- systemctl stop mariadb
- 2 修改配置文件vim /etc/my.cnf
进入mysql,基本配置结束,剩下就是SQL语句了!
5.6 启动失败时的解决办法
Mariadb启动报错Job for mariadb.service failed because the control process exited...
MariaDB重启后,执行 systemctl start mariadb
启动报错
- 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的日志文件,查看错误原因。
- cd /var/log/mariadb/
- vi mariadb.log
- #即可查看具体的错误信息!
a
Linux-基础学习(二)-基本部署的更多相关文章
- Linux基础学习-使用Squid部署代理缓存服务
使用Squid部署代理缓存服务 Squid是Linux系统中最为流行的一款高性能代理服务软件,通常作为Web网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存.Squid服务配置简单. ...
- Linux基础学习二
新建分区:fdisk /dev/sda(a代表第一块硬盘) 建完后w保存 更新分区表:partprobe mkfs.ext4 /dev/sdb{1..3} : 格式 ...
- Linux基础学习系列目录导航
Linux基础学习-通过VM安装RHEL7.4 Linux基础学习-命令行与图形界面切换 Linux基础学习-基本命令 Linux基础学习-RHEL7.4之YUM更换CentOS源 Linux基础学习 ...
- Python基础学习二
Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...
- Linux基础练习题(二)
Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...
- 运维之Linux基础(二)
运维之Linux基础(二) 1. file 命令基期用法 2. 文件系统 Linux的文件系统结构是树状结构,所有的文件都在/root跟目录下 /boot:系统启动相关的文件, 如:内核.initrd ...
- linux基础学习之软件安装以及常用命令
linux基础学习之软件安装以及常用命令 调用中央仓库: yum install wget 然后下载nodejs: wget https://nodejs.org/dist/v10.14.2/node ...
- Python入门基础学习 二
Python入门基础学习 二 猜数字小游戏进阶版 修改建议: 猜错的时候程序可以给出提示,告诉用户猜测的数字偏大还是偏小: 没运行一次程序只能猜测一次,应该提供多次机会给用户猜测: 每次运行程序,答案 ...
- linux基础学习路线&review
linux基础学习网址: https://www.runoob.com/linux/linux-tutorial.html 比较重点的是这个启动过程的介绍学习:https://www.runoob.c ...
- Linux 基础学习1
目录 Linux 基础学习 用户登录 终端 交互式接口 bash 修改ssh连接慢的步骤 命令提示符 显示提示符格式 命令 别名 命令格式 获取命令的帮助信息 man bash 快捷键 tab 键 引 ...
随机推荐
- dotnet core使用开源组件FastHttpApi进行web应用开发
FastHttpApi相对于asp.net mvc来说有着更轻量和性能上的优势,性能上面就不在这里介绍了(具体可查看 https://github.com/IKende/FastHttpApi).在这 ...
- shell高级特性-4
1.shell模块 shell脚本中可以加载配置文件或调用已经完成函数或脚本. a.加载配置文件 新建配置文件config,插入以下代码: reboot_mode=True 在同一路径下,新建文件mo ...
- Koa 框架常用知识点整理
简介 Koa 就是一种简单好用的 Web 框架.它的特点是优雅.简洁.表达力强.自由度高.本身代码只有1000多行,所有功能都通过插件实现. 学前准备 检查Nodejs版本 打开cmd命令行窗口nod ...
- leetcode — single-number
/** * Source : https://oj.leetcode.com/problems/single-number/ * * * Given an array of integers, eve ...
- linux为什么不可以添加硬链接
假设有个文件夹1 文件夹1里面还有个文件夹2 文件夹2里面还有个文件夹3 然后发现哎呀直接文件夹3放到文件夹1下就行了访问多方便. 也就是文件夹1下有文件夹2和文件夹3,然后问题就来了文件夹1下的文件 ...
- LeetCode专题-Python实现之第14题:Longest Common Prefix
导航页-LeetCode专题-Python实现 相关代码已经上传到github:https://github.com/exploitht/leetcode-python 文中代码为了不动官网提供的初始 ...
- .NET Core中Object Pool的简单使用
前言 复用,是一个重要的话题,也是我们日常开发中经常遇到的,不可避免的问题. 举个最为简单,大家最为熟悉的例子,数据库连接池,就是复用数据库连接. 那么复用的意义在那里呢? 简单来说就是减少不必要的资 ...
- SpringBoot整合系列-整合H2
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9959855.html SpringBoot整合H2内存数据库 一般我们在测试的时候习惯于 ...
- SQL Server分页存储过程通用存储过程
CREATE proc [dbo].[p_paging]@tableName varchar(8000), --表名.视图名@indexCol varchar(50) = 'id', ...
- 零基础学Python--------第8章 模块
第8章 模块 8.1 模块概述 模块的英文是Modules,可以认为是一盒(箱)主题积木,通过它可以拼出某一个主题的东西.这与第6章介绍的函数不同,一个函数相当于一块积木,而一个模块中可以包括很多函数 ...