Submitted by gouki on 2019, March 31, 8:15 PM
鉴于10多年前还留了几百块在琥珀网里,只能记录一下转出步骤了。。。。
XML/HTML代码
- 第一步,琥珀网 点击菜单上的“我的域名”
-
- 第二步,琥珀网 点击你要转出的域名,进入“域名面板”
-
- 第三步,琥珀网 点击“基本设置”
-
- 第四步,琥珀网 把“域名转移锁定”设置为关闭
-
- 第五步,琥珀网 返回上一个页面,回到“域名面板”
-
- 第六步,琥珀网 点击“高级设置”
-
- 第七步,琥珀网 点击“邮件索取转移注册商密码即 Auth code”
-
- 第八步,琥珀网 到此域名已经解锁并且转移密码也发到域名所有人的邮箱,收到的邮件
-
- 第九步,琥珀网 拿“转移密码”去新的注册商提交转移即可
记得可能会在垃圾邮件里。
BTW:琥珀的域名要注册满60天后,才能转出(注册完后就等上2个月吧)
Misc | 评论:0
| 阅读:8240
Submitted by gouki on 2019, March 30, 9:26 AM
最近好象phpcomposer的镜像有点问题,有些JSON包好象都无法更新了。还出现了404,导致根本无法更新,建议先换成laravel-china.org的源吧
打开:dl.laravel-china.org,里面有配置。如果偷懒,这一句也行:
XML/HTML代码
- composer config -g repo.packagist composer https://packagist.laravel-china.org
Tags: composer
PHP | 评论:0
| 阅读:11844
Submitted by gouki on 2019, March 27, 4:37 PM
网上找的,主要是因为在国内,用了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
Misc | 评论:0
| 阅读:9592
Submitted by gouki on 2019, March 15, 8:53 AM
应该不会消失的链接:
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 的脚本,主要是用来检测哪些文件被人修改了,用做防篡改。可能最近会重新用上,温故一下旧知识点
Linux | 评论:0
| 阅读:8863
Submitted by gouki on 2019, March 14, 8:29 PM
本文是利用nginx的proxypass来做代理到workerman创建的webserver上,从而使得github的git webhook可以起作用。
代码不复杂
1、准备一个composer.json,内容超短:
JavaScript代码
- {"name":"auto deploy","authors":[{"name":"gouki","email":"neatcn@qq.com"},"require":{"workerman/workerman":"dev-master"},"license":"MIT"]}
2、复制下面的代码,并赋予可执行权限(也可以不赋予,直接使用php xxx.php start 即可)
PHP代码
- #!/usr/bin/env php
- <?php
-
-
-
-
-
-
-
-
-
- use Workerman\Connection\ConnectionInterface;
- use Workerman\Worker;
-
- include __DIR__ . "/vendor/autoload.php";
-
-
-
- define('HTTP_SERVER', "http://0.0.0.0:8002");
-
- define('RUNTIME_PATH', __DIR__ . "/runtime/");
-
-
-
- Worker::$pidFile = RUNTIME_PATH . str_replace('/', '_', __FILE__) . ".pid";
-
- $config = [
- 'demo.neatstudio.com' => [
- 'target' => '/server/wwwroot/yzhan/neatstudio.com',
- 'secret' => '123456',
-
- 'keyword' => 'deploy',
- 'commands' => [],
- ]
- ];
-
- $worker = new Worker(HTTP_SERVER);
- $worker->count = 1;
- $worker->reloadable = false;
- $worker->onWorkerStart = function() {
- };
- $worker->onError = function(ConnectionInterface $connection) {
- $connection->close(resp_error_msg("ERROR", ['request' => func_get_args()]));
- };
-
- $worker->onMessage = function(ConnectionInterface $connection, $data) use ($config) {
-
- $server = $data['server'];
- if($server['CONTENT_TYPE'] === "application/x-www-form-urlencoded"){
- $post = json_decode($data['post']['payload'], true);
- } else{
- $post = $data['post'];
- }
- $repository = $post['repository']['name'] ?? "";
- $commitMsg = $post['head_commit']['message'] ?? "";
-
- if(!isset($config[$repository])){
- $connection->close(resp_error_msg('GIT资源未配置'));
- return;
- }
- $deployKeyword = $config[$repository]['keyword'];
-
- if($commitMsg && $deployKeyword && strpos($commitMsg, $deployKeyword) === false){
- $connection->close(resp_error_msg('未检测到关键字,不用部署'));
- return;
- }
-
-
-
- if(strpos($server['HTTP_USER_AGENT'], "GitHub-Hookshot/") === false ||
- $server['HTTP_X_HUB_SIGNATURE'] !== "sha1=" . hash_hmac('sha1', $GLOBALS['HTTP_RAW_REQUEST_DATA'], $config[$repository]['secret'])){
- $connection->close(resp_success_msg('数据校验失败'));
- return;
- }
-
- $ret = '';
-
- $commands = [
- "cd {$config[$repository]['target']} ",
- "git fetch --all",
- "git reset --hard origin/master",
- "./yii cache/flush-schema --interactive=0",
- ];
- $commands = array_merge($commands, $config[$repository]['commands'] ?? []);
- exec(join(" && ", $commands), $ret);
-
- $connection->close(resp_success_msg('更新成功', $ret));
- };
- Worker::$logFile = RUNTIME_PATH . "workerman.log";
- Worker::runAll();
-
- function resp_json($data, $message = '', $is_error = 0)
- {
- $result['status'] = 0;
- if($is_error){
- $result['error'] = $data;
- } else{
- $result['status'] = 1;
- $result['datas'] = $data;
- }
- $result['message'] = $message;
- return json_encode($result, JSON_UNESCAPED_UNICODE);
- }
-
- function resp_success($data)
- {
- return resp_json($data);
- }
-
- function resp_success_msg($message, $data = [])
- {
- return resp_json($data, $message);
- }
-
- function resp_error($data)
- {
- return resp_json($data, '', 1);
- }
-
- function resp_error_msg($message, $data = [])
- {
- return resp_json($data, $message, 1);
- }
是不是基本上控制 在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也支持多线程和多进程。性能也不差
PHP | 评论:0
| 阅读:9167