yii2出现您提交的数据无法被验证。

今天在前端在写提交的时候没有使用ActiveForm生成表单,直接用html写。

刚开始使用ge提交就没问题,接着改成post就出现:您提交的数据无法被验证。

发现是因为打开了csrf验证,而表单里面又没有了csrfToken导致。

在form之间加入

<input type="hidden" name="_csrf" value="<?=Yii::$app->request->getCsrfToken() ?>">

发现还出现同样的错误,后来发现因为使用yii2配置里面设置了参数名。

'components' => [
   'request' => [
      'csrfParam' => '_csrf-m',
   ],
]

所以只要把name修改成name=”_csrf-m”,再次提交没出错了。

发表在 服务器 | 标签为 , | 留下评论

vim突然无法操作没响应了

今天在linux虚拟机上操作vim,不知道按了什么突然命令行窗口对键盘没有任何相应。

查了半天应该是我不小心切换命令模式的时候按了不该按的组合键;

解决办法: CTRL+S表示停止向终端停止输出; CTRL+Q恢复向终端输出流.

发表在 服务器 | 标签为 , | 留下评论

yii2自带ViewAction视图类渲染静态页面

yii2如果需要渲染一个静态页面提交框架效率可以使用ViewAction类。

这里主要说说它几个参数:

viewPrefix//默认会到对应控制器下视图目录下的pages目录寻找,如果设置为false只会到控制器视图目录下寻到。

viewParam//视图参数名默认为view,可以设置。

defaultView//如果viewParam视图文件名参数没有传送,默认使用defaultView变量参数查询,可以设置。

它会根据用户的设置调用这个action来显示相应的视图文件。 首先在控制器里面的actions里面

<?php
class SiteController extends Controller
{
    public function actions()
    {
        return [
            'static' => [
                'class' => '\yii\web\ViewAction',
                'viewPrefix' => false,
                'viewParam' => 'view',
                'defaultView' => 'index'
            ],
        ];
    }
}
?>

在@app/views/site/pages/目录中创建index.php

<h1>Hello, I am a static page!</h1>

现在可以通过/index.php?r=site/static来访问 默认情况下是通过GET参数中的view变量来显示相应的静态文件的。

如果URL为/index.php?r=site/static?&view=about那么将会显示@app/views/site/pages/about.php静态文件。

静态文件默认按照如下顺序来显示 获取GET参数:view 如果没有指定view参数,将使用默认的index.php静态文件。

在静态文件的目录中查找相应的文件(viewPrefix):pages为目录 使用相应的布局文件。

发表在 服务器 | 标签为 | 留下评论

进入Docker容器attach和exec方式区别

attach 与 exec 主要区别如下:

  1. attach 直接进入容器 启动命令 的终端,不会启动新的进程。
  2. exec 则是在容器中打开新的终端,并且可以启动新的进程。
  3. 如果想直接在终端中查看启动命令的输出,用 attach;其他情况使用 exec。
发表在 服务器 | 标签为 | 留下评论

Docker镜像ubuntu安装ssh报错的解决方案

dockerubuntu镜像下安装ssh协议的时候执行安装ssh-client或ssh-server命令的时候出错。

 apt-get install openssh-client
 apt-get install openssh-server

openssh-server : Depends: openssh-client (= 1:5.9p1-5ubuntu1) but 1:5.9p1-5ubuntu1.1 is to be installed
直接提取版本运行一下命令尝试安装:

user@ken:~$sudo apt-get install openssh-client=1:5.9p1-5ubuntu1

发表在 服务器 | 标签为 , | 留下评论

Docker默认ubuntu镜像:bash: vi: command not found

docker纯净ubuntu镜像里面是没有vi命令的,敲vi命令时提示说:vi: command not found。

这时候可以安装vim替换。

这时候需要敲:apt-get update,这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。

等更新完毕以后再敲命令:apt-get install -y vim命令即可。

如果下载速度异常慢而且可能中端,可以配置下国内镜像源,因为还没有vi编辑功能,只能使用echo命令导入文件。

mv /etc/apt/sources.list /etc/apt/sources.list.bak
echo "deb http://mirrors.163.com/ubuntu/ wily main restricted universe multiverse" >/etc/apt/sources.list
echo "deb http://mirrors.163.com/ubuntu/ wily-security main restricted universe multiverse" >>/etc/apt/sources.list
echo "deb http://mirrors.163.com/ubuntu/ wily-updates main restricted universe multiverse" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/ubuntu/ wily main restricted universe multiverse" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/ubuntu/ wily-security main restricted universe multiverse" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/ubuntu/ wily-updates main restricted universe multiverse" >>/etc/apt/sources.list

其中wily版本根据系统修改,查看Ubuntu使用apt-get更新慢解决方法修改镜像

更新安装源

apt-get update

再执行:apt-get install -y vim安装

发表在 服务器 | 留下评论

Ubuntu使用apt-get更新慢解决方法修改镜像

因为默认使用外国镜像地址的原因,所以国内使用很多时候会感觉缓慢,更换下镜像地址即可。

1、原文件备份

cp /etc/apt/sources.list /etc/apt/sources.list.bak

2、编辑源列表文件

vim /etc/apt/sources.list

3、将原来的列表删除,添加如下内容 这里使用网易镜像地址为例,其它自己网上搜索下。

deb http://mirrors.163.com/ubuntu/ Codename main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ Codename-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ Codename-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ Codename-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ Codename-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ Codename main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ Codename-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ Codename-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ Codename-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ Codename-backports main restricted universe multiverse

以上的配置中,表明版本的就是关键字“Codename”,这是Ubuntu表示版本的一种形式(Ubuntu称其为Codename),它即对应了一个发行版。版本号和Codename的对应关系如下表。这里只需要将上面的Codename字符串替换为下文中具体的Codename即可。

版本 别名(codename) 发布日期
4.10 Warty Warthog(长疣的疣猪) 2004年10月20日
5.04 Hoary Hedgehog(灰白的刺猬) 2005年4月8日
5.10 Breezy Badger(活泼的獾) 2005年10月13日
6.06 Dapper Drake(整洁的公鸭) 2006年6月1日(LTS)
6.10 Edgy Eft(急躁的水蜥) 2006年10月6日
7.04 Feisty Fawn(坏脾气的小鹿) 2007年4月19日
7.10 Gutsy Gibbon(勇敢的长臂猿) 2007年10月18日
8.04 Hardy Heron(耐寒的苍鹭) 2008年4月24日(LTS)
8.10 Intrepid Ibex (勇敢的野山羊) 2008年10月30日
9.04 Jaunty Jackalope(得意洋洋的怀俄明野兔) 2009年4月23日
9.10 Karmic Koala(幸运的考拉) 2009年10月29日
10.04 Lucid Lynx(清醒的猞猁) 2010年4月29日
11.10 Oneiric Ocelot(梦幻的豹猫) 2010年10月13日
11.04 Natty Narwhal(敏捷的独角鲸) 2011年4月28日
12.04 Precise Pangolin(精准的穿山甲) 2012年的4月26日(LTS)
12.10 Quantal Quetzal(量子的绿咬鹃) 2012年的10月20日
13.04 Raring Ringtail(铆足了劲的猫熊) 2013年4月25日
13.10 Saucy Salamander(活泼的蝾螈) 2013年10月17日
14.04 Trusty Tahr (可靠的塔尔羊) 2014年4月18日 (LTS)
14.10 Utopic Unicorn(乌托邦独角兽) 2014年10月23日
15.04 Vivid Vervet (活泼的小猴) 2015年4月
15.10 Wily Werewolf (狡猾的狼人) 2015年10月
16.04 Xenial Xerus (好客的非洲地松鼠) 2016年4月 (LTS)
16.10 Yakkety Yak(牦牛) 2016年10月
17.04 Zesty Zapus(开心的跳鼠) 2017年4月
17.10 Artful Aardvark(机灵的土豚) 2017年10月
18.04 Bionic Beaver(仿生海狸) 即将发布2018年4月(LTS)

如何检查当前版本codename

可以使用如下命令:
root@virtual-machine:/# lsb_release -a
 No LSB modules are available.
 Distributor ID: Ubuntu
 Description: Ubuntu 16.04.1 LTS
 Release: 16.04
 Codename: xenial

4、运行sudo apt-get update

附带163镜像说明:http://mirrors.163.com/.help/ubuntu.html

发表在 服务器 | 标签为 | 留下评论

docker下安装ubuntu以及ssh服务进行链接

docker像虚拟机vps一样安装玩转系统。

1、安装ubuntu系统

在docker的hub仓库中,有专门的ubuntu系统。我们直接用使用就可以了。

docker search ubuntu

2、选择要拉下了的镜像

docker pull ubuntu

这里可以很很慢,因为镜像是在国外。使用镜像加速就可以了。

在/etc/docker/daemon.json 文件并添加上 registry-mirrors 键值。如果没有文件,则新建一个。键值如下:

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

重启服务: service docker restart 。

3、下载完毕后,查看镜像:

docker images

4、运行容器

docker run --name iubuntu -t -i -d -p 3316:22 ubuntu

参数: –name 指定生成的容器的名称
-i: 以交互模式运行容器,保证容器中STDIN是开启的。通常与 -t 同时使用;
-t: 为容器重新分配一个伪tty终端,通常与 -i 同时使用;
-d: 后台运行容器,并返回容器ID;
-p:可以指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器。支持的格式有 hostPort:containerPort、ip:hostPort:containerPort、 ip::containerPort。
ubuntu 则是镜像名称,镜像ID也可以的。

5、进入容器终端安装ssh服务

docker exec -t -i [容器名orID]  /bin/bash
  • 1

安装ssh服务(默认为root权限用户):

  • 先执行更新
     apt-get update
  • 安装ssh-client命令
     apt-get install openssh-client
  • 安装ssh-server命令
     apt-get install openssh-server
  • 安装完成以后,先启动服务
     /etc/init.d/ssh start

启动后,可以通过“ps -e|grep ssh”查看是否正确启动。

 

  • 最后编辑sshd_config文件
    vim  /etc/ssh/sshd_config

    将PermitRootLogin xxxx-password 改为 PermitRootLogin yes。
    如果没有vim,先apt-get install vim。

  • 重启ssh服务
    service ssh restart
  • 设置ssh密码
    passwd root
  • 查看容器ip:
    apt-get install net-tools

    然后输入ifconfig,查看容器ip。

    6、ssh链接容器中的系统

    退出容器终端exit。
    在宿主机中,docker ps -a 命令中可以查看到容器的端口。在宿主机中,可以使用localhost进行登录,也可以使用刚才ifconfig查看的ip进行登录。

    ssh root@localhost -p 3316

    如果要从外部进行登录,就要使用宿主机的ip,端口不变。这样我们的任务就完成了。接下来,就可以自由玩耍服务器了。

    ssh root@x.x.x.x -p 3316

    x.x.x.x就是宿主机的ip地址。

    7、提交更改的镜像

    刚刚我们对容器进行了安装,可以如果删掉话。每次都要重新执行上面的操作,所以可以对镜像进行提交保存。

    docker commit  [改变了的容器的ID]  [REPOSITORY:TAG]

 

发表在 服务器 | 标签为 | 留下评论

CentOS和Ubuntu安装Docker的方法

老听说人docker,这两天就来试试看,发现最终用起来和虚拟机vps很像,肤浅认为对硬件和系统各个层面控制不同。

前提条件 

在root权限下,通过 uname -r 命令查看你当前的内核版本

Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的 Ubuntu 版本是否支持 Docker。

apt-get update
apt-get install -y docker.io

//docker.io ismaintained by Ubuntu
//docker-engine ismaintained by Docker

Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。

yum -y install docker-io

容器常用命令

service docker start //启动docker服务
service docker stop //停止docker服务
service docker restart //重启docker服务

docker info 或者 docker version 查看安装的信息

二、 docker常用命令

1、docker inspect [容器名orID]/[镜像名orID] //检查镜像或者容器的参数,默认返回 JSON 格式

//获得容器IP
docker inspect cocky_hermann | grep IPAddress
//将容器的8000端口映射到docker主机的8001端口
iptables -t nat -A  DOCKER -p tcp --dport 8080 -j DNAT --to-destination 172.17.0.2:8000

2、docker logs [容器名orID] //获取容器运行时的输出日志

-f 跟踪容器日志的最近更新;
-t 显示容器日志的时间戳;
–tail=”10” 仅列出最新10条容器日志。

3、查看容器目录

docker ps   //查看正在运行的容器
docker ps -a  //查看所有的容器,包括已经停止的

4.查看镜像目录

docker images

5、启动、杀死、停止、删除(删除容器必须先停止,再执行删除)容器

docker start [容器名orID]
docker kill  [容器名orID]
docker stop  [容器名orID]
docker rm    [容器名orID]

6、删除镜像(需要先删除容器,再删镜像)

docker rmi  [镜像名orID]
//强制删除
docker rmi -f <imageID>
//删除所有none镜像
docker rmi $(docker images | grep "none" | awk '{print $3}') 
//删除所有镜像
docker rmi $(docker images -q)

7、查看一个镜像的历史

docker history  [镜像名orID]

8、启动容器

  • 启动容器并启动bash(交互方式):
    docker run -i -t [镜像名orID] /bin/bash
  • 启动容器以后台方式运行(更通用的方式):
    docker run -d -it  [镜像名orID]

9、附着到容器

  • 附着到正在运行的容器:
    docker attach [容器名orID]
  • 进入正在运行的容器内部,同时运行bash(比attach更好用):
    docker exec -t -i [容器名orID]  /bin/bash

10、从dockerhub检索image

docker search [镜像名]

11、拉取、下载镜像

docker pull [镜像名]

这里可能很慢,因为镜像是在国外。使用镜像加速就可以了。

在/etc/docker/daemon.json 文件并添加上 registry-mirrors 键值。如果没有文件,则新建一个。键值如下:

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

12、发布镜像

docker push <namespace>/<image name>

13、查看docker基础信息

  • 查看docker版本:
    docker version
  • 查看docker系统的信息
    docker info

14、构建docker镜像

  • 通过commit提交改变构建镜像
    docker commit  [改变了的容器的ID]  [REPOSITORY:TAG]

    如:docker commit 6282cee20e5b anumbrella/ubuntu
    当然还可以更详细一点:
    docker commit -m=”add ssh” –author=”anumbrella” 6282cee20e5b anumbrella/ubuntu:ssh

  • 通过Dockerfile来构建镜像
    docker build -t [REPOSITORY:TAG] -f [Dockerfile文件]  [Dockerfile目录]

    如: docker build -t anumbrella/ubuntu:ssh -f /docker/ubuntu/Dockerfile /docker/ubuntu

15、保存、加载docker镜像

保存镜像

docker save [OPTIONS] IMAGE [IMAGE...]

将docker的镜像打包保存下载下来。
如:
docker save -o myUbuntu.zip anumbrella/ubuntu:ssh
也可以使用
docker save anumbrella/ubuntu:ssh>myUbuntu.zip

加载镜像

docker load [OPTIONS] IMAGE [IMAGE...]

如:
docker load -i myUbuntu.zip
也可以使用
docker load < myUbuntu.zip

//打包镜像
docker save -o python-achievements-image.tar.gz <imageName>
//加载镜像
docker load -i python-achievements-image.tar.gz

docker hub

//登录docker hub,输入用户名userName密码登录
docker login
//退出
docker logout
//命名镜像
docker tag <imageName> <userName>/<imageName>
//发布镜像,在docker hub创建仓库imageName
//构建镜像。将某个容器提交到本地仓库。无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分
docker commit <containerId> <userName>/<imageName>
//将本地仓库推送到远程仓库
docker push <userName/imageName>

//发布镜像后,镜像保存在自己的用户名下,根据用户名可查询所有镜像,然后pull相应的镜像
docker search coldchains

NAME                             DESCRIPTION   STARS     OFFICIAL   AUTOMATED
coldchains/python_achievements                 0                    
coldchains/python-mysql                        0

在容器中的操作

//退出容器并关闭
exit
//退出容器不关闭
control+P+Q

发表在 服务器 | 标签为 | 留下评论

git删除远程分支后,本地依然能看到的解决办法

今天切换分支后,发现很多远程已经删除的分支在本地依然可以看到。

使用命令 git remote show origin,可以查看remote地址,远程分支,还有本地分支与之相对应关系等信息。

分支状态 (use 'git remote prune' to remove)

此时我们可以看到那些远程仓库已经不存在的分支,根据提示,使用

 git remote prune origin

命令来同步删除了那些远程不存在的分支。

发表在 服务器 | 标签为 | 留下评论