命令模式:
一个文件就:
git checkout origin/master netpc.com.cn.txt
全部就:
git checkout origin .
服务器端
安装git
yum –y install git
创建git用户
useradd git
passwd git
创建git项目
cd /data/git
git init –bare netpc.com.cn.git
chown git:git netpc.com.cn.git
为了安全设置git登录方式
vi /etc/passwd
git:x:502:502::/home/git:/usr/bin/git-shell
客户端
网上找个安装git for windows
加入密钥方式免密码同步。
创建密钥
ssh-keygen -t rsa -C “你的邮箱”
本地取得密钥
一般到C:\Users\Administrator\.ssh\id_rsa.pub找到.ssh目录下的id_rsa.pub文件,复制其中内容到服务器端。
将密钥加入服务器列表
服务器创建了git用户,在home就有该目录了,没有对应文件就创建,复制秘钥的内容到文件里。
vi /home/git/.ssh/authorized_keys
复制后保存退出。
或者将id_rsa.pub传到 git服务器,使用命令复制
cat id_rsa.pub >> authorized_keys (注意是>>,不是>,>会覆盖旧的数据
设置ssh文件夹为700权限,authorized_keys为 600权限
本地git pull试试看
1.secureCRT客户端设置
secureCRT:选项->会话选项->终端->反空闲 中设置每隔多少秒发送一个字符串,或者是NO-OP协议包
putty:putty -> Connection -> Seconds between keepalives ( 0 to turn off ), 默认为0, 改为300.
2.服务器设置
vi /etc/ssh/sshd_config
ClientAliveInterval指定了服务器端向客户端请求消息 的时间间隔, 默认是0, 不发送
ClientAliveInterval 60表示每分钟发送一次, 然后客户端响应, 这样就保持长连接了
ClientAliveCountMax, 使用默认值3即可.ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开
3.重启ssh服务
service sshd restart
这里简单举例下phalcon执行sql执行方法,具体看devtools下的pdo.php文件。
在控制器下可以执行以下代码:
$success = $this->di->get('db')->query("update netpc set webname = 'netpc.com.cn' where id = $id"); print_r($success->numRows());
其他方式:
* <code>
* $result = $this->di->get('db')->query("SELECTFROM robots ORDER BY name");
* $result->setFetchMode(Phalcon\Db::FETCH_OBJ);
* while ($robot = $result->fetch()) {
* echo $robot->name;
* }
* </code>
* <code> * $result = $this->di->get('db')->query("SELECTFROM robots ORDER BY name"); * $result->setFetchMode(Phalcon\Db::FETCH_NUM); * while ($robot = result->fetchArray()) { * print_r($robot); * } * </code>
我的环境windows7和phpstrom 2018.2
在 https://github.com/phalcon/phalcon-devtools/releases 下载phalcon-devtools。
将 ide/gen-stubs.php 文件中的常量改成你的解压的目录路径:
define('CPHALCON_DIR' , 'E:\phpStudy\WWW\phalcon\phalcon-devtools-3.4.0');
然后在cmd窗口执行如下命令:
php gen-stubs.php
成功后会在ide文件下生产1个带版本名称的文件夹
进入我的就是E:\phpStudy\WWW\phalcon\phalcon-devtools-3.4.0\ide\2.0.10\Phalcon
之后就是你所用的IDE将生成的路径包含进来
打开phpstrom,左边项目external libraries点击右键
选择configure php include paths…
在include paths点击旁边+号,选择刚才的目录
重启ide,ctrl点击phalcon内置函数看看有跳转提示没?
点击File->Settings->Editor->General,右侧勾选Soft Wraps下的
点击appaly应用即可
清华TUNA镜像源:https://mirror.tuna.tsinghua.edu.cn/alpine/
中科大镜像源:http://mirrors.ustc.edu.cn/alpine/
阿里云镜像源:http://mirrors.aliyun.com/alpine/
可以使用如下命令:
sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
也可以直接编辑 /etc/apk/repositories 文件。以下是 v3.5 版本的参考配置:
$ vi /etc/apk/repositories # /media/cdrom/apks http://mirrors.ustc.edu.cn/alpine/v3.5/main http://mirrors.ustc.edu.cn/alpine/v3.5/community
upgrade命令升级系统已安装的所以软件包(一般包括内核),当然也可指定仅升级部分软件包(通过-u或–upgrade选择指定)。upgrade:升级当前已安装的软件包
$ apk update #更新最新本地镜像源 $ apk upgrade #升级软件 $ apk add --upgrade busybox #指定升级部分软件包
search命令搜索可用软件包,-v参数输出描述内容,支出通配符,-d或–description参数指定通过软件包描述查询。search:搜索软件包
$ apk search #查找所以可用软件包 $ apk search -v #查找所以可用软件包及其描述内容 $ apk search -v 'acf*' #通过软件包名称查找软件包 $ apk search -v -d 'docker' #通过描述文件查找特定的软件
http://mirrors.ustc.edu.cn/help/alpine.html
linux主要两大派系:
RedHat 系列:Redhat、Centos、Fedora 等
Debian系列:Debian、Ubuntu 等
两者的区别是dpkg绕过apt包管理数据库对软件包进行操作,所以你用dpkg安装过的软件包用apt可以再安装一遍,系统不知道之前安装过了,将会覆盖之前dpkg的安装。
1、dpkg是用来安装.deb文件,但不会解决模块的依赖关系,且不会关心ubuntu的软件仓库内的软件,可以用于安装本地的deb文件。
2、apt会解决和安装模块的依赖问题,并会咨询软件仓库, 但不会安装本地的deb文件, apt是建立在dpkg之上的软件管理工具。
这样也就解释了rpm和yum的关系。
一个踩坑学习过程,有个老系统必须运行在php5.3-fpm上,在阿里云上找了个镜像才40m很开心,启动容器就弄了半天。nginx是本地的,php是docker容器上的。
本地创建一个nginx放网站的目录/data/wwwroot/default,使用参数-v映射到容器上,这样本地配置nginx才不需要去指对应的目录。
没用-v映射nginx就必须如下:
fastcgi_param SCRIPT_FILENAME /data/wwwroot/default$fastcgi_script_name;
做了映射就默认如下:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
启动容器:
root@netp.com.cn:/home/ken# docker run –name php5.3.29 -p 9000:9000 -v /data/wwwroot/default:/data/wwwroot/default -it registry.cn-hangzhou.aliyuncs.com/sjdskl/php5.3-fpm:latest
接着要登录容器操作,也是坑:
最后登上去了,很开心,看看是什么系统先:
/var/www/html # uname -a Linux 9eb38713fded 4.4.0-45-generic #66-Ubuntu SMP Wed Oct 19 14:12:37 UTC 2016 x86_64 Linux /var/www/html # cat /proc/version Linux version 4.4.0-45-generic (buildd@lgw01-34) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.2) ) #66-Ubuntu SMP Wed Oct 19 14:12:37 UTC 2016
2个命令都看到Ubuntu,这就容易了,开心,接着就发现我靠,
/bin/sh: apt-get: not found
什么没有apt,搞什么精简的结果,继续往坑了跳,没有那就安装了
网上找了半天在官网下了个包
http://security.ubuntu.com/ubuntu/pool/main/a/apt/
再使用dpkg命令来安装deb包,执行 dpkg -i apt_1.6.3_amd64.deb
靠接着出错,
/usr/src # dpkg -i apt_1.6.3_amd64.deb dpkg: error: failed to open package info file '/var/lib/dpkg/status' for reading: No such file or directory
这是什么鬼,后来我从本地复制了一个status进去,还是无法安装。
经过痛苦的过程我发现
/usr/src # cat /etc/issue Welcome to Alpine Linux 3.4 Kernel \r on an \m (\l)
我里个去,怎么跑出来个Alpine Linux,不是Ubuntu吗?经过一番搜索原来是docker推荐的系统,骂人千百遍,也知道它的包管理器apk命令。接着就真的好办了吗?
下载的时候因为没有wget,搞的我还学会了一个curl -O来下来。
现在先安装redis扩展
/usr/src/php/ext # wget https://github.com/phpredis/phpredis/archive/3.1.3.tar.gz tar xfz 3.1.3.tar.gz mv phpredis-3.1.3/ redis docker-php-ext-install redis
无论我用3.1.3.tar.gz还是2.2.8.tar.gz都会出现以下错误。
configure: error: /bin/sh ./config.sub x86_64-linux-musl failed
换个方式安装pecl:
pecl install redis
echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini
http://php.net/manual/zh/install.pecl.pear.php
卸载可以用pecl uninstall redis
这里还要说下php -i可以看到Scan this dir for additional .ini files 和Additional .ini files parsed 都指向了/usr/local/etc/php/conf.d/这个目录,所以配置要放那里去。
重启php后可以 php -m看下模块。
接着安装memcached你会发现提示需要libmemcached。就是需要这个支撑的意思。
wget https://launchpadlibrarian.net/165454254/libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
tar -xvzf libmemcached-1.0.18.tar.gz
./configure --with-memcached --disable-memcached-sasl
make
下载、解压后配置、编译就以下错误。
CXX libtest/libtest_libtest_la-cmdline.lo libtest/cmdline.cc:65:15: error: 'environ' was declared 'extern' and later 'static' [-fpermissive] static char **environ= NULL; ^ In file included from ./libtest/common.h:77:0, from libtest/cmdline.cc:39: /usr/include/unistd.h:182:15: note: previous declaration of 'environ' extern char **environ; ^ libtest/cmdline.cc: In member function 'libtest::Application::error_t libtest::Application::run(const char**)': libtest/cmdline.cc:206:12: error: 'POSIX_SPAWN_USEVFORK' was not declared in this scope flags |= POSIX_SPAWN_USEVFORK; ^ Makefile:7305: recipe for target 'libtest/libtest_libtest_la-cmdline.lo' failed make[1]: *** [libtest/libtest_libtest_la-cmdline.lo] Error 1 make[1]: Leaving directory '/usr/src/php/ext/libmemcached-1.0.18' Makefile:3700: recipe for target 'all' failed make: *** [all] Error 2 /usr/src/php/ext/libmemcached-1.0.18 #
一直没解决,认为是gcc导致的,系统gcc版本5.30。
最后发现Alpine Linux竟然有自带的,马上试试看。
/usr/src/php/ext# apk search libmemcached libmemcached-doc-1.0.18-r1 libmemcached-libs-1.0.18-r1 libmemcached-1.0.18-r1 libmemcached-dev-1.0.18-r1
搜索下有包,马上add添加。
/usr/src/php/ext# apk add libmemcached (1/4) Installing db (5.3.28-r0) (2/4) Installing libsasl (2.1.26-r7) (3/4) Installing libmemcached-libs (1.0.18-r1) (4/4) Installing libmemcached (1.0.18-r1) Executing busybox-1.24.2-r14.trigger OK: 228 MiB in 68 packages
完成后运行安装memcached,3.0以上需要php7,所以我们安装2.2
/usr/src/php/ext # pecl install memcached-2.2.0
提示错误:
ERROR: `/tmp/pear/temp/memcached/configure --with-libmemcached-dir=no' failed
接着我搜索整个盘
/usr/src/php/ext # find / -name libmemcached
没有发现相关libmemcached目录。
竟然n次痛苦个各种尝试失败,最后我发现apk search libmemcached搜索出来的几个包不是全部都安全进去,我就一个个安装,终于在
apk add libmemcached-dev
这个安装后多了目录:
/usr/include/libmemcached
重新安装输入
libmemcached directory [no] : /usr/include/libmemcached
编译接着还是错,折磨死人啊。
直接下载源码编译安装:
wget https://pecl.php.net/get/memcached-2.2.0.tgz tar xfz memcached-2.2.0.tgz cd memcached-2.2.0/ /usr/local/bin/phpize
./configure –with-php-config=/usr/local/bin/php-config –enable-memcached –with-libmemcached-dir=/usr/include/libmemcached –disable-memcached-sasl
配置出现以下错误
checking for libmemcached location… configure: error: Unable to find memcached.h under /usr/include/libmemcached
根据查找,因为源码的原因需要做个软链接。
/var/www/html # mkdir -p /usr/lib/x86_64-linux-gnu/include/libmemcached
/var/www/html # ln -s /usr/include/libmemcached/memcached.h /usr/lib/x86_64-linux-gnu/include/libmemcached/memcached.h
再重新配置。
./configure –with-php-config=/usr/local/bin/php-config –enable-memcached –with-libmemcached-dir=/usr/lib/x86_64-linux-gnu –disable-memcached-sasl
错误需要zlib
checking for zlib location… configure: error: memcached support requires ZLIB. Use –with-zlib-dir=<DIR> to specify the prefix where ZLIB headers and library are locate
安装 apk add zlib-dev包,配置通过了。
接着make编译出现不同的提示?
/usr/include/libmemcached-1.0/struct/sasl.h:39:23: fatal error: sasl/sasl.h: No such file or directory
再次安装apk add cyrus-sasl-dev包
make再编译终于通过了,我的天啊。
Build complete. Don't forget to run 'make test'.
make install安装
/usr/src/php/ext/memcached-2.2.0 # make install
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20090626/
到这里你应该懂了吧。修改ini配置
vi /usr/local/etc/php/php.ini
extension=memcache.so
extension=memcached.so
重启php即可。php -m看了下 都有了
https://pecl.php.net/官方地址 php各种扩展
到这里终于大功告成,我想安装过这次扩展应该什么版本都会装了吧。
有问题留言。这里基本都是netpc.com.cn原创。
像我的登陆php容器后
/usr/local/etc/php/conf.d # ps aux|grep php
1 root 0:00 php-fpm: master process (/usr/local/etc/php-fpm.conf)
7 www-data 0:00 php-fpm: pool www
8 www-data 0:00 php-fpm: pool www
发现id 1就是php了,给它个信号让它重启即可,执行命令如下:
kill -USR2 1
如果是在外面也可以:
docker exec -it 容器id或名称 kill -USR2 1
或者你干脆重启容器 哈
docker restart 容器id或名称