-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsearch.xml
More file actions
268 lines (129 loc) · 64 KB
/
Copy pathsearch.xml
File metadata and controls
268 lines (129 loc) · 64 KB
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>PHP的春天-Composer</title>
<link href="/2018/06/28/php-de-chun-tian-composer/"/>
<url>/2018/06/28/php-de-chun-tian-composer/</url>
<content type="html"><![CDATA[<h4 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h4><ol><li>Composer 是 PHP 的一个依赖管理工具。就像node的npm,CentOs的yum一样,通过它我们可以简单快速的安装使用各种功能组件。</li><li>Packagist:是Composer的组件仓库,在里面我们能找到各种我们所需要的组件库。</li><li>学习直通车<br><a href="https://getcomposer.org" target="_blank" rel="noopener">官方网址</a><br><a href="http://www.phpcomposer.com" target="_blank" rel="noopener">中文网站</a><br><a href="https://packagist.org" target="_blank" rel="noopener">仓库地址</a></li></ol><h4 id="注意事项"><a href="#注意事项" class="headerlink" title="注意事项"></a>注意事项</h4><ol><li>PHP版本5.3.2+</li><li>开启openssl扩展</li></ol><h4 id="一、下载Composer"><a href="#一、下载Composer" class="headerlink" title="一、下载Composer"></a>一、下载Composer</h4><ol><li>下载网址:<a href="https://getcomposer.org/download/" target="_blank" rel="noopener">https://getcomposer.org/download/</a><br><img src="http://res.jxzl.cc/medias/article/php-de-chun-tian-composer/1.png" alt="Composer版本"></li><li>下载完成后,在composer.phar所在文件夹打开cmd,输入指令:php composer.phar,出现如下图,代表composer已经安装好了<br><img src="http://res.jxzl.cc/medias/article/php-de-chun-tian-composer/2.png" alt="Composer安装完成"></li><li>注意事项<br> 3.1 如果提示php非内部指令,请设置PHP环境变量。</li></ol><h4 id="二、Composer优化"><a href="#二、Composer优化" class="headerlink" title="二、Composer优化"></a>二、Composer优化</h4><ol><li>优化指令<pre><code> 1. 经常需要使用php composer.phar 指令 有点繁琐,可以直接设置为使用Composer指令。 2. 进入composer.phar所在文件夹打开cmd,输入指令:echo @php "%~dp0composer.phar" %*>composer.bat 回车后会发现当前文件夹会多出一个composer.bat文件,然后将该文件所在文件夹的路径加入环境变量,以后即可使用composer代替php composer.phar命令。</code></pre><img src="http://res.jxzl.cc/medias/article/php-de-chun-tian-composer/3.png" alt="Composer优化指令"></li><li>更换组件的下载地址,下载组件速度更快,目前常用有三个,推荐使用阿里云的composer源<pre><code> 1. 阿里composer源:https://mirrors.aliyun.com/composer/ 2. Laravel-china: https://packagist.laravel-china.org 3. phpcomposer: https://packagist.phpcomposer.com 4. 从上述三个常用composer源选择一个,在dos命令窗口输入如下指令进行替换源(此处使用阿里的,其他的替换对应源地址即可): composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ </code></pre></li></ol><h4 id="三、Composer常用指令"><a href="#三、Composer常用指令" class="headerlink" title="三、Composer常用指令"></a>三、Composer常用指令</h4><pre><code>1. 在当前文件夹新建composer.json文件(注意:json文件中必须使用"",不要使用''),写入以下代码{"autoload" :{ "psr-4" : { "命名空间" : "需要管理的目录相对路径" }}}2. 假设当前目录为data,里面有一个子文件为app,命名空间为app,那么应该如下图所示编写</code></pre><p><img src="http://res.jxzl.cc/medias/article/php-de-chun-tian-composer/4.png" alt="Composer.json文件"></p><pre><code>3. composer install 包名功能:首先读取文件夹下面的composer.lock文件,composer.lock文件不存在会读取文件夹下的composer.json文件,将指定的包命令后指定的包下载下来,没有指定包名,会将其中的require里面所有的依赖下载下来,需要先在composer.json文件写好require内容再使用这个指令.(一般在下载多个依赖或者进行项目初始化下载所需依赖采用这个命令)3.1 如下图所示,例如需要下载topthink/framework(这是在packagist搜索到的包名)这个包,</code></pre><p><img src="http://res.jxzl.cc/medias/article/php-de-chun-tian-composer/5.png" alt="Composer.json文件"><br> 需要现在composer.json中的require里面写好,如下图所示:<br><img src="http://res.jxzl.cc/medias/article/php-de-chun-tian-composer/6.png" alt="搜索framework包"><br> 3.2 再执行composer install topthink/framework,在当前目录下的vendor目录中就下载好了<br> <img src="http://res.jxzl.cc/medias/article/php-de-chun-tian-composer/7.png" alt="下载framework"></p><pre><code>4. composer require 包名功能: 直接下载某个包,不用手动在composer.json文件的require代码块里面添加包,直接使用此命令即可快速下载某个包,此命令执行后会自动在composer.json文件中的require代码块中添加相应的包的信息。5. composer update功能: 按照文件夹下的composer.json文件,直接更新对应包的版本到最新,一般一个已经成型的项目很少使用,推荐使用composer install。</code></pre>]]></content>
<categories>
<category> Composer </category>
</categories>
<tags>
<tag> Composer </tag>
<tag> PHP </tag>
<tag> 扩展管理 </tag>
<tag> 工具 </tag>
</tags>
</entry>
<entry>
<title>Swoole编译安装</title>
<link href="/2018/06/22/swoole-bian-yi-an-zhuang/"/>
<url>/2018/06/22/swoole-bian-yi-an-zhuang/</url>
<content type="html"><![CDATA[<h4 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h4><p> Swoole是一个面向生产环境的 PHP 异步网络通信引擎,使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升。</p><h4 id="注意事项"><a href="#注意事项" class="headerlink" title="注意事项"></a>注意事项</h4><ol><li>仅支持 Linux、FreeBSD、MacOS 三种操作系统</li><li>在Windows平台,可使用CygWin或WSL(Windows Subsystem for Linux)</li><li>Linux 内核版本 2.3.32 以上</li><li>gcc4.4 以上版本或者clang</li><li>gcc-4.8 或更高版本</li><li>make</li><li>autoconf</li><li>Swoole-1.x需要 PHP-5.3.10 或更高版本</li><li>Swoole-2.x需要 PHP-7.0.0 或更高版本</li><li><a href="https://wiki.swoole.com/wiki/page/7.html" target="_blank" rel="noopener">更多注意事项</a></li></ol><h4 id="一、准备工作"><a href="#一、准备工作" class="headerlink" title="一、准备工作"></a>一、准备工作</h4><pre><code>一台装有Linux/Unix系统的服务器,本示例中使用CentOs7。</code></pre><h4 id="二、下载Swoole源码"><a href="#二、下载Swoole源码" class="headerlink" title="二、下载Swoole源码"></a>二、下载Swoole源码</h4><pre><code>#1.在根目录新建www目录并进入www目录mkdir /wwwcd /www#2.在http://pecl.php.net/package/swoole上找到你想要下载的swoole扩展版本</code></pre><p><img src="http://res.jxzl.cc/medias/article/swoole-bian-yi-an-zhuang/1.png" alt="swoole版本"></p><pre><code>#3.使用wget指令进行下载(本示例选择2.1.1版本)wget http://pecl.php.net/get/swoole-2.1.1.tgz</code></pre><p><img src="http://res.jxzl.cc/medias/article/swoole-bian-yi-an-zhuang/2.png" alt="下载swoole"></p><h4 id="三、编译安装Swoole"><a href="#三、编译安装Swoole" class="headerlink" title="三、编译安装Swoole"></a>三、编译安装Swoole</h4><pre><code>#1.使用如下指令进行解压tar zxvf swoole-2.1.1.tgz#2.解压完成后,进入swoole-2.1.1文件夹cd swoole-2.1.1#3.依次执行如下指令进行编译安装,(此处打开了对ssl的支持,在https和wss时需要使用)phpize./configure --enable-openssl --with-php-config=/usr/bin/php-configmake && make install</code></pre><p><img src="http://res.jxzl.cc/medias/article/swoole-bian-yi-an-zhuang/3.png" alt="swoole安装完成"></p><h4 id="四、开启swoole扩展"><a href="#四、开启swoole扩展" class="headerlink" title="四、开启swoole扩展"></a>四、开启swoole扩展</h4><pre><code>#1.新建一个扩展配置文件vim /etc/php.d/swoole.ini#2.输入以下值extension=swoole.so#3.保存该配置文件</code></pre><h4 id="五、重启php-fpm-使扩展生效-如使用apache-重启httpd就好了"><a href="#五、重启php-fpm-使扩展生效-如使用apache-重启httpd就好了" class="headerlink" title="五、重启php-fpm,使扩展生效(如使用apache,重启httpd就好了)"></a>五、重启php-fpm,使扩展生效(如使用apache,重启httpd就好了)</h4><pre><code>#1.使用如下指令重启php-fpmsystemctl restart php-fpm#2.使用指令查看swoole扩展是否开启成功php -m#3.如下图所有则swoole扩展已经开启成功</code></pre><p><img src="http://res.jxzl.cc/medias/article/swoole-bian-yi-an-zhuang/4.png" alt="swoole开启成功"></p><h4 id="六、结语"><a href="#六、结语" class="headerlink" title="六、结语"></a>六、结语</h4><p>Swoole重新定义了PHP这句话在我看来说的并没有错,在这个新语言新技术层出不穷的时候,身为一个PHP开发工程师,能熟练使用Swoole是一个不错的加分项,当然针对大多数的PHP开发工程师,学习Swoole有一定的难度,它可能会改变你以前的认知,但我认为只要你能尽心学下去,它不会让你失望。</p>]]></content>
<categories>
<category> Swoole </category>
</categories>
<tags>
<tag> Swoole </tag>
<tag> 进程 </tag>
<tag> 扩展 </tag>
</tags>
</entry>
<entry>
<title>supervisor的使用</title>
<link href="/2018/06/18/supervisor-de-shi-yong/"/>
<url>/2018/06/18/supervisor-de-shi-yong/</url>
<content type="html"><![CDATA[<h4 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h4><p> Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。</p><h4 id="一、准备工作"><a href="#一、准备工作" class="headerlink" title="一、准备工作"></a>一、准备工作</h4><pre><code>一台装有Linux/Unix系统的服务器,本示例中使用CentOs7。</code></pre><h4 id="二、下载Python包管理工具"><a href="#二、下载Python包管理工具" class="headerlink" title="二、下载Python包管理工具"></a>二、下载Python包管理工具</h4><pre><code>#使用如下指令下载yum -y install python-setuptools</code></pre><h4 id="三、通过Python包管理工具下载安装Supervisor"><a href="#三、通过Python包管理工具下载安装Supervisor" class="headerlink" title="三、通过Python包管理工具下载安装Supervisor"></a>三、通过Python包管理工具下载安装Supervisor</h4><pre><code>#使用如下指令下载安装easy_install supervisor</code></pre><h4 id="四、进行相关配置"><a href="#四、进行相关配置" class="headerlink" title="四、进行相关配置"></a>四、进行相关配置</h4><pre><code>#1.新建配置文件夹mkdir /etc/supervisormkdir /etc/conf.d#2.使用命令生成配置文件echo_supervisord_conf > /etc/supervisor/supervisord.conf#3.打开/etc/supervisor/supervisord.conf,在文件尾部添加如下配置,保存[include]files=conf.d/*.conf</code></pre><h4 id="五、为需要管理的进程添加配置文件"><a href="#五、为需要管理的进程添加配置文件" class="headerlink" title="五、为需要管理的进程添加配置文件"></a>五、为需要管理的进程添加配置文件</h4><pre><code>#在conf.d目录里编写自己需要管理的进程配置文件,;为注释符号#配置文件demo,具体情况按照自己需求修改参数值,创建一个名为projectName.conf的配置文件[program: ProjectName] ; command= ; 这个参数的值是运行程序的各种指令directory= ; 命令执行的所需要在的目录autorestart=true ; 程序意外退出是否自动重启autostart=true ; 是否自动启动;进程数的数量numprocs=1;当进程数参数 numprocs为1时,process_name=%(program_name)s;当进程数参数 numprocs>=2时,process_name=%(process_num)02dprocess_name=%(program_name)s;当进程数参数 numprocs>=2时,stderr_logfile=/var/log/%(process_num)02d.err.logstderr_logfile=/var/log/ProjectName.err.log ; 错误日志文件;当进程数参数 numprocs>=2时,stderr_logfile=/var/log/%(process_num)02d.out.logstdout_logfile=/var/log/ProjectName.out.log ; 输出日志文件stopasgroup=true ; 这个东西主要用于,supervisord管理的子进程,这个子进程本身还有子进程。那么我们如果仅仅干掉supervisord的子进程的话,子进程的子进程有可能会变成孤儿进程。所以咱们可以设置可个选项,把整个该子进程的整个进程组都干掉。 设置为true的话,一般killasgroup也会被设置为true。需要注意的是,该选项发送的是stop信号默认为false。非必须设置。killasgroup=true ;同上,只不过是杀死了进程,一般和上面的一起使用user=root ; 进程执行的用户身份stopsignal=INTstartsecs=1 ; 自动重启间隔 startretries=5 ; 自动重启失败,最多重试次数</code></pre><h4 id="六、启动Supervisord"><a href="#六、启动Supervisord" class="headerlink" title="六、启动Supervisord"></a>六、启动Supervisord</h4><pre><code># 输入指令# -c 表示以指定位置的配置文件启动supervisord -c /etc/supervisor/supervisord.conf</code></pre><h4 id="七、设置Supervisord开机自动启动-Centos7系统"><a href="#七、设置Supervisord开机自动启动-Centos7系统" class="headerlink" title="七、设置Supervisord开机自动启动(Centos7系统)"></a>七、设置Supervisord开机自动启动(Centos7系统)</h4><pre><code> #1.输入如下指令 vim /usr/lib/systemd/system/supervisord.service #2.输入如下内容,保存文件 [Unit] Description=Supervisor daemon [Service] Type=forking ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf ExecStop=/usr/bin/supervisorctl shutdown ExecReload=/usr/bin/supervisorctl reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target #3.再执行如下命令 systemctl enable supervisord #4.出现以下提示说明设置成功 Created symlink from /etc/systemd/system/multi-user.target.wants/supervisord.service to /usr/lib/systemd/system/supervisord.service.</code></pre><h4 id="八、配置web管理页面"><a href="#八、配置web管理页面" class="headerlink" title="八、配置web管理页面"></a>八、配置web管理页面</h4><pre><code>#1.输入指令vi /etc/supervisor/supervisord.conf#2.找到[inet_http_server]模块,将配置前面的;注释符号删除,并修改值为实际的值[inet_http_server] ; 开启web页面访问模块port=0.0.0.0:9009 ;允许访问的ip和端口号username=root ; 设置用户名password=xm369 ; 设置密码#3.使用服务器ip地址以及端口号就能直接访问web管理页面了</code></pre><h4 id="九、常用指令"><a href="#九、常用指令" class="headerlink" title="九、常用指令"></a>九、常用指令</h4><pre><code>supervisorctl restart <application name> ;重启指定应用supervisorctl stop <application name> ;停止指定应用supervisorctl start <application name> ;启动指定应用supervisorctl restart all ;重启所有应用supervisorctl stop all ;停止所有应用supervisorctl start all ;启动所有应用supervisorctl status ;查看所有应用状态supervisorctl status <application name> ;查看指定应用状态supervisorctl reload ;重新载入新配置,启动所有应用supervisorctl update ;修改配置文件后,使用此命令进行更新</code></pre>]]></content>
<categories>
<category> Supervisor </category>
</categories>
<tags>
<tag> 进程 </tag>
<tag> Supervisor </tag>
<tag> tool </tag>
</tags>
</entry>
<entry>
<title>使用docker快速搭建gitlab</title>
<link href="/2018/05/10/shi-yong-docker-kuai-su-da-jian-gitlab/"/>
<url>/2018/05/10/shi-yong-docker-kuai-su-da-jian-gitlab/</url>
<content type="html"><![CDATA[<p> 如今最常用的代码版本控制工具当属git了,相对于命令行操作,我们更加需要一个web可视化界面来更好的进行管控我们的项目,GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,使用它可以帮助我们更好的进行团队协作开发项目,下面我们来使用docker快速搭建一个私有的git服务器吧。</p><h4 id="一、准备工作"><a href="#一、准备工作" class="headerlink" title="一、准备工作"></a>一、准备工作</h4><pre><code>装有CentOs7的服务器</code></pre><h4 id="一、下载docker"><a href="#一、下载docker" class="headerlink" title="一、下载docker"></a>一、下载docker</h4><pre><code>#使用如下指令下载dockeryum -y install docker</code></pre><p><img src="http://res.jxzl.cc/medias/article/shi-yong-docker-kuai-su-da-jian-gitlab/1.png" alt="下载docker"></p><p><img src="http://res.jxzl.cc/medias/article/shi-yong-docker-kuai-su-da-jian-gitlab/2.png" alt="下载docker成功"></p><h4 id="二、运行docker"><a href="#二、运行docker" class="headerlink" title="二、运行docker"></a>二、运行docker</h4><pre><code>#使用如下指令运行dockersystemctl start docker</code></pre><h4 id="三、搜索gitlab镜像"><a href="#三、搜索gitlab镜像" class="headerlink" title="三、搜索gitlab镜像"></a>三、搜索gitlab镜像</h4><pre><code>#搜索gitlab中文社区版镜像docker search gitlab</code></pre><p><img src="http://res.jxzl.cc/medias/article/shi-yong-docker-kuai-su-da-jian-gitlab/3.png" alt="搜索gitlab镜像"></p><h4 id="四、下载gitlab中文镜像"><a href="#四、下载gitlab中文镜像" class="headerlink" title="四、下载gitlab中文镜像"></a>四、下载gitlab中文镜像</h4><pre><code>#输入如下指令下载gitlab中文镜像docker pull twang2218/gitlab-ce-zh</code></pre><p><img src="http://res.jxzl.cc/medias/article/shi-yong-docker-kuai-su-da-jian-gitlab/4.png" alt="下载gitlab中文镜像"><br><img src="http://res.jxzl.cc/medias/article/shi-yong-docker-kuai-su-da-jian-gitlab/5.png" alt="下载镜像完成"></p><h4 id="五、配置并运行镜像"><a href="#五、配置并运行镜像" class="headerlink" title="五、配置并运行镜像"></a>五、配置并运行镜像</h4><pre><code># 输入指令docker run -d -p 443:443 -p 80:80 -p 22:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab twang2218/gitlab-ce-zh# -d:后台运行# -p:docker 服务器端口映射容器内部端口# --name: docker容器命名,方便对该容器进行管理和操作# --restart always:让该容器跟随docker重启而重启# -v:将容器内配置文件、日志文件、数据文件挂载到外部文件夹中,方便操作</code></pre><p><img src="http://res.jxzl.cc/medias/article/shi-yong-docker-kuai-su-da-jian-gitlab/6.png" alt="启动gitlab容器成功"></p><h4 id="六、修改gitlab配置信息"><a href="#六、修改gitlab配置信息" class="headerlink" title="六、修改gitlab配置信息"></a>六、修改gitlab配置信息</h4><p>至此,gitlab已经可以运行使用了,但是在gitlab上创建项目的时候,生成的项目访问Url是按照容器id来生成的,但是作为git服务器,我们的项目需要一个固定的访问Url,所以我们需要对gitlab的配置文件gitlab.rb(完整路径:/home/gitlab/config/gitlab.rb)进行一些修改:</p><pre><code># 输入指令vi /home/gitlab/config/gitlab.rb# 修改http访问地址(支持ip地址和域名),端口号不写默认为80external_url 'http://你的ip地址'或'http://你的域名'# 修改ssh协议所使用的访问地址和端口gitlab_rails['gitlab_ssh_host'] = '你的ip地址'或'你的域名'gitlab_rails['gitlab_shell_ssh_port'] = 22 # 此端口指的是docker内部端口,在执行run指令的时候,我们将服务器的22端口映射到容器的22端口,所以填写22</code></pre><p><img src="http://res.jxzl.cc/medias/article/shi-yong-docker-kuai-su-da-jian-gitlab/7.png" alt="修改external_url配置项"><br><img src="http://res.jxzl.cc/medias/article/shi-yong-docker-kuai-su-da-jian-gitlab/8.png" alt="修改gitlab_ssh_host配置项"><br><img src="http://res.jxzl.cc/medias/article/shi-yong-docker-kuai-su-da-jian-gitlab/9.png" alt="修改gitlab_shell_ssh_port配置项"></p><h4 id="七、重启gitlab容器"><a href="#七、重启gitlab容器" class="headerlink" title="七、重启gitlab容器"></a>七、重启gitlab容器</h4><pre><code>#输入指令docker restart gitlab</code></pre><p><img src="http://res.jxzl.cc/medias/article/shi-yong-docker-kuai-su-da-jian-gitlab/10.png" alt="重启gitlab容器成功"></p><h4 id="八、注意事项"><a href="#八、注意事项" class="headerlink" title="八、注意事项"></a>八、注意事项</h4><ol><li>我们在运行gitlab容器的时候,使用容器的222端口映射服务器的22端口,而服务器上SSH服务默认端口也是22,这样会产生端口冲突,所以需要修改两者之一的端口号:<br> 1.1 修改服务器的SSH端口号,使用非22端口(推荐)<pre><code> #1.输入指令 vi /etc/ssh/sshd_config #2.将Port的值改成223,前面的#号删除 Port 223 #3.输入如下指令重启ssh服务 systemctl restart sshd</code></pre> 个人比较推荐这种方式,这样做服务器会更加安全,同时在管理项目版本库的时候也更加方便,不用额外写明端口号。<br> 1.2 修改容器的SSH端口号<br> 修改gitlab容器的端口映射关系,-p 222:22<pre><code> #1.使用如下命令删除原先容器 docker rm gitlab #2.输入命令重新运行一个gitlab容器 docker run -d -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab twang2218/gitlab-ce-zh</code></pre></li><li>浏览器中输入你设置好的ip或者域名就能访问你的gitlab了,第一次访问时需要你设置不少于八位数的密码,用户名是root,就可以进入登录页面了。<br><img src="http://res.jxzl.cc/medias/article/shi-yong-docker-kuai-su-da-jian-gitlab/11.png" alt="进行登录"></li></ol>]]></content>
<categories>
<category> Git </category>
</categories>
<tags>
<tag> Git </tag>
<tag> docker </tag>
<tag> gitlab </tag>
</tags>
</entry>
<entry>
<title>快速搭建LAMP环境</title>
<link href="/2018/04/12/kuai-su-da-jian-lamp-huan-jing/"/>
<url>/2018/04/12/kuai-su-da-jian-lamp-huan-jing/</url>
<content type="html"><![CDATA[<h4 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h4><ul><li>一台装有Centos7的服务器<h4 id="安装PHP7"><a href="#安装PHP7" class="headerlink" title="安装PHP7"></a>安装PHP7</h4><pre><code>1.更换yum源rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmrpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm2.安装PHP7yum install -y php70w3.安装PHP的常用扩展 yum install -y php70w-pecl-redis.x86_64 php70w-mysql.x86_64 php70w-mcrypt.x86_64 php70w-pdo.x86_64 php70w-soap.x86_64 php70w-devel.x86_64 php70w-bcmath.x86_64 php70w-gd.x86_64 php70w-opcache.x86_64</code></pre><h4 id="安装Apache"><a href="#安装Apache" class="headerlink" title="安装Apache"></a>安装Apache</h4><pre><code>yum install -y httpd</code></pre><h4 id="安装Mysql"><a href="#安装Mysql" class="headerlink" title="安装Mysql"></a>安装Mysql</h4><pre><code>wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpmrpm -ivh mysql-community-release-el7-5.noarch.rpmyum install -y mysql-server1.启动mysqlsystemctl restart mysqld.service2.登录数据库,修改密码mysql -urootSET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的密码');</code></pre><h4 id="设置开机自动启动"><a href="#设置开机自动启动" class="headerlink" title="设置开机自动启动"></a>设置开机自动启动</h4><pre><code>systemctl enable httpd.service</code></pre><h4 id="启动-Apache"><a href="#启动-Apache" class="headerlink" title="启动 Apache"></a>启动 Apache</h4><pre><code>systemctl start httpd.service</code></pre></li></ul>]]></content>
<categories>
<category> PHP </category>
</categories>
<tags>
<tag> Linux </tag>
<tag> CentOs </tag>
<tag> Apache </tag>
<tag> Mysql </tag>
</tags>
</entry>
<entry>
<title>快速搭建LNMP环境</title>
<link href="/2018/04/12/kuai-su-da-jian-lnmp-huan-jing/"/>
<url>/2018/04/12/kuai-su-da-jian-lnmp-huan-jing/</url>
<content type="html"><![CDATA[<h4 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h4><ul><li>一台装有Centos7的服务器<h4 id="安装PHP7"><a href="#安装PHP7" class="headerlink" title="安装PHP7"></a>安装PHP7</h4><pre><code>1.更换yum源rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmrpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm2.安装PHP7yum install -y php70w3.安装PHP的常用扩展 yum install -y php70w-pecl-redis.x86_64 php70w-mysql.x86_64 php70w-fpm.x86_64 php70w-mcrypt.x86_64 php70w-pdo.x86_64 php70w-soap.x86_64 php70w-devel.x86_64 php70w-bcmath.x86_64 php70w-gd.x86_64 php70w-opcache.x86_64</code></pre><h4 id="安装Nginx"><a href="#安装Nginx" class="headerlink" title="安装Nginx"></a>安装Nginx</h4><pre><code>yum install -y nginx</code></pre><h4 id="安装Mysql"><a href="#安装Mysql" class="headerlink" title="安装Mysql"></a>安装Mysql</h4><pre><code>wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpmrpm -ivh mysql-community-release-el7-5.noarch.rpmyum install -y mysql-server1.启动mysqlsystemctl restart mysqld.service2.登录数据库,修改密码mysql -urootSET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的密码');</code></pre><h4 id="设置开机自动启动"><a href="#设置开机自动启动" class="headerlink" title="设置开机自动启动"></a>设置开机自动启动</h4><pre><code>systemctl enable nginx.servicesystemctl enable php-fpm.service</code></pre><h4 id="启动-Nginx-PHP"><a href="#启动-Nginx-PHP" class="headerlink" title="启动 Nginx,PHP"></a>启动 Nginx,PHP</h4><pre><code>systemctl start nginx.servicesystemctl start php-fpm.service</code></pre></li></ul>]]></content>
<categories>
<category> PHP </category>
</categories>
<tags>
<tag> Linux </tag>
<tag> CentOs </tag>
<tag> Mysql </tag>
<tag> Nginx </tag>
</tags>
</entry>
<entry>
<title>Laravel快速入门(一)</title>
<link href="/2018/01/12/laravel-kuai-su-ru-men-yi/"/>
<url>/2018/01/12/laravel-kuai-su-ru-men-yi/</url>
<content type="html"><![CDATA[<h3 id="一、Laravel概述"><a href="#一、Laravel概述" class="headerlink" title="一、Laravel概述"></a>一、Laravel概述</h3><h4 id="1-1-Laravel框架简介"><a href="#1-1-Laravel框架简介" class="headerlink" title="1.1 Laravel框架简介"></a>1.1 Laravel框架简介</h4><pre><code>Laravel是一套简洁、优雅的PHP WEB开发框架(目前最流行的PHP框架,基于symfony开发)具有富于表达性且简洁的语法,Laravel是易于理解且强大的,它提供了强大的工具用于开发大型、健壮的应用,如:验证、路由、会话技术、缓存、数据迁移、单元测试等等常用工具和功能。</code></pre><p><a href="https://laravel.com/" target="_blank" rel="noopener">Laravel官网</a><br><a href="http://laravelacademy.org/" target="_blank" rel="noopener">Laravel学院</a><br><a href="http://www.golaravel.com/" target="_blank" rel="noopener">Laravel中文文档</a><br><a href="https://laravel-china.org/" target="_blank" rel="noopener">Laravel中国</a><br><a href="https://laravel-china.org/topics/2530/the-highest-amount-of-downloads-of-the-100-laravel-extensions-recommended" target="_blank" rel="noopener">Laravel常见的类库(top100)</a></p><h4 id="1-2-什么是Laravel"><a href="#1-2-什么是Laravel" class="headerlink" title="1.2 什么是Laravel"></a>1.2 什么是Laravel</h4><pre><code>简单来说就是使用PHP编写的一个框架。</code></pre><h4 id="1-3-Laravel框架相对于其他框架优势"><a href="#1-3-Laravel框架相对于其他框架优势" class="headerlink" title="1.3 Laravel框架相对于其他框架优势"></a>1.3 Laravel框架相对于其他框架优势</h4><pre><code>1. 强大的路由模块(route)。2. 命令行工具(artisan):加快项目开发(很多手动的工作都自动了)。3. blade模版:可继承、渲染速度快、简化view开发和管理。4. 数据迁移(Migrations): 管理数据库和版本控制。5. 单元测试(PHPUnit):保证稳定性(便于发现问题,无论是需求更变还是代码本身的bug及代码重构)。支持Composer:项目组件管理工具。</code></pre><h3 id="二、Laravel的安装"><a href="#二、Laravel的安装" class="headerlink" title="二、Laravel的安装"></a>二、Laravel的安装</h3><h4 id="2-1-环境要求"><a href="#2-1-环境要求" class="headerlink" title="2.1 环境要求"></a>2.1 环境要求</h4><pre><code>1. PHP>=5.62. 开启openssl、mbstring、pdo、fileinfo扩展</code></pre><h4 id="2-2-安装方式"><a href="#2-2-安装方式" class="headerlink" title="2.2 安装方式"></a>2.2 安装方式</h4><h5 id="2-2-1-直接下载源代码安装"><a href="#2-2-1-直接下载源代码安装" class="headerlink" title="2.2.1 直接下载源代码安装"></a>2.2.1 直接下载源代码安装</h5><ol><li><a href="http://laravelacademy.org/resources-download" target="_blank" rel="noopener">下载框架</a></li><li>解压到指定虚拟主机目录</li><li>访问(注:入口文件在public目录下)<h5 id="2-2-2-通过composer安装"><a href="#2-2-2-通过composer安装" class="headerlink" title="2.2.2 通过composer安装"></a>2.2.2 通过composer安装</h5></li><li>Composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中<br>声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。<br>Composer是为PHP准备的软件管家,项目所需工具库都可以通过Composer下载</li><li>下载Composer<br><a href="https://getcomposer.org" target="_blank" rel="noopener">官方网站</a><br><a href="http://www.phpcomposer.com" target="_blank" rel="noopener">中文网站</a><br>方法1(仅支持windows)<br>下载composer-setup.exe文件安装<br>方法2<br>下载composer.phar文件安装<br>■ 方法1:通过composer-setup.exe安装<br>步骤1:双击<br>步骤2:安装(注:除下图选择php.exe其余直接下一步next):<br>步骤3:检查是否安装成功(在DOS窗口输入 composer出现下图字样则安装成功)<br>■ 方法2:通过composer.phar文件安装<br>步骤1:该文件免安装所以可以直接使用<br>步骤2:检查是否安装成功(在DOS窗口输入 composer出现下图字样则安装成功)<br>3)Composer命令<br>复杂:php composer.phar 指令<br>简化:composer 指令<br>说明:后期大量使用composer命令,语法:【php composer.phar 指令】<br>发现:每次重复敲【php composer.phar】太长<br>解决:<br>1)将composer.phar放到www目录中然后输入DOS命令<br>【echo @php “%~dp0composer.phar” %*>composer.bat】后发现www目录下新增了.bat文件将其加入环境变量即可<br>2)将composer.bat将去环境变量<br>3)验证<br>4)安装Laravel(后天详细讲解)<br>步骤1:配置通过国内镜像下载<br>composer config -g repo.packagist composer <a href="https://packagist.phpcomposer.com" target="_blank" rel="noopener">https://packagist.phpcomposer.com</a><br>步骤2:通过Composer下载框架<br>composer create-project laravel/laravel test_laravel<br>三、Laravel目录结构分析<br>1、整体目录<br>2、app目录<br>3、Http目录<br>4、boostrap目录</li></ol><p>5、config目录</p><p>6、database目录</p><p>7、public目录</p><p>8、resource目录</p><p>9、storage目录<br>主要是存放缓存文件和日志文件,需要注意:如果是在Linux环境下,该目录需要有可写的权限</p><p>10、vendor目录</p><p>11、.env文件</p><p>︴思考:通过框架完成下属功能需要哪些知识点?<br>1、留言列表显示</p><p>路由(访问)-> 控制器(调用) -> 视图<br>路由如何创建?<br>控制器如何创建 并且 如何调用视图<br>视图如何创建?<br>如何操作数据库获取数据库,传递给视图<br>如何如何显示数据</p><p>2、添加留言</p><p>如何获取提交的数据<br>如何保存在数据库中并且跳转网页</p><p>3、总结(新框架快速上手原则)<br>路由(访问) -> 控制器(调用) -> 视图<br> (操作)-> 数据库<br>四、Laravel框架中的控制器<br>1、控制器的存放目录<br>app\Http\Controllers\平台名称\控制器名Controller.php (注:大驼峰)</p><p>2、控制器的命名规则<br>控制器使用大驼峰命名方<br>如:UserController.php、TestController.php等</p><p>3、创建控制器<br>方法1:artisan命令创建 (使用代码生成器创建控制器)<br>命令:php artisan make:controller 平台名\控制器名Controller<br>说明:使用artisan命令时必须在项目根目录下,因为artisan文件在根目录下</p><p>方法2:手动创建<br>直接复制已有控制器改名或者复制下属代码,推荐使用artisan创建</p><p>五、路由1<br>v 准备:PHP闭包<br>1)JS闭包<br>概念:在JS中当一个函数执行时可以让其内部局部变量不受其他作用域影响,同<br>时当前函数执行完毕后还可能让其内部变量常驻内存不销毁的运行机制被称为JavaScript的闭包。<br>定义:两个函数彼此嵌套,并返回内部函数<br>function a() {<br>function b() {</p><p>}<br>return b;<br>}</p><p>var arr = [];<br>for (var i = 0; i<10; i++) {<br>//arr[i] = function(){<br>//alert(i);<br>//}<br>arr[i] = a(i);<br>}</p><p>arr<a href="">0</a>; //理论上,小白认为0,但实际10</p><p>function a (num) {</p><p>function b() {<br>alert(num);<br>}</p><p>return b;<br>}</p><p>2)PHP闭包函数(php5.3+)</p><p>1、路由的作用<br>概念:路由就是网址<br>作用:把用户发送的HTTP请求,交给指定的控制器方法来处理它</p><p>2、路由配置文件</p><p>3、配置路由(routes\web.php)<br>1、路由定义格式<br>Route::请求类型(请求的URL,匿名函数或控制器方法)<br>响应多个HTTP请求:<br>Route::match([请求类型1,..请求类型n], 请求的URL,匿名函数或控制器方法)<br>响应素有HTTP请求<br>Route::any(请求的URL,匿名函数或控制器方法)<br>2、请求方式有哪些?<br>可以是HTTP的8种请求类型之一,如:get、put、post、delete…等,常用get和post<br>︴练习<br>不同的请求响应<br>get请求,闭包函数响应</p><p>get请求,控制器响应</p><p>post请求,闭包函数响应(注:app\Http\Kernel.php注释VerifyCsrfToken)</p><p>post请求,控制器响应</p><p>响应多个HTTP请求</p><p>响应所有HTTP请求</p><p>4、路由参数<br>1)语法<br>Route::HTTP请求类型(请求的URL/{参数名称}, 闭包函数或控制响应的方法)->where(参数名称,正则表达式)</p><p>2)闭包函数操作参数<br>一个参数</p><p>多个参数</p><p>默认参数</p><p>3)控制器操作参数<br>多个参数</p><p>默认参数</p><p>4)正则表达式限制参数<br>限制一个参数</p><p>限制多个参数</p><p><?php<br>Route::get(‘/test/{id}/{name}’, function($id, $name) {<br> return $id . ‘___’ . $name;<br>})->where([‘id’ => ‘\d+’, ‘name’ => ‘\w+’]);</p><p>5、路由群组<br>1)概念<br>多个路由之间共享路由属性,减少冗余。<br>2)案例</p><p><?php</p><p>#prefix是将子路由【请求url】公共部分提取<br>Route::group([‘prefix’ => ‘a’,’namespace’ => ‘Home’], function() {<br>// Route::get(‘/a/test1’, ‘Home\Day1Controller@index’);<br>// Route::get(‘/a/test2’, ‘Home\Day1Controller@index2’);<br>// Route::get(‘/a/test3’, ‘Home\Day1Controller@index3’);</p><pre><code>Route::get('test1', 'Day1Controller@index');Route::get('test2', 'Day1Controller@index2');Route::get('test3', 'Day1Controller@index3');</code></pre><p>});</p><p>6、路由别名</p><p>是uses非users</p><p>路由总结<br>Route::请求类型(请求URL,闭包函数或控制器的方法)<br>请求多个类型<br>Route::match([类型1,…,类型n],请求URL,闭包函数或控制器的方法)<br>请求所有类型<br>Route::any请求URL,闭包函数或控制器的方法)</p><p>路由参数:<br>1)请求URL增加参数,如:/test/{id}/{name}<br>2)闭包函数或者控制器的方法定义对应形参<br>如果请求URL参数增加?表示可以设置默认值</p><p>3)参数条件:直接给请求类型静态方法后面->where(参数名,正则)<br>多个则where条件写数组,如:上述截图</p><p>路由群组:<br>1)作用:减少冗余<br>2)语法:<br>Route::group([‘prefix’ => ‘请求URL公共部分’, ‘namespace’ => ‘公共命名空间’], function(){<br>路由规则<br>});<br>路由别名:如果请求URL过长则可以写别名,后期直接通过route方法获取真实的<br>请求URL地址(注:如果别名重复则后者覆盖前者)</p><p>六、视图1<br>1、控制器调用视图<br>1)语法<br>方法1:直接return字符串<br>方法2:return view(视图名,compact(变量名1,….,变量名2))<br>视图默认在resources/views目录下:【文件扩展名.php】或者【xxx.blade.php】<br>视图文件统一首字母小写<br>视图文件分文件夹管理:通过点“.”来打开子目录下的视图文件,如:return view(admin.index.index);则表示打开resources/views/admin/index/index.php文件 或者 index.blade.php文件(注:会自动判断)</p><p>2)练习(调用视图)<br>步骤1:创建路由(访问Day1控制器的index2方法)<br>Route::get(‘/‘, ‘Home\Day1Controller@index2’);</p><p>步骤2:创建控制器(php artisan make:controller 平台名\控制器名Controller)<br>步骤3:控制器调用视图</p><p>步骤4:网址+url访问</p><p>2、基本用法视图传参<br>1)认识compact函数<br>语法:compact(变量名1,….,变量名n)<br>作用:将多个变量组成数组(变量名是数组的键)</p><p>public function index2()<br>{<br> $data1 = 1;<br> $data2 = 2;<br> $data3 = 3;<br> $rs = compact(‘data1’, ‘data2’, ‘data3’);<br> print_r($rs);<br> //多学一招:laravel提供可以调试的方法dd函数,会格式化打印数据<br> dd($rs);<br> return view(‘test.qz1’);<br>}<br>2)数组方式(给视图传递数据)</p><p>3)工作常用(给视图传递数据)</p><p>4、【★】blade模板<br>1)什么是blade模板<br>Blade 是 Laravel 提供的一个模板引擎。<br>Blade 视图文件使用 .blade.php 文件扩展名</p><p>2)blade模板标签<br>注释(同Smarty注释响应时不含注释内容)</p><p>展示变量数据<br></p><p>多学一招</p><p>htmlspecialchars 将 指定字符 转化为 HTML实体符</p><blockquote><p> <</p></blockquote><p>循环<br>@foreach ( 变量 as $k=>$v)<br><br>@endforeach</p><p>判断<br>@if ()</p><p>@elseif()</p><p>@else</p><p>@endif</p><p>指定原声PHP(少用)<br>@php<br>@endphp</p><p><a href="http://laravelacademy.org/post/6780.html#toc_10" target="_blank" rel="noopener">http://laravelacademy.org/post/6780.html#toc_10</a> </p><p>七、获取请求输入<br>1、语法<br>1)方法1<br>步骤1:导入命名空间【use Illuminate\Http\Request】<br>步骤2:在方法小括号中声明(Request $request)<br>步骤3:<br>$request->all() 获取所有数据<br>$request->input(参数名,默认值) 获取单个数据(仅可以获取get数据)<br>$request->only([参数名1,…,参数名n]) 获取指定数据<br>$request->except([参数名1,…,参数名n]) 获取指定数据外的所有数据 </p><p>2)方法2<br>步骤1:导入命名空间【use Illuminate\Support\Facades\Input】<br>步骤2:<br>Input::all() 获取所有数据<br>Input::get(参数名[,默认值]) 获取单个数据<br>Input::only([键1,…,键n]) 获取指定数据<br>Input::except([键1,…,键n]) 获取指定数据外的所有数据</p><p>2、练习<br>视图</p><p>控制器</p><p>总结<br>request类 input类<br>接受全部数据 $request->all() Input::all()<br>接受get数据 $request->input(键,默认指); Input::get(键,默认指)<br>接受指定数据 $request->only([键1,…键n]); Input::only([键1,…键n]);<br>指定数据除外 $request->except([键1,…键n]); Input::except([键1,…键n]);<br><a href="http://laravelacademy.org/post/6750.html" target="_blank" rel="noopener">http://laravelacademy.org/post/6750.html</a> </p><p>八、留言板功能<br>准备(数据库初体验,明天详细讲)<br>语法<br>查询所有数据语法:DB::table(表名)->get()<br>插入数据语法:DB::table(表名)->insert(关联数组)<br>练习<br>步骤1:创建数据库和留言表并插入数据<br>create database laravel54;<br>use laravel54;</p><p>#标准写法<br>– create table msg (<br>– id int primary key auto_increment comment ‘编号’,<br>– uname varchar(45) not null comment ‘用户名’,<br>– content text not null comment ‘内容’,<br>– created_at int not null default 0 comment ‘创建于’,<br>– updated_at int not null default 0 comment ‘更新于’<br>– )engine=myisam charset=utf8;</p><p>#为铺垫后面课程修改<br>create table msg (<br>id int primary key auto_increment comment ‘编号’,<br>uname varchar(45) comment ‘用户名’,<br>content text comment ‘内容’,<br>created_at int not null default 0 comment ‘创建于’,<br>updated_at int not null default 0 comment ‘更新于’<br>)engine=myisam charset=utf8;<br>insert into msg values<br>(null,’a’,’aaaa’,0,0),<br>(null,’a’,’aaaa’,0,0),<br>(null,’a’,’aaaa’,0,0);<br>步骤2:修改laravel数据库配置文件</p><p>1、留言列表<br>1)思路<br>步骤1:创建路由,通过【/msg】访问<br>步骤2:创建【Msg】控制器的【index】方法<br>步骤3:创建视图在msg目录下的index.blade.php文件中<br>步骤4:控制器获取数据,视图循环显示</p><p>2)代码<br>步骤1:创建路由,通过【/msg】访问</p><p>步骤2:创建【Msg】控制器的【index】方法</p><p>步骤3:创建视图在msg目录下的index.blade.php文件中</p><p>步骤4:控制器获取数据,视图循环显示<br>控制器</p><p>视图</p><p>2、添加留言<br>1)思路<br>说明:因为添加特殊(其和列表在同一个页面所以不需要重新加载视图)<br>步骤1:修改路由<br>步骤2:控制器接受数据,并添加到数据库<br>2)代码<br>步骤1:修改路由<br>步骤2:控制器接受数据,并添加到数据库<br>今天总结<br>什么是Laravel:就是用PHP写的框架<br>Laravel安装:<br>条件:php>5.6.4 openssl扩展、pdo扩展、mbstring扩展等<br>两种安装方式:<br>1)直接下载源代码包<br>2)通过composer安装<br>什么是composer:PHP的软件管家,所有文件下载到vendor目录</p><p>创建控制器<br>目录:app\Http\controllers\平台名\控制器名称Controller.php<br>创建两个方式<br>1)命令行创建:php artisan make:controller 平台名\控制器名</p><h2 id="2)直接复制已经创建的更改类名即可"><a href="#2)直接复制已经创建的更改类名即可" class="headerlink" title="2)直接复制已经创建的更改类名即可"></a>2)直接复制已经创建的更改类名即可</h2><p>Route::请求类型(请求URL,闭包函数或控制器的方法)<br>请求多个类型<br>Route::match([类型1,…,类型n],请求URL,闭包函数或控制器的方法)<br>请求所有类型<br>Route::any请求URL,闭包函数或控制器的方法)<br>路由参数:<br>1)请求URL增加参数,如:/test/{id}/{name}<br>2)闭包函数或者控制器的方法定义对应形参<br>如果请求URL参数增加?表示可以设置默认值<br>3)参数条件:直接给请求类型静态方法后面->where(参数名,正则)<br>多个则where条件写数组,如:上述截图<br>路由群组:<br>1)作用:减少冗余<br>2)语法:<br>Route::group([‘prefix’ => ‘请求URL公共部分’, ‘namespace’ => ‘公共命名空间’], function(){<br>路由规则<br>});<br>路由别名:如果请求URL过长则可以写别名,后期直接通过route方法获取真实的<br>请求URL地址(注:如果别名重复则后者覆盖前者)</p>]]></content>
<categories>
<category> PHP </category>
</categories>
<tags>
<tag> 框架 </tag>
<tag> Laravel </tag>
</tags>
</entry>
<entry>
<title>git常用指令</title>
<link href="/2017/10/20/git-chang-yong-zhi-ling/"/>
<url>/2017/10/20/git-chang-yong-zhi-ling/</url>
<content type="html"><![CDATA[<h3 id="Git-全局设置"><a href="#Git-全局设置" class="headerlink" title="Git 全局设置"></a>Git 全局设置</h3><pre><code>git config --global user.name "your name"git config --global user.email "your Email"</code></pre><h3 id="克隆线上git仓库"><a href="#克隆线上git仓库" class="headerlink" title="克隆线上git仓库"></a>克隆线上git仓库</h3><pre><code>git clone 项目git仓库地址</code></pre><h3 id="本地新文件夹与线上git仓库关联"><a href="#本地新文件夹与线上git仓库关联" class="headerlink" title="本地新文件夹与线上git仓库关联"></a>本地新文件夹与线上git仓库关联</h3><pre><code>cd your dirgit initgit remote add origin 项目git仓库地址git add .git commit -m "Initial commit"git push -u origin master</code></pre><h3 id="已存在的-Git-版本库"><a href="#已存在的-Git-版本库" class="headerlink" title="已存在的 Git 版本库"></a>已存在的 Git 版本库</h3><pre><code>cd your git dirgit remote rename origin old-origingit remote add origin 项目git仓库地址git push -u origin --allgit push -u origin --tags关联本地与远程分支git branch --set-upstream-to origin/devtest devtest</code></pre><h3 id="git初始化"><a href="#git初始化" class="headerlink" title="git初始化"></a>git初始化</h3><pre><code>git init</code></pre><h3 id="git下载远程git仓库代码:"><a href="#git下载远程git仓库代码:" class="headerlink" title="git下载远程git仓库代码:"></a>git下载远程git仓库代码:</h3><pre><code>git clone 远程git仓库地址</code></pre><h3 id="git查看当前分支修改内容状态:"><a href="#git查看当前分支修改内容状态:" class="headerlink" title="git查看当前分支修改内容状态:"></a>git查看当前分支修改内容状态:</h3><pre><code>git status</code></pre><h3 id="git查看分支:"><a href="#git查看分支:" class="headerlink" title="git查看分支:"></a>git查看分支:</h3><pre><code>查看所有分支列表(本地 和 远程)git branch -a查看本地分支,*标记的代表当前分支git branch3 查看远程版本库分支git branch -r</code></pre><h3 id="git重命名本地-远程分支:"><a href="#git重命名本地-远程分支:" class="headerlink" title="git重命名本地/远程分支:"></a>git重命名本地/远程分支:</h3><pre><code>重命名本地分支(不管是否在当前分支,都可以修改)git branch -m <old_branch> <new_branch>重命名远程分支先修改本地分支名git branch -m <old_branch> <new_branch>再删除要修改的远程分支名git push origin --delete <old_branch>最后将改名后的分支push到远程git push origin <new_branch></code></pre><h3 id="git更新内容放入暂存区:"><a href="#git更新内容放入暂存区:" class="headerlink" title="git更新内容放入暂存区:"></a>git更新内容放入暂存区:</h3><pre><code>单个文件放入暂存区git add <filename>所有文件放入暂存区git add .</code></pre><h3 id="git提交暂存区的内容:"><a href="#git提交暂存区的内容:" class="headerlink" title="git提交暂存区的内容:"></a>git提交暂存区的内容:</h3><pre><code>git commit -m" 对本次提交的描述 "</code></pre><h3 id="git拉取远程代码:"><a href="#git拉取远程代码:" class="headerlink" title="git拉取远程代码:"></a>git拉取远程代码:</h3><pre><code>git pull origin <origin_branch>拉取远程所有分支代码git pull</code></pre><h3 id="git推送到远程代码:"><a href="#git推送到远程代码:" class="headerlink" title="git推送到远程代码:"></a>git推送到远程代码:</h3><pre><code>git push origin <origin_branch></code></pre><h3 id="git切换分支(commit之后方可切换分支)"><a href="#git切换分支(commit之后方可切换分支)" class="headerlink" title="git切换分支(commit之后方可切换分支)"></a>git切换分支(commit之后方可切换分支)</h3><pre><code>切换已经存在的分支git checkout <branch_name>切换不存在的分支(此命令会新建新分支并切换到新分支)git checkout -b <new_branch></code></pre><h3 id="git放弃修改:"><a href="#git放弃修改:" class="headerlink" title="git放弃修改:"></a>git放弃修改:</h3><pre><code>放弃单个文件的修改,即删除修改(注意:该文件没有暂存或者提交改动,已经暂存或者提交改动的不受影响)git checkout -- <filename>放弃当前目录下的修改,即删除修改git checkout .</code></pre><h3 id="git本地分支推送远程:"><a href="#git本地分支推送远程:" class="headerlink" title="git本地分支推送远程:"></a>git本地分支推送远程:</h3><pre><code>拉取远程最新代码git pull新建本地分支git checkout -b 本地分支名推送到远程分支上git push origin 本地分支名:远程分支名</code></pre><h3 id="git删除本地分支:"><a href="#git删除本地分支:" class="headerlink" title="git删除本地分支:"></a>git删除本地分支:</h3><pre><code>删除本地分支 (需要先checkuout到本地别的分支上,再进行删除)git branch -d <branch_name>如果有未merge的提交,那么删除分支失败 ,此时可以进行强制删除分支git branch -D <branch_name></code></pre><h3 id="git删除远程分支:"><a href="#git删除远程分支:" class="headerlink" title="git删除远程分支:"></a>git删除远程分支:</h3><pre><code>方法一:git push origin --delete <origin_branch>方法二:git push origin :<origin_branch></code></pre><h3 id="git查看日志(日志即分支的历史合并):"><a href="#git查看日志(日志即分支的历史合并):" class="headerlink" title="git查看日志(日志即分支的历史合并):"></a>git查看日志(日志即分支的历史合并):</h3><pre><code>会输出所有的日志(commit id,commit author,commit date,commit name),如果日志特别多的话,在git bash中,按向下键来查看更多,按q键退出查看日志git log--oneline 参数可以将每条日志的输出为一行(commit id 前7位,commit name),如果日志比较多的话,用这个参数能够使结果看起来比较醒目git log --oneline-[length] 参数用于指定显示多少条日志(例:git log -1,显示一条)git log -[length]--name-status 参数会带出每次提交对应的文件改动git log --name-status可以筛选出 yourname 用户提交的所有日志git log --author yourname参数用来指定跳过前几条日志(git log --skip=1)git log --skip=[skip]-p 参数输出的信息会更多,用来显示提交的改动记录,相当于多次使用 git show [commit_id] 的结果;(git log -1 -p:显示一条)git log -p</code></pre><h3 id="git撤销提交:"><a href="#git撤销提交:" class="headerlink" title="git撤销提交:"></a>git撤销提交:</h3><pre><code>退回到某个版本,只回退了commit的信息(退回到暂存区 commit,还可以继续修改提交)git reset --soft <commit id>撤销最近一次提交git revert HEADreset 撤销 彻底回退到某个版本(撤销的内容(即被撤销的commit)会被冲掉)git reset --hard<commit id>revert 撤销 (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存git revert commit注意:reset 和 revert 的区别:revert 是用一次新的 commit 来回滚之前的 commit,reset 是直接删除指定的 commit</code></pre><p><a href="https://www.liaoxuefeng.com/wiki/896043488029600" target="_blank" rel="noopener">史上最浅显易懂的Git教程</a></p>]]></content>
<categories>
<category> Git </category>
</categories>
<tags>
<tag> 版本控制工具 </tag>
<tag> Git </tag>
</tags>
</entry>
<entry>
<title>史上最全的Webstorm快捷键及技巧</title>
<link href="/2017/10/17/shi-shang-zui-quan-de-webstorm-kuai-jie-jian-ji-ji-qiao/"/>
<url>/2017/10/17/shi-shang-zui-quan-de-webstorm-kuai-jie-jian-ji-ji-qiao/</url>
<content type="html"><![CDATA[<p>Webstorm是一款前端开发神器,此文介绍 Webstorm的快捷键和技巧分享。所谓工欲善其事,必先利其器嘛,想着如果要提高开发效率,那掌握一些常用的快捷键应该是少不了的,所以把Webstorm快捷键及技巧分享给大家。持续更新中</p><h3 id="快捷键大全"><a href="#快捷键大全" class="headerlink" title="快捷键大全"></a>快捷键大全</h3><h4 id="编辑类"><a href="#编辑类" class="headerlink" title="编辑类"></a>编辑类</h4><p>【Ctrl + Space 】基本代码完成 (任何类、 方法或变量名称)<br>【Alt + Enter】 展示意图动作和快速修复<br>【Ctrl + P】显示调用方法内参数信息<br>【Ctrl + Q】 快速记录查找<br>【Ctrl + mouse】放在代码上面-显示简短的代码信息<br>【Ctrl + F1】在插入符号显示错误或警告的说明<br>【Alt + Insert】生成代码<br>【Ctrl + Alt + T】快速生成(if..else, try..catch, for, etc.)等<br>【Ctrl + J】插入Live模板<br>【Ctrl + / 】行注释与取消行注释<br>【Ctrl + Shift + / 】块注释与取消块注释<br>【Ctrl + W 】增加选择中代码块<br>【Ctrl + Shift + W 】减少当前所选内容代码块<br>【Alt + Q 】上下文信息<br>【Ctrl + Alt + L 】格式化代码<br>【Ctrl + Alt + I 】自动缩进的行数<br>【Tab / Shift + Tab 】缩进/取消缩进选定的行<br>【Ctrl + X , Shift + Delete】 剪切到剪贴板的当前行或者所选代码块<br>【Ctrl + C】Ctrl + 插入复制当前行或者所选代码块到剪贴板<br>【Ctrl + V】Shift + 从剪贴板插入粘贴<br>【Ctrl + Shift + V 】最近缓冲区粘贴<br>【Ctrl + D】复制当前行或者所选代码块<br>【Ctrl + Y】删除行<br>【Ctrl + Shift + J 】加入行<br>【Ctrl + enter 】拆分行<br>【shift + Enter 】 重新开始一行(无论光标在哪个位置)<br>【Ctrl + Shift + U 】切换选中词或所选代码块的大小写<br>【Ctrl + Shift +]】选中直到代码块的开始<br>【Ctrl + Shift +[】选择直到代码块的结束<br>【Ctrl + Delete】 删除光标右侧的词<br>【Ctrl + backspace】 删除光标左侧的词<br>【Ctrl + NumPad+】展开代码块<br>【Ctrl + NumPad-】折叠代码块<br>【Ctrl + Shift + NumPad+】展开所有代码块<br>【Ctrl + Shift + NumPad-】折叠所有代码块<br>【Ctrl + F4 】关闭当前标签页</p><h4 id="同时编辑多行"><a href="#同时编辑多行" class="headerlink" title="同时编辑多行"></a>同时编辑多行</h4><p>【Alt + Click】 同时选中多行,同时编辑<br>【Shift + Ctrl + Alt + J】选择所有当前选中的词<br>【Alt + J】选择下一个相同的词<br>【Alt + Shift + J】取消所有选中的词<br>【Esc】取消选择所有选中的词或插入符号</p><h4 id="运行类"><a href="#运行类" class="headerlink" title="运行类"></a>运行类</h4><p>【Alt + Shift + F10/F9】 选择配置和运行/调试<br>【Shift + F10/F9】 运行/调试<br>【Ctrl + Shift + F10/F9】 运行/调试上下文配置从编辑器<br>【Alt + Shift + R】 重新运行测试</p><h4 id="调试类"><a href="#调试类" class="headerlink" title="调试类"></a>调试类</h4><p>【F8】不进入函数<br>【F7】 单步执行<br>【Shift + F7】 只能单步执行<br>【Shift + F8】跳出<br>【Alt + F9】 运行到光标处<br>【Alt + F8】 计算表达式的值<br>【F9】 重新开始<br>【Ctrl + f8】 切换断点<br>【Ctrl + Shift + F8】 查看断点</p><h4 id="导航类"><a href="#导航类" class="headerlink" title="导航类"></a>导航类</h4><p>【Ctrl + N】跳转到指定类<br>【Ctrl + Shift + N】 通过文件名快速查找工程内的文件<br>【Ctrl + Alt + Shift + N】 通过一个字符查找函数位置<br>【Alt + Right】进入下一个编辑器选项<br>【Alt + Left】进入上一个编辑器选项<br>【f12】 进入上一个工具窗口<br>【esc】 从工具窗口进入编辑器<br>【Shift + Esc】 隐藏活动窗口<br>【Ctrl + Shift + F4】 关闭活动运行/消息/查找/选项卡<br>【Ctrl + G】 跳转到指定行<br>【Ctrl + E】 弹出最近打开的文件列表<br>【Ctrl + Alt + Left】导航前进<br>【Ctrl + Alt + Right】导航回退<br>【Ctrl + Shift +Backspace】定位到最近编辑窗口<br>【Alt + F1】查找当前选中的代码或文件在其他界面模块的位置<br>【Ctrl + B/Click】跳转到定义处<br>【Ctrl + 单击】转到声明<br>【Ctrl + Alt + B 】跳转方法实现处<br>【Ctrl + Shift + I】打开定义快速查找<br>【Ctrl + Shift + B 】跳转方法定义处<br>【Ctrl + U 】转到超级方法/超级类<br>【Alt + Up/Down】在方法间快速移动定位<br>【Ctrl +]/[】移动到代码块结束/启动<br>【Ctrl + f12】弹出文件结构<br>【Ctrl + H 】类型层次结构<br>【Ctrl + Alt + H】 调用层次结构<br>【F2/Shift + F2】跳转到后一个/前一个错误,在出错的语句之间进行跳转。<br>【F4/Ctrl + Enter】 编辑源代码/查看源代码<br>【Alt + home】 显示导航栏<br>【F11】切换标记<br>【Ctrl + F11】 采用记忆切换标记<br>【Ctrl + #[0-9]】跳转到带编号的标记<br>【Shift + F11 显示书签</p><h4 id="VCS版本控制"><a href="#VCS版本控制" class="headerlink" title="VCS版本控制"></a>VCS版本控制</h4><p>【Alt + 反引号 (‘)】 ‘VCS’ 快速弹出<br>【Ctrl + K】提交项目到VCS<br>【Ctrl + T】 从VCS更新项目<br>【Alt + Shift + C】查看最近的更改</p><h4 id="搜索-替换"><a href="#搜索-替换" class="headerlink" title="搜索/替换"></a>搜索/替换</h4><p>【Ctrl + F】 查找<br>【F3】 查找下一个<br>【Shift + F3】 查找上一个<br>【Ctrl + R】替换<br>【Ctrl + Shift + F】 在路径中找到<br>【Ctrl + Shift + R】 替换路径中的查找</p><h4 id="搜索类"><a href="#搜索类" class="headerlink" title="搜索类"></a>搜索类</h4><p>【Alt + f7】查找实例<br>【Ctrl + f7】在文件中查找实例<br>【Ctrl + Shift + f7】 在文件中高亮实例<br>【Ctrl + Alt + F7】显示实例</p><h4 id="重构类"><a href="#重构类" class="headerlink" title="重构类"></a>重构类</h4><p>【F5】拷贝当前文件<br>【F6】移动当前文件<br>【Alt + delete】 安全删除<br>【Shift + F6】 重命名<br>【Ctrl + Alt + N】嵌入变量<br>【Ctrl + Alt + M】提取函数<br>【Ctrl + Alt + V】引入变量<br>【Ctrl + Alt + C】引入常量<br>【Ctrl + Alt + P】引入参数<br>【Ctrl + F6】改变方法名</p><h4 id="常规类"><a href="#常规类" class="headerlink" title="常规类"></a>常规类</h4><p>【Ctrl + Shift +a】 查找当前<br>【双击shift】查找所有的(包括文件、命令等)<br>【Alt + #[0-9]】 打开相应的工具窗口<br>【Ctrl + Shift + f12】 键切换最大化编辑器<br>【Alt + Shift + F】 将添加到收藏夹<br>【Alt + Shift + I】 检查当前文件与当前配置文件<br>【Ctrl + 反引号 (‘)】快速切换当前计划<br>【Ctrl + Alt + S】 打开设置<br>【Ctrl + Tab】 切换选项卡和工具窗口</p><h4 id="常用插件推荐"><a href="#常用插件推荐" class="headerlink" title="常用插件推荐"></a>常用插件推荐</h4><p>Key Promoter【学习快捷键神器】<br>鼠标完成某项操作时,会提示相应的快捷键。</p><p>activate-power-mode【装*神器】<br>Atom上的神器,安装之后可以在 window -> activate-power-mode中关闭震动以及开启彩色模式。</p><h5 id="Markdown"><a href="#Markdown" class="headerlink" title="Markdown"></a>Markdown</h5><p>支持Markdown语法</p><h5 id="CodeGlance"><a href="#CodeGlance" class="headerlink" title="CodeGlance"></a>CodeGlance</h5><p>之前用过Sublime编辑器同学,强烈推荐这个,这个插件可以让 webstorm 也具有右侧展示当前文件中代码的缩略图。</p><h4 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h4><p>webstorm可以像sublime一样多行选择,比如在sublime中全选一个单词然后使用cmd+d,就可以往下选择一样的单词,然后进入多行模式吗?当然可以!</p><ul><li><p>逐个选中多个相同的词<br>sublime:Ctrl + D (Ctrl + K可以跳过一个)<br>webstrom:Ctrl + K ( Ctrl + Shift + K 可以回退一个)</p></li><li><p>同时选中所有相同的词<br>sublime:Alt + F3<br>webstrom:Ctrl + Shift + Alt + K</p></li><li><p>单击左键选择多行<br>sublime:按住Ctrl然后单击左键<br>webstrom:按住Alt然后单击左键</p></li><li><p>拖动选择多行<br>sublime:按住Ctrl + Shift + 鼠标右键 拖动<br>webstrom:按住Alt + 鼠标右键 拖动</p></li></ul>]]></content>
<categories>
<category> tool </category>
</categories>
<tags>
<tag> 代码编辑器 </tag>
<tag> Webstorm </tag>
</tags>
</entry>
</search>