手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2019年03月的文章

如何将域名转出琥珀网

 鉴于10多年前还留了几百块在琥珀网里,只能记录一下转出步骤了。。。。

XML/HTML代码
  1. 第一步,琥珀网 点击菜单上的“我的域名”  
  2.   
  3. 第二步,琥珀网 点击你要转出的域名,进入“域名面板”  
  4.   
  5. 第三步,琥珀网 点击“基本设置”  
  6.   
  7. 第四步,琥珀网 把“域名转移锁定”设置为关闭  
  8.   
  9. 第五步,琥珀网  返回上一个页面,回到“域名面板”  
  10.   
  11. 第六步,琥珀网  点击“高级设置”  
  12.   
  13. 第七步,琥珀网 点击“邮件索取转移注册商密码即 Auth code”  
  14.   
  15. 第八步,琥珀网 到此域名已经解锁并且转移密码也发到域名所有人的邮箱,收到的邮件  
  16.   
  17. 第九步,琥珀网 拿“转移密码”去新的注册商提交转移即可  
记得可能会在垃圾邮件里。
BTW:琥珀的域名要注册满60天后,才能转出(注册完后就等上2个月吧)
http://www.hupo.com,现在应该没有人用这个网站了吧?
 
 

phpcomposer换镜像

 最近好象phpcomposer的镜像有点问题,有些JSON包好象都无法更新了。还出现了404,导致根本无法更新,建议先换成laravel-china.org的源吧

打开:dl.laravel-china.org,里面有配置。如果偷懒,这一句也行:
 
XML/HTML代码
  1. composer config -g repo.packagist composer https://packagist.laravel-china.org  

Tags: composer

[转]2018国内优秀开源镜像站汇总

网上找的,主要是因为在国内,用了sury的PHP源,然后发现package.sury.org卡成狗,找啊找,找到了xtom.com.hk的镜像。发现非常快。顺便找到了下面的贴子。国内的PHP源,只有xtom有了,好纠结。好象香港的速度也挺快

原文来自:https://blog.csdn.net/gas_exchange/article/details/80913945

2018国内优秀开源镜像站汇总 
一、站点版 
企业站 
1.网易:http://mirrors.163.com/ 
2.阿里云:http://mirrors.aliyun.com/ 同步频率为每天一次,每天凌晨2:00-4:00为镜像的同步时间 
3.搜狐:http://mirrors.sohu.com/

1.清华大学:https://mirrors.tuna.tsinghua.edu.cn/ 
2.中国科技大学:http://mirrors.ustc.edu.cn/ 目前是中国大陆高校访问量最大,收录最全的开源软件镜像。 
3.北京理工大学:http://mirror.bit.edu.cn/web/ 
4.北京交通大学:https://mirror.bjtu.edu.cn/cn/ eclipse, rpmfusion, linux kernel 
5.浙江大学:http://mirrors.zju.edu.cn/ EPEL, Gentoo, Kali Linux, openSUSE, PostgreSQL 
6.南阳理工学院:http://mirror.nyist.edu.cn/ 下载速度不理想 
7.首都在线科技股份有限公司(英文名Capital Online Data Service):http://mirrors.yun-idc.com/ 
8.中国电信天翼云:http://mirrors.ctyun.cn/ 更新不及时

--EOF--

 

Tags: 镜像, mirrors

inotify的相关文章和资料

 应该不会消失的链接:

1、https://infoq.cn/article/inotify-linux-file-system-event-monitoring

2、http://ju.outofmemory.cn/entry/264098

3、http://icodeit.org/2015/03/build-monitor-script-based-on-inotify/ ,他有提到mac用fswatch

4、http://ju.outofmemory.cn/entry/278544 有一个现成的同步脚本

其实我5年前有写过一个inotifywait + php 的脚本,主要是用来检测哪些文件被人修改了,用做防篡改。可能最近会重新用上,温故一下旧知识点

 

nginx+workerman做自动CI(初级)

 本文是利用nginx的proxypass来做代理到workerman创建的webserver上,从而使得github的git webhook可以起作用。

代码不复杂

1、准备一个composer.json,内容超短:

JavaScript代码
  1. {"name":"auto deploy","authors":[{"name":"gouki","email":"neatcn@qq.com"},"require":{"workerman/workerman":"dev-master"},"license":"MIT"]}  
2、复制下面的代码,并赋予可执行权限(也可以不赋予,直接使用php xxx.php start 即可)
PHP代码
  1. #!/usr/bin/env php  
  2. <?php  
  3. /** 
  4.  * composer.json的内容,如果不依赖其他系统,则runtime目录设置为/,同时设置PORT 
  5.  * {"name":"auto deploy","authors":[{"name":"gouki","email":"neatcn@qq.com"},"require":{"workerman/workerman":"dev-master"},"license":"MIT"]} 
  6.  * 使用方法: 
  7.  * php {filename} start -d 
  8.  * php {filename} reload -g -d 
  9.  * php {filename} stop -g 
  10.  */  
  11.   
  12. use Workerman\Connection\ConnectionInterface;  
  13. use Workerman\Worker;  
  14.   
  15. include __DIR__ . "/vendor/autoload.php";  
  16.   
  17. // define('ROOT_PATH', __DIR__);  
  18. //http server的端口,用于给nginx做反代,不要和其他程序有冲突  
  19. define('HTTP_SERVER'"http://0.0.0.0:8002");  
  20. //存放LOG的位置,记得以 / 结尾  
  21. define('RUNTIME_PATH', __DIR__ . "/runtime/");  
  22.   
  23. //commit message中的关键字,检测到后才需要更新,如果留空。则全部更新  
  24. // define('DEPLOY_KEYWORD','deploy');  
  25. Worker::$pidFile = RUNTIME_PATH . str_replace('/''_'__FILE__) . ".pid";  
  26.   
  27. $config = [  
  28.     'demo.neatstudio.com' => [  
  29.         'target'   => '/server/wwwroot/yzhan/neatstudio.com',  
  30.         'secret'   => '123456',  
  31.         //commit message中的关键字,检测到后才需要更新,如果留空。则全部更新  
  32.         'keyword'  => 'deploy',  
  33.         'commands' => [],  
  34.     ]  
  35. ];  
  36.   
  37. $worker = new Worker(HTTP_SERVER);  
  38. $worker->count = 1;  
  39. $worker->reloadable = false;  
  40. $worker->onWorkerStart = function() {  
  41. };  
  42. $worker->onError = function(ConnectionInterface $connection) {  
  43.     $connection->close(resp_error_msg("ERROR", ['request' => func_get_args()]));  
  44. };  
  45.   
  46. $worker->onMessage = function(ConnectionInterface $connection$datause ($config) {  
  47.     // echo(sprintf("[%s]IP: %s:%s , Data: %s", date("Y-m-d H:i:s"), $connection->getRemoteIp(), $connection->getRemotePort(), var_export($data, true)));  
  48.     $server = $data['server'];  
  49.     if($server['CONTENT_TYPE'] === "application/x-www-form-urlencoded"){  
  50.         $post = json_decode($data['post']['payload'], true);  
  51.     } else{  
  52.         $post = $data['post'];  
  53.     }  
  54.     $repository = $post['repository']['name'] ?? "";  
  55.     $commitMsg = $post['head_commit']['message'] ?? "";  
  56.   
  57.     if(!isset($config[$repository])){//配置资源  
  58.         $connection->close(resp_error_msg('GIT资源未配置'));  
  59.         return;  
  60.     }  
  61.     $deployKeyword = $config[$repository]['keyword'];  
  62.     //只有有关键字的时候才会部署  
  63.     if($commitMsg && $deployKeyword && strpos($commitMsg$deployKeyword) === false){  
  64.         $connection->close(resp_error_msg('未检测到关键字,不用部署'));  
  65.         return;  
  66.     }  
  67.     // echo $server['HTTP_X_HUB_SIGNATURE'], "\n";  
  68.     // echo "sha1=" . hash_hmac('sha1', $GLOBALS['HTTP_RAW_REQUEST_DATA'], $config[$repository]['secret']), "\n";  
  69.   
  70.     if(strpos($server['HTTP_USER_AGENT'], "GitHub-Hookshot/") === false ||  
  71.        $server['HTTP_X_HUB_SIGNATURE'] !== "sha1=" . hash_hmac('sha1'$GLOBALS['HTTP_RAW_REQUEST_DATA'], $config[$repository]['secret'])){  
  72.         $connection->close(resp_success_msg('数据校验失败'));  
  73.         return;  
  74.     }  
  75.   
  76.     $ret = '';  
  77.     //开始执行  
  78.     $commands = [  
  79.         "cd {$config[$repository]['target']} ",  
  80.         "git fetch --all",  
  81.         "git reset --hard origin/master",  
  82.         "./yii cache/flush-schema --interactive=0",  
  83.     ];  
  84.     $commands = array_merge($commands$config[$repository]['commands'] ?? []);  
  85.     exec(join(" && "$commands), $ret);  
  86.     // exec("cd {$config[$repository]['target']} && git fetch --all && git reset --hard origin/master && ./yii cache/flush-schema --interactive=0 ", $ret);  
  87.     $connection->close(resp_success_msg('更新成功'$ret));  
  88. };  
  89. Worker::$logFile = RUNTIME_PATH . "workerman.log";  
  90. Worker::runAll();  
  91.   
  92. function resp_json($data$message = ''$is_error = 0)  
  93. {  
  94.     $result['status'] = 0;  
  95.     if($is_error){  
  96.         $result['error'] = $data;  
  97.     } else{  
  98.         $result['status'] = 1;  
  99.         $result['datas'] = $data;  
  100.     }  
  101.     $result['message'] = $message;  
  102.     return json_encode($result, JSON_UNESCAPED_UNICODE);  
  103. }  
  104.   
  105. function resp_success($data)  
  106. {  
  107.     return resp_json($data);  
  108. }  
  109.   
  110. function resp_success_msg($message$data = [])  
  111. {  
  112.     return resp_json($data$message);  
  113. }  
  114.   
  115. function resp_error($data)  
  116. {  
  117.     return resp_json($data'', 1);  
  118. }  
  119.   
  120. function resp_error_msg($message$data = [])  
  121. {  
  122.     return resp_json($data$message, 1);  
  123. }  

是不是基本上控制 在100行内?因为访问量不会太大。所以我设置worker->count = 1,即,只启用一个子进程。

有人会说了,其实写一个PHP文件就可以了,设置为web目录指定一个域名不就完事了吗?是的,你说的这样其实也行,但有一点,如果你需要执行git命令还有使用exec命令,可能你的权限就不足了。而且。如果你的GIT是 采用root权限来git pull的。你拉回来的文件的owner都是root,这时候还需要执行chown -R www-data:www-data . 来处理,如果你是当成web项目来做,可能你就没有这个权限。

因此workerman就有了这样的功能。毕竟他是以root权限来运行的(也可以指定其他权限,如果指定非www-data[ubuntu/debian],你还得有权限设置目录的用户组)

-----

对比wallE和那个女娲系统,我这个是超级简单了。只有一个文件。而且不能远程操作(远程操作建议使用本程序+ansible),是不是也简单的够你用了,至少比以前写的 每分钟执行git pull一次好很多,workerman也支持多线程和多进程。性能也不差

 

Records:812