概述
Centos7运维部署
=====================
# 1.更新系统
- `yum -y update`
升级所有包同时也升级软件和系统内核
- `yum -y upgrade`
只升级所有包,不升级软件和系统内核
#### 实验分别测试 yum -y upgrade和yum -y update
##### 升级前
系统版本 | centos5.5
----|------
内核版本 | 2.6.18-194.el5
升级前做过简单配置文件修改
##### yum -y upgrade 升级后
系统版本 | centos5.7
----|------
内核版本 | 2.6.18-194.el5
##### yum -y update 升级后
系统版本 | centos5.7
----|------
内核版本 | 2.6.18-238.el5
# 2.配置vim编辑器
### 设置 Vim编辑环境 配置 有两种方式:
- 1.是在`/etc/vimrc` 进行设置,这种设置方法会作用与所有登录到`Linux环境`下的用户。不建议使用。
- 2.在用户登录的 `~ `目录下创建一个` .vimrc`文件,在其中进行自己习惯的编程环境的设置,这样当别的用户使用实并不互相影响。
具体方法:
在文件中输入:
```
set nu // 这是设置显示行号
set showmode //设置在命令行界面最下面显示当前模式等。
set ruler // 在右下角显示光标所在的行数等信息
set autoindent // 设置每次单击Enter键后,光标移动到下一行时与上一行的起始字符对齐
syntax on // 即设置语法检测,当编辑C或者Shell脚本时,关键字会用特殊颜色显示
...
```
# 3.防火墙设置
### CentOS7默认的防火墙不是iptables,而是firewalle.
### 安装iptable iptable-service
- 1.先检查是否安装了iptables
`service iptables status`
- 2.安装iptables
`yum install -y iptables`
- 3.升级iptables
`yum update iptables`
- 4.安装iptables-services
`yum install iptables-services`
### 禁用/停止自带的firewalld服务
- 1.停止firewalld服务
`systemctl stop firewalld`
- 2.禁用firewalld服务
`systemctl mask firewalld`
### 设置规则
- 1.查看iptables现有规则
`iptables -L -n`
- 2.先允许所有,不然有可能会杯具
`iptables -P INPUT ACCEPT`
- 3清空所有默认规则
`iptables -F`
- 4清空所有自定义规则
`iptables -X`
- 5所有计数器归0
`iptables -Z`
- 6保存上述规则
`service iptables save`
### 开启iptables服务
```
注册iptables服务
相当于以前的chkconfig iptables on
systemctl enable iptables.service
开启服务
systemctl start iptables.service
查看状态
systemctl status iptables.service
```
### 解决vsftpd在iptables开启后,无法使用被动模式的问题
1.首先在/etc/sysconfig/iptables-config中修改或者添加以下内容
#### 添加以下内容,注意顺序不能调换
```
IPTABLES_MODULES="ip_conntrack_ftp"
IPTABLES_MODULES="ip_nat_ftp"
```
#### 重新设置iptables设置
`iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT`
### 命令行配置
~~~
#!/bin/bash
iptables -P INPUT ACCEPT
iptables -F
iptables -X
iptables -Z
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
service iptables save
systemctl restart iptables.service
~~~
备注:存放目录`/etc/sysconfig/iptables`
### 编辑配置
vim /etc/sysconfig/iptables
```
# Generated by iptables-save v1.4.7 on Sat Mar 18 11:09:29 2017
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [10:1080]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 953 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Sat Mar 18 11:09:29 2017
```
# 4.解压命名
~~~
(1)、*.tar 用 tar –xvf 解压
(2)、*.gz 用 gzip -d或者gunzip 解压
(3)、*.tar.gz和*.tgz 用 tar –xzf 解压
(4)、*.bz2 用 bzip2 -d或者用bunzip2 解压
(5)、*.tar.bz2用tar –xjf 解压
(6)、*.Z 用 uncompress 解压
(7)、*.tar.Z 用tar –xZf 解压
(8)、*.rar 用 unrar e解压
(9)、*.zip 用 unzip 解压
~~~
```
yum install zip unzip
```
# 5.传输文件
### 自定义scp命令
- `./scp.exp ``./local_file` `user@host:/xx/yy/`
- 编辑`vim scp.exp`替换12行中set passwd `123456`
- 需要先安装 `expect`,
### Zmodem传输
```
yum -y install lrzsz
```
### sftp命令
sftp 是一个交互式文件传输程式。它类似于 ftp, 但它进行加密传输,比FTP有更高的安全性。
- 1.常用登陆方式:
```
格式:sftp @
通过sftp连接,端口为默认的22,指定用户。
```
- 2.查看sftp支持的命令
```
使用help命令,查看支持的命令,如:
sftp>help
(其中命令前面有“l”表示本地执行,其他表示在所登录的远程主机上面执行)
```
- 3.基本的使用
```
sftp主要是用来传输文件的,包括上传文件(从本机到远程主机) ,下载文件(从远程主机到本机)。
(1)文件下载
get [-Ppr] remote [local]
如:get test.cpp ./Project/
将远程当前目录下的文件test.cpp下载到本地当前目录的Project文件夹中。
(2)文件上传
put [-Ppr] local [remote]
如:put /home/liu/Software/helloworld.c /root/blog/
将本地/home/liu/Software/目录下的ios文件传送到远程登陆主机的/root/blog/目录下。
(3)其他命令
可以使用命令还是有几个的,如ls、lls;cd、lcd;pwd、lpwd等。具体查看help输出吧。
```
# 6.数据库mysql操作
### 安装mysql
Here is your custom MariaDB YUM repository entry for CentOS. Copy and paste it into a file under `/etc/yum.repos.d/ `(we suggest naming the file `MariaDB.repo` or something similar).
```
# MariaDB 10.1 CentOS repository list - created 2017-03-08 06:38 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
```
After the file is in place, install MariaDB with:
```
sudo yum install MariaDB-server MariaDB-client
```
### 配置msyql
#### 修改本地root用户密码,并开放root远程访问权限
- `set password for root@localhost = password('123456');`
- `grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;`
- `FLUSH PRIVILEGES;`
```
# systemctl start mariadb
# systemctl enable mariadb
# systemctl status mariadb
```
# 7.设置固定IP
参考链接地址:
# 8.配置Java开发环境
* 1.压缩jdk目录并上传`jdk.zip`文件到服务器`/root`目录,必须为`/root`
* 2.解压:`unzip jdk.zip `
* 3.跳入jdk目录:`cd jdk`
* 4.添加权限:`chmod +x AutoInstallJDK.sh`
* 5.执行配置文件:`./AutoInstallJDK.sh`
# 9.配置tomcat
* 1.压缩tomcat目录并上传`tomcat.zip`文件到服务器`/root`目录,必须为`/root`
* 2.解压:`unzip tomcat.zip `
* 3.跳入jdk目录:`cd tomcat`
* 4.添加权限:`chmod +x *.sh`
* 5.执行配置文件:`./AutoInstallTomcat.sh`
### 实际热部署
* 一键发布命令格式:`./deploy.sh 项目war包` 其中`项目war包`实际存放目录,具体无限制
##### 参考例子:
```
cd /usr/local/tomcat/bin
./deploy.sh /root/test.war # 一般我们上传到root下
```
说明:deploy.sh会先清空tomcat下的ROOT目录,再将指定的war包加压至ROOT目录,最后执行restart.sh重启tomcat。
* 一键需重启命令:`./restart.sh` 或 `./restart.sh -v` (参数-v表示启动时打印tomcat启动日志)
##### 参考例子:
```
cd /usr/local/tomcat/bin
./restart.sh
```
说明:restart.sh是用来重启tomcat的,如果tomcat没有启动则直接启动,如果已经启动就先shutdown再启动,如果shutdown之后3s没有停掉tomcat进程,则kill掉原来的进程再启动。
#### 解决tomcat启动慢
```
1.在Tomcat环境中解决
可以通过配置JRE使用非阻塞的Entropy Source。
在catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom 即可。
2.在JVM环境中解决(*实测,真实好使)
打开$JAVA_PATH/jre/lib/security/java.security这个文件,找到下面的内容:
securerandom.source=file:/dev/urandom
替换成
securerandom.source=file:/dev/./urandom
```
# 10.忘记密码找回
### linux单用户找回
```
第一步:
1.开机启动按e进入CRGB引导界面
2.选择kernel行,按e键,回车
3.光标移动最后,输入1
4.按b键盘引导系统
第二步:
1.执行passwd命令,重新设置密码
```
### mysql管理员密码
```
1.vim /etc/mysql.cnf
添加skip-grant-tables
2.启动mysql并修改密码
3.修改完毕注释mysql.cnf 添加skip-grant-tables
```
# 11.Git操作指南
![git](./images/0.jpeg)
## Git的基础图解
### Git 图解剖析
git中文件内容并没有真正存储在索引(.git/index)或者提交对象中,而是以blob的形式分别存储在数据库中(.git/objects),并用SHA-1值来校验。 索引文件用识别码列出相关的blob文件以及别的数据。对于提交来说,以树(tree)的形式存储,同样用对于的哈希值识别。树对应着工作目录中的文件夹,树中包含的 树或者blob对象对应着相应的子目录和文件。每次提交都存储下它的上一级树的识别码。
如果用detached HEAD提交,那么最后一次提交会被the reflog for HEAD引用。但是过一段时间就失效,最终被回收,与git commit --amend或者git rebase很像。
git 模型可以抽象为 远程仓库——remote, 本地三级仓库: level1——working directory level2——stage(index) level3——repository(History)
git 各个命令可以理解为在各个仓库间转移数据,各个命令对应对每个仓库输入输出。
![](./images/1.png)
便于记忆可以简单分为 低level输入和 高level输入, 注意各level并不一定是相邻的level间转移,可以跨level转移,通过git命令的参数选项来实现,
如常见的 git checkout git reset git commit
| | 低level输入 | 高level 输入 |
|:-------------|:-------------|:-----|
| working directory | 手工创建 | git checkout/git stash |
| stage(index) | git add | git reset |
| History(repository) | git commit | git pull |
| remote | git push | - |
根据上述表格,结合git命令各种参数的结合,可以数据在各仓库间的转移,
需要注意的是不论参数如何变化,, 除了git reset 外,上述各命令目的仓库按照如上表所示是确定的,参数和选项来决定数据的来源
## 基本用法
![](./images/2.jpg)
上面的四条命令在工作目录、暂存目录(也叫做索引)和仓库之间复制文件。
- git add files 把当前文件放入暂存区域。
- git commit 给暂存区域生成快照并提交。
- git reset -- files 用来撤销最后一次git add files,你也可以用git reset 撤销所有暂存区域文件。(操作对象是HEAD)
- git checkout -- files 把文件从暂存区域复制到工作目录,用来丢弃本地修改。(目的是working Directory)
你可以用 git reset -p, git checkout -p, or git add -p进入交互模式。
也可以跳过暂存区域直接从仓库取出文件或者直接提交代码, 如下
![](./images/3.jpg)
- git commit -a 相当于运行 git add 把所有当前目录下的文件加入暂存区域再运行。git commit.
- git commit files 进行一次包含最后一次提交加上工作目录中文件快照的提交。并且文件被添加到暂存区域。
- git checkout HEAD -- files 回滚到复制最后一次提交。
![](./images/4.jpg)
### diff
有许多种方法查看两次提交之间的变动。下面是一些示例。
本质上就是在前言中表述的4个level中任意指定2个仓库进行比较
![](./images/5.jpg)
### commit
提交时,git用暂存区域的文件创建一个新的提交,并把此时的节点设为父节点。然后把当前分支指向新的提交节点。下图中,当前分支是master。 在运行命令之前,master指向ed489,提交后,master指向新的节点f0cec并以ed489作为父节点
![](./images/6.jpg)
下图中,在master分支的祖父节点maint分支进行一次提交,生成了1800b。 这样,maint分支就不再是master分支的祖父节点。此时,合并 (或者 衍合) 是必须的。
![](./images/7.jpg)
如果想更改一次提交,使用 git commit --amend。git会使用与当前提交相同的父节点进行一次新提交,旧的提交会被取消
![](./images/8.jpg)
### checkout
checkout命令用于从历史提交(或者暂存区域)中拷贝文件到工作目录,也可用于切换分支。
当给定某个文件名(或者打开-p选项,或者文件名和-p选项同时打开)时,git会从指定的提交中拷贝文件到暂存区域和工作目录。比如,git checkout HEAD~ foo.c会将提交节点HEAD~(即当前提交节点的父节点)中的foo.c复制到工作目录并且加到暂存区域中。(如果命令中没有指定提交节点,则会从暂存区域中拷贝内容。)
注意当前分支不会发生变化(HEAD指向原处)。
![](./images/9.jpg)
当不指定文件名,而是给出一个(本地)分支时,那么HEAD标识会移动到那个分支(也就是说,我们“切换”到那个分支了),然后暂存区域和工作目录中的内容会和HEAD对应的提交节点一致。新提交节点(下图中的a47c3)中的所有文件都会被复制(到暂存区域和工作目录中);只存在于老的提交节点(ed489)中的文件会被删除;不属于上述两者的文件会被忽略,不受影响。
![](./images/10.jpg)
如果既没有指定文件名,也没有指定分支名,而是一个标签、远程分支、SHA-1值或者是像master~3类似的东西,就得到一个匿名分支,称作detached HEAD(被分离的HEAD标识)。这样可以很方便地在历史版本之间互相切换。比如说你想要编译1.6.6.1版本的git,你可以运行git checkout v1.6.6.1(这是一个标签,而非分支名),编译,安装,然后切换回另一个分支,比如说git checkout master。然而,当提交操作涉及到“分离的HEAD”时,其行为会略有不同,详情见在下面。
![](./images/11.jpg)
### HEAD标识处于分离状态时的提交操作
当HEAD处于分离状态(不依附于任一分支)时,提交操作可以正常进行,但是不会更新任何已命名的分支。(你可以认为这是在更新一个匿名分支。)
![](./images/12.jpg)
一旦此后你切换到别的分支,比如说master,那么这个提交节点(可能)再也不会被引用到,然后就会被丢弃掉了。注意这个命令之后就不会有东西引用2eecb。
![](./images/13.jpg)
但是,如果你想保存这个状态,可以用命令git checkout -b name来创建一个新的分支。
![](./images/14.jpg)
* 另外, checkout还有还有如下使用
* 当执行 "git checkout ." 或者 "git checkout -- " 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。
* 当执行 "git checkout HEAD ." 或者 "git checkout HEAD " 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改 动。
* git checkout -f =等价=> git checkout HEAD . 特别注意,当git checkout -f 不带任何的commit 和文件时,会彻底删除 index 和 working tree未提交内容。
### reset
reset命令把当前分支指向另一个位置,并且有选择的变动工作目录和索引。也用来在从历史仓库中复制文件到索引,而不动工作目录。
如果不给选项,那么当前分支指向到那个提交。如果用--hard选项,那么工作目录也更新,如果用--soft选项,那么都不变。
![](./images/15.jpg)
如果没有给出提交点的版本号,那么默认用HEAD。这样,分支指向不变,但是索引会回滚到最后一次提交,如果用--hard选项,工作目录也同样。(=== checkout )
![](./images/16.jpg)
如果给了文件名(或者 -p选项), 那么工作效果和带文件名的checkout差不多,除了索引被更新。
![](./images/17.jpg)
### merge
merge 命令把不同分支合并起来。合并前,索引必须和当前提交相同。如果另一个分支是当前提交的祖父节点,那么合并命令将什么也不做。 另一种情况是如果当前提交是另一个分支的祖父节点,就导致fast-forward合并。指向只是简单的移动,并生成一个新的提交
![](./images/18.jpg)
否则就是一次真正的合并。默认把当前提交(ed489 如下所示)和另一个提交(33104)以及他们的共同祖父节点(b325c)进行一次三方合并。
结果是先保存当前目录和索引,然后和父节点33104一起做一次新提交。
![](./images/19.jpg)
### cherry Pick
cherry-pick命令"复制"一个提交节点并在当前分支做一次完全一样的新提交。
![](./images/20.jpg)
### rebase
衍合是合并命令的另一种选择。合并把两个父分支合并进行一次提交,提交历史不是线性的。衍合在当前分支上重演另一个分支的历史,提交历史是线性的。
本质上,这是线性化的自动的cherry-pick
![](./images/21.jpg)
上面的命令都在topic分支中进行,而不是master分支,在master分支上重演,并且把分支指向新的节点。注意旧提交没有被引用,将被回收。
要限制回滚范围,使用--onto选项。下面的命令在master分支上重演当前分支从169a6以来的最近几个提交,即2c33a。
![](./images/22.jpg)
### git-fsck --lost-found (file system check) 找回丢失的对象
Verifies the connectivity and validity of the objects in the database
[找回丢失的对象]( http://gitbook.liuhui998.com/5_9.html)
### git reflog : 分支等引用变更记录管理
[Git reflog 机制](http://geeklu.com/2013/04/git-reflog)
# 安装DNS服务器
```
yum install bind-chroot bind -y
```
[DNS配置教程](http://blog.csdn.net/K_Zombie/article/details/50593743)
[DNS配置详细介绍](http://www.funet8.com/2282.html)
[bind-namedmanager安装说明](https://github.com/jethrocarr/namedmanager/wiki/Installation-Integration-Bind)
[namemanager安装指南](http://skypegnu1.blog.51cto.com/8991766/1751511/)
添加防火墙规则
vim /etc/sysconfig/iptables
```
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 953 -j ACCEPT
```
修改用户属组
`chgrp users test.log`
# 配置nginx
[nginx配置详解](http://www.cnblogs.com/fanzhidongyzby/p/5194895.html)
```
server {
listen80;
server_name 192.168.0.18;
#access_log /var/log/nginx/pro.log;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /static/ {
autoindex on;
alias /root/webapps/pro/static/;
}
error_page 500 502 503 504/50x.html;
location = /50x.html {
root html;
}
}
```
# 配置apache
局域网中无法访问到我的apache服务器,提示 `Forbidden You don’t have permission to access / on this server.`
解决办法 :
```
httpd.conf 下
AllowOverride none
#Require all denied //备注或去掉该段代码 拒绝所有请求
DocumentRoot "D:/wamp3/www"
Options +Indexes +FollowSymLinks
AllowOverride all
#Require local //关键 本地请求要去掉
```
其实就是 去掉 Require all denied 和 Require local
# 配置namedmanager整理
1.临时关闭selinux
`#setsebool -P httpd_can_network_connect 1`
2.改变文件数组
```
#chgrp named named.conf
#chown named:named /var/named/chroot/etc/named.namedmanager.conf
```
3.开起服务
`#systemctl restart named.service`
4.开机自启动
`#systemctl enable iptables.service`
5.查看hostname
```
#hostname
localhost.localdomain
```
6.下载bind时更新yum源
```
cd /etc/yum.repos.d/
# wget http://repos.amberdms.com/config/centos/6/amberdms-c6-public.repo
# wget https://repos.jethrocarr.com/config/centos/7/jethrocarr-c7-public.repo
# yum makecache
# yum -y install namedmanager-www namedmanager-bind bind-*
# yum -y install mysql mysql-server mysql-devel httpd php php-mysql
```
7.编辑:`/etc/namedmanager/config.php `
`#vim /etc/namedmanager/config-bind.php`
8.执行数据库
`#cd /usr/share/namedmanager/resources/`
`#./autoinstall.pl`
9.建立硬链接
`#ln /etc/named.namedmanager.conf /var/named/chroot/etc/named.namedmanager.conf`
10.开启定时日志并开机自启动
```
#/etc/init.d/namedmanager_logpush restart
#chkconfig --level 345 namedmanager_logpush on
```
11.设置httpd远程权限
否则出现:You don't have permission to access /namedmanager on this server.
```
#vim /etc/httpd/conf/http.conf
AllowOverride none
#Require all denied //备注或去掉该段代码 拒绝所有请求
DocumentRoot "D:/wamp3/www"
Options +Indexes +FollowSymLinks
AllowOverride all
#Require local //关键 本地请求要去掉
```
其实就是 去掉 `Require all denied` 和 `Require local`
12.配置namedmanager的web后执行检测
`php -q /usr/share/namedmanager/bind/namedmanager_bind_configwriter.php`
13.添加防火墙规则:`#vim /etc/sysconfig/iptables`
```
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 953 -j ACCEPT
```
14.CentOS 7 安裝 Nginx、PHP7、PHP-FPM
[CentOS 7 安裝 Nginx、PHP7、PHP-FPM](http://www.tuicool.com/articles/Yn6bAnn)
`yum -y install php70w-fpm php70w-cli php70w-gd php70w-mcrypt php70w-mysql php70w-pear php70w-xml php70w-mbstring php70w-pdo php70w-json php70w-pecl-apcu php70w-pecl-apcu-devel`
一键复制
编辑
Web IDE
原始数据
按行查看
历史
最后
以上就是深情橘子为你收集整理的linux中mysql回滚重演_README.md的全部内容,希望文章能够帮你解决linux中mysql回滚重演_README.md所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复