0%

禁用/停止自带的firewalld服务

1
2
3
4
5
6
7
firewall-cmd --state                   # 查看默认防火墙状态,关闭后显示not running,开启后显示running
yum install -y firewalld # 安装firewalld
systemctl start firewalld.service # 开启防火墙
systemctl stop firewalld.service # 关闭防火墙
systemctl enable firewalld.service # 允许firewall开机启动
systemctl disable firewalld.service # 禁止firewall开机启动
# 如出现"Failed to start firewalld.service: Unit is masked"错误,执行"systemctl unmask firewalld.service"

安装iptable iptable-service

1
2
3
4
service iptables status          # 先检查是否安装了iptables
yum install -y iptables # 安装iptables
yum update iptables # 升级iptables
yum install iptables-services # 安装iptables-services

设置现有规则

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
iptables -L -n                                                       # 查看iptables现有规则
iptables -P INPUT ACCEPT # 允许所有
iptables -F # 清空所有默认规则
iptables -X # 清空所有自定义规则
iptables -Z # 所有计数器归0
iptables -A INPUT -i lo -j ACCEPT # 允许来自于lo接口的数据包(本地访问)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 开放22端口(SSH)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT # 开放21端口(FTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 开放80端口(HTTP)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 开放443端口(HTTPS)
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT # 允许ping
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # 允许接受本机请求之后的返回数据RELATED,是为FTP设置的
iptables -P INPUT DROP # 其他入站一律丢弃
iptables -P OUTPUT ACCEPT # 所有出站一律允许
iptables -P FORWARD DROP # 所有转发一律丢弃

其他规则设定

1
2
3
iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT    # 如果要添加内网ip信任(接受其所有TCP请求)
iptables -I INPUT -s ***.***.***.*** -j DROP # 要封停一个IP,使用下面这条命令:
iptables -D INPUT -s ***.***.***.*** -j DROP # 要解封一个IP,使用下面这条命令:

保存规则设定

1
service iptables save    # 保存上述规则

开启iptables服务

1
2
3
4
5
systemctl disable iptables.service   # 禁用iptables服务
systemctl enable iptables.service # 注册iptables服务
systemctl start iptables.service # 开启服务
systemctl stop iptables.service # 停止服务
systemctl status iptables.service # 查看状态

映射端口(如将mysql默认的3306端口映射成1306对外提供服务)

1
2
3
iptables -t mangle -I PREROUTING -p tcp --dport 1306 -j MARK --set-mark 883306
iptables -t nat -I PREROUTING -p tcp --dport 1306 -j REDIRECT --to-ports 3306
iptables -I INPUT -p tcp --dport 3306 -m mark --mark 883306 -j ACCEPT

选项说明

  • tar [主选项+辅选项] 文件或目录。
  • 主选项是必要的,它告诉tar要做什么事情。
  • 辅选项是可选的。

主选项

1
2
3
4
5
-x 从档案文件中释放文件。
-c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。
-r 把要存档的文件追加到档案文件的末尾。例如用户已经做好备份文件,又发现还有一个目录或是一些文件忘 记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。
-t 列出档案文件的内容,查看已经备份了哪些文件。
-u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。

辅选项

1
2
3
4
5
6
7
8
9
-j 代表使用‘bzip2’程序进行文件的压缩tar.bz2
-z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩tar.gz
-v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。
-b 该选项是为磁带机设定的,其后跟一数字,用来说明区块的大小,系统预设值为20(20×512 bytes)。
-f 使用档案文件或设备,这个选项通常是必选的。
-k 保存已经存在的文件。例如把某个文件还原,在还原的过程中遇到相同的文件,不会进行覆盖。
-m 在还原文件时,把所有文件的修改时间设定为。
-M 创建多卷的档案文件,以便在几个磁盘中存放。
-w 每一步都要求确认。

tar包的创建

1
2
3
tar -cvf file.tar file1 file2
tar -zcvf file.tar.gz file1 file2
tar -jcvf file.tar.bz2 file1 file2

tar包的查看

1
2
3
tar -tvf file.tar
tar -ztvf file.tar.gz
tar -jtvf file.tar.bz2

tar包的释放

1
2
3
tar -xvf file.tar
tar -zxvf file.tar.gz
tar -jxvf file.tar.bz2

忽略指定文件的改动

1
2
3
4
5
6
7
8
# 忽略 .htaccess 文件的改动
git update-index --assume-unchanged .htaccess

# 取消忽略
git update-index --no-assume-unchanged .htaccess

# 找出被忽略的文件
git ls-files -v | grep '^h\ '

配置换行符自动替换

1
git config --global core.autocrlf false

composer全局安装php-cs-fixer

1
composer global require friendsofphp/php-cs-fixer

新建.php_cs文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php

$finder = PhpCsFixer\Finder::create()
->in(__DIR__)
->exclude('public/static')
->exclude('public/upload')
->exclude('vendor');

$rules = [
'@PSR1' => true,
'@PSR2' => true,
'@PhpCsFixer' => true,
// 数组定义语法短括号
'array_syntax' => [
'syntax' => 'short',
],
// 二进制运算符应按配置包含在空格中
'binary_operator_spaces' => [
'default' => 'single_space',
],
// .连接符两边空格
'concat_space' => [
'spacing' => 'one',
],
// 删除多余的空行
'no_extra_blank_lines' => [
'tokens' => ['break', 'case', 'continue', 'curly_brace_block', 'default', 'extra', 'parenthesis_brace_block', 'return', 'square_brace_block', 'switch', 'throw', 'use', 'useTrait', 'use_trait'],
],
// 必须以空行开头的语句列表
'blank_line_before_statement' => [
'statements' => [],
],
// 类的属性方法必须用一个空行分隔
'class_attributes_separation' => [
'elements' => ['const', 'method', 'property'],
],
// 在结束分号之前禁止多行空格或将分号移动到新行
'multiline_whitespace_before_semicolons' => [
'strategy' => 'no_multi_line',
],
// 分号后修复空格
'space_after_semicolon' => [
'remove_in_empty_for_expressions' => true,
],
// 将双引号转换为简单字符串的单引号
'single_quote' => [
'strings_containing_single_quote_chars' => true,
],
// 只有一行实际内容的单行注释和多行注释应使用//语法。
'single_line_comment_style' => [
'comment_types' => ['hash'],
],
];

return PhpCsFixer\Config::create()
->setRiskyAllowed(true)
->setFinder($finder)
->setRules($rules)
->setCacheFile(__DIR__ . '/runtime/.php_cs.cache');

退出vi及保存文件

1
2
3
4
5
6
:w filename # 以指定的文件名filename保存
:wq # 存盘并退出vi
:q! # 不存盘强制退出vi
:set nu # 显示行号
10G # 转到指定行,例如10G
:2,9d # 删除指定行,例如2,9d删除第2到第9行

查找字符

  • 「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
  • 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

删除

  • 「x」:每按一次,删除光标所在位置的”后面”一个字符。
  • 「#x」:例如,「6x」表示删除光标所在位置的”后面”6个字符。
  • 「X」:大写的X,每按一次,删除光标所在位置的”前面”一个字符。
  • 「#X」:例如,「20X」表示删除光标所在位置的”前面”20个字符。
  • 「dd」:删除光标所在行。
  • 「#dd」:从光标所在行开始删除#行

移动光标

  • vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格
  • 按「ctrl」+「b」:屏幕往”后”移动一页
  • 按「ctrl」+「f」:屏幕往”前”移动一页
  • 按「ctrl」+「u」:屏幕往”后”移动半页
  • 按「ctrl」+「d」:屏幕往”前”移动半页
  • 按数字「0」:移到文章的开头
  • 按「G」:移动到文章的最后
  • 按「$」:移动到光标所在行的”行尾”
  • 按「^」:移动到光标所在行的”行首”
  • 按「w」:光标跳到下个字的开头
  • 按「e」:光标跳到下个字的字尾
  • 按「b」:光标回到上个字的开头
  • 按「#l」:光标移到该行的第#个位置,如:5l,56l

权限说明

  • 网站根目录权限遵循
  • 文件644,文件夹755 ,权限用户和用户组www,其余文档777权限是不正常的
  • 如出现文件权限问题时,请执行下面3条命令:
1
2
3
chown -R www.www /data/wwwroot/
find /data/wwwroot/ -type d -exec chmod 755 {} \;
find /data/wwwroot/ -type f -exec chmod 644 {} \;

云主机安全组端口开放3306端口

打开iptables 3306端口

1
2
3
4
5
6
7
# centos
iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
service iptables save # 保存iptables规则

# ubuntu
iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
iptables-save > /etc/iptables.up.rules # 保存iptables规则

数据库授权

1
2
3
4
5
6
7
8
9
10
11
# MySQL8.0版本
mysql -uroot -p
MySQL [(none)]> create user db_user@'%' identified by 'db_pass'; # 创建用户
MySQL [(none)]> grant all privileges on db_name.* to db_user@'%' with grant option; # 授权
MySQL [(none)]> exit; # 退出数据库控制台,特别注意有分号

# 其余MySQL版本
mysql -uroot -p
MySQL [(none)]> grant all privileges on db_name.* to db_user@'%' identified by 'db_pass'; # 授权
MySQL [(none)]> flush privileges;
MySQL [(none)]> exit; # 退出数据库控制台,特别注意有分号

撤销授权

1
2
3
mysql -uroot -p
MySQL [(none)]> revoke all on *.* from db_user@localhost; # 撤销授权
MySQL [(none)]> exit; # 退出数据库控制台,特别注意有分号

安装并配置必要的依赖项

1
2
3
4
5
6
7
8
9
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
### 安装Postfix以发送通知电子邮件
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

配置yum源

1
2
3
4
5
6
vim /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

更新本地yum缓存

1
sudo yum makecache

安装GitLab社区版

1
2
sudo yum install -y gitlab-ce          # 安装最新版
sudo yum install -y gitlab-ce-x.x.x # 安装指定版本

配置域名并启动

1
2
3
4
vi /etc/gitlab/gitlab.rb
# 修改为自己的域名
external_url 'http://192.168.50.233:9090'
gitlab-ctl reconfigure

GitLab常用命令

1
2
3
4
5
6
7
8
sudo gitlab-ctl start                             # 启动所有 gitlab 组件;
sudo gitlab-ctl stop # 停止所有 gitlab 组件;
sudo gitlab-ctl restart # 重启所有 gitlab 组件;
sudo gitlab-ctl status # 查看服务状态;
sudo gitlab-ctl reconfigure # 启动服务;
sudo vim /etc/gitlab/gitlab.rb # 修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab;
sudo gitlab-ctl tail # 查看日志;