8bq

光辉岁月

Laravel基础

命令

  1. 其他

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    # 生成静态页面控制器
    php artisan make:controller StaticPagesController
    # 命名路由
    Route::get('/', 'StaticPagesController@home')->name('home');
    # 创建数据库
    php artisan make:migration create_statuses_table --create="statuses"
    # 数据库迁移
    php artisan migrate
    # 数据回滚
    php artisan migrate:rollback
    # 创建Model同时创建迁移文件
    php artisan make:model Models/Article -m
    # 创建授权策略
    php artisan make:policy UserPolicy
    # 生出数据填充文件
    php artisan make:seeder UsersTableSeeder
    # 填充数据
    php artisan db:seed
    php artisan db:seed --class=UsersTableSeeder
    # 重置+填充
    php artisan migrate:refresh --seed
  2. Artisan命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    php artisan key:generate  # 生成 App Key
    php artisan make:controller # 生成控制器
    php artisan make:model # 生成模型
    php artisan make:policy # 生成授权策略
    php artisan make:seeder # 生成 Seeder 文件
    php artisan migrate # 执行迁移
    php artisan migrate:rollback # 回滚迁移
    php artisan migrate:refresh # 重置数据库
    php artisan db:seed # 填充数据库
    php artisan tinker # 进入 tinker 环境
    php artisan route:list # 查看路由列表
    # 查看帮助
    php artisan help migrate

模板

  1. css

    1
    2
    3
    4
    5
    # 初始化样式
    yarn install --no-bin-links
    yarn add cross-env
    npm run dev
    npm run watch-poll
  2. html

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <!-- 引入public目录下的样式文件 -->
    {{ mix('css/app.css') }}
    <!-- 继承父视图 -->
    @extends('layouts.default')
    <!-- 填充父视图content块 -->
    @section('content')
    <h1>主页</h1>
    @stop
    <!-- 引入局部视图 -->
    @include('layouts._header')
    <!-- 连接 -->
    {{ route('help') }}
    <!-- 显示旧输入数据 -->
    {{ old('name') }}

路由

1
2
3
4
5
6
7
8
9
10
Route::resource('users', 'UsersController');

# 等同于下方7个方法
Route::get('/users', 'UsersController@index')->name('users.index'); # 显示所有用户列表的页面
Route::get('/users/create', 'UsersController@create')->name('users.create'); # 创建用户的页面
Route::get('/users/{user}', 'UsersController@show')->name('users.show'); # 显示用户个人信息的页面
Route::post('/users', 'UsersController@store')->name('users.store'); # 创建用户
Route::get('/users/{user}/edit', 'UsersController@edit')->name('users.edit'); # 编辑用户个人资料的页面
Route::patch('/users/{user}', 'UsersController@update')->name('users.update'); # 更新用户
Route::delete('/users/{user}', 'UsersController@destroy')->name('users.destroy'); # 删除用户

数据

1
2
3
4
5
6
7
8
9
10
11
12
13
# 一对多
# Status
public function user()
{
return $this->belongsTo(User::class);
}
# User
public function statuses()
{
return $this->hasMany(Status::class);
}
# 获取微博并排序、分页
$statuses = $user->statuses()->orderBy('created_at', 'desc')->paginate(30);

CentOS7 安装最新版git

查看是否安装了git

1
2
rpm -qa|grep git #查看
rpm -e --nodeps git #删除

安装依赖包

1
yum -y install zlib-devel perl-ExtUtils-MakeMaker asciidoc xmlto openssl-devel

安装最新版git

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
wget https://www.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz #下载
tar -zxvf git-2.9.5.tar.gz #解压缩

./configure --prefix=/usr/local/git
make && make install

cd /bin
ln -s /usr/local/git/bin/git git

cd /usr/bin
ln -s /usr/local/git/bin/git git

cd /usr/local/bin
ln -s /usr/local/git/bin/git git

cd /
git --version

Centos7 安装最新Docker

查找删除现有docker

1
2
3
4
5
# 停止docker
systemctl stop docker
yum list installed | grep docker
# 然后移除(卸载)docker
rm -rf /var/lib/docker

安装最新版docker

1
2
3
4
5
6
7
8
9
10
# 安装源
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum makecache fast
# 安装docker
yum -y install docker-ce
# 启动docker
systemctl start docker
# 开机启动
systemctl enable docker

利用WebHook实现PHP自动部署Git代码

服务器

生成公钥

1
sudo -Hu www ssh-keygen -t rsa # 请选择 “no passphrase”,一直回车下去

准备钩子文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
error_reporting(1);
$target = '路径';
$token = '密钥';
$signature = $_SERVER['HTTP_X_CODING_SIGNATURE'];
$json = file_get_contents('php://input');

if (!isFromGithub($json, $token, $signature)) {
exit('error request');
}

$cmd = "cd $target && git pull";
shell_exec($cmd);

function isFromGithub($json, $token, $signature)
{
return 'sha1=' . hash_hmac('sha1', $json, $token, false) === $signature;
}

修改git配置和保存git用户名密码

1
2
3
sudo -Hu www git config --global credential.helper store # 永久保存
sudo -Hu www git config --global user.name "Bantes"
sudo -Hu www git config --global user.email "admin@xsooo.com" # 邮箱请与conding上一致

在Coding网站

添加部署公钥

复制/home/www/.ssh/id_rsa.pub的内容并添加到部署公钥

添加hook

在Coding网站上添加hook

初始化

需要先在服务器上clone一次

1
sudo -Hu www git clone https://git.coding.net/yourname/yourgit.git /home/wwwroot/website.com/ yourgit  --depth=1

注意事项

  1. sudo使用git
  2. 使用www权限
  3. php执行权限

Mac自定义终端(Terminal)欢迎图案

配置方法
打开终端(可以command+空格键,然后输入ter自动打开终端);

1
2
输入 cd /etc;
输入 sudo pico motd;

然后将想要输入的图案或文字在终端中粘贴;

1
最后,按键:control+x ,再按y回车保存。

日志分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#查看ip
cat access_log | awk '{print $1}'

#对ip排序
cat access_log | awk '{print $1}' | sort

#打印重复行出现的次数
cat access_log | awk '{print $1}' | sort | uniq -c

#排序并统计行数
cat access_log | awk '{print $1}' | sort | uniq -c | sort -rn | wc -l
<!-- more -->
#显示访问前10
cat access_log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10

#显示指定时间以后的日志
cat access_log | awk '$4>="[19/Dec/2014:17:30:10"' access_log

#找出访问量最大的ip,并封掉
cat access_log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10
iptables -I INPUT -s 192.168.0.1 -j DROP
iptables -I INPUT -s 192.168.0.2 -j DROP

Mysql语句分析

显示哪些线程正在运行

1
show processlist;

显示了mysql如何使用索引来处理select语句以及连接表

1
explain SELECT * FROM TABLES;

捕获低效SQL语句

1
2
3
4
5
6
7
8
9
10
11
slow_query_log = 1
#这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句
<!-- more -->
long_query_time = 1
#当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短

slow_query_log_file = /tmp/m.log
#记录日志的文件名

log_queries_not_using_indexes = on
#这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快