记一次作死升级Docker/gitlab失败

前言 今晚心血来潮,在机器上apt-get update&& upgrade了下,发现了个docker-ce的更新,然后作死发现我的docker 版本还是17.x,都8102年了,让人知道我还在用17.x多不好,于是作死升级了docker-ce. ps: 我使用的gitlab image gitlab开始挂啦 升级后,人工start了一些没有start成功的容器后,打开gitlab,发现500了, 于是发现事情不对啦… 尝试恢复 作死的是,我尝试docker-compose pull了新镜像,然后重启重新创建,还是挂得… 恢复备份试试看咯 幸好此镜像自带了每天备份打包到本地附送备份至s3,所以虽然挂了,我一点也不慌。 查看了下backup,最近一个备份是今日早上9点,看来问题不大,于是开始恢复之旅。 恢复之旅 首先,安装官方文档,尝试第一次恢复 docker-compose run --rm gitlab app:rake gitlab:backup:…

使用Docker 打包部署Laravel 应用

Laravel是目前最流行的PHP框架,特点是开发速度快,当然部署也麻烦。 传统部署流程: Composer安装依赖 使用Apache/Nginx进行部署Laravel的Web接口 使用Supervisor作为Laravel队列服务的进程守护 设置crontab定期执行Laravel的定时任务 看起来,每次部署Laravel还是挺麻烦的,有了Docker后,我们可以使用Docker的特性来集成基本的部署操作,并且由于容器的特性,还可以使的应用跑的时候更加安全。 使用Apache打包基础镜像 这里我们使用的基础镜像为: php:7.1-apache,之后可以使用docker-php-ext-install安装我们需要的PHP扩展。 完整的Apache基础镜像Dockerfile参见Github. 使用Composer安装依赖 # 拷贝代码到html目录 COPY . /var/www/html # 安装Composer RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer # 安装依赖 ONBUILD RUN cd /var/www/…

使用Docker安装Gitlab

对于自己的私有项目来说,一直托管在bitbucket,最近开始研究CI,虽然Bitbucket现在也有pipelines了,也有免费额度,但是每个月的build time可能对于自己不是很够用,不是就开始捣鼓了Gitlab. Gitlab虽然有一个一键安装脚本,但是依赖太多,会将本地环境,包括nginx都替代掉,这时候用Docker在合适不过了,这里我们以Debian/Ubuntu下安装Docker以及docker-compose为例。 安装 Docker apt-get install curl curl -fsSL https://get.docker.com/ | sh curl -fsSL https://get.docker.com/gpg | apt-key add - 安装docker-compose docker-compose可以使用pip安装,所以这里我们先安装pip. apt-get install python3-setuptools easy_install3 pip 安装好后使用pip安装docker-compose: pip install docker-compose…

用Nginx反代运行于Apache的Laravel

很早之前,我把自己的vps从apache切换到了nginx,那时候是因为vps性能不好,能省就省。 后来经常遇到php5-fpm挂掉等各种情况导致跑php程序经常会502,于是,从去年开始,我开始将我的php站点逐步切换至apache,并使用nginx进行反代。 这时候,其实很想吐槽php,还得弄个apache来跑…. 后来,当开始反代一些laravel写的网站的时候,遇到了一些坑,所以写这篇文章记录下。 Apache配置 假设我们这里用9000端口在apache监听了一个vhost,具体配置就不写了XD Nginx配置 http的vhost配置: server { listen 80; server_name example.com; location / { proxy_pass http://127.0.0.1:9000; proxy_set_header Host $host:$server_port; proxy_set_header X-Forward-For $remote_addr;…

ss-panel v3

唔,最近这几个月,断断续续花了挺长时间的重构ss-panel v3,主要是中间有段时间加班太多,搞得我每啥时间继续写,于是花了非常多的时间才完成v3. v2的真的好low,于是就像根据mvc模式重构下v3。 此次重构的feature: MVC模式,实现了php代码和视图的分离 Composer进行依赖管理 配置文件分离到.env文件 优雅的连接 安全性提升 多主题支持 嘛,其实主要是这半年来基本都是写golang,php很少写,于是也花时间复习下。然后说下用到的一些轮子吧: Slim3: 路由转发,轻量级的php micro framework Eloquent ORM: Laravel用的model,这么好的轮子当然是直接拿来用啦。 smarty: 一个比较经典的php模板吧,其实各种php模板引擎feature都差不多。 其他一些轮子不是重点就不列了。 魔改的shadowsocks-go 然后,就是重构的时候,自己改了个manyuser版本的shadowsocks-go. 为什么不用Python版本改呢,因为我不会蛇语233 要说go版本的feature吧,其实都是然并卵。毕竟ss的瓶颈不会在cpu,虽然golang各种异步爽,然而还不如一个好的线路来得好,不过如果说feature吧,可能就是我改的这个版本,支持自定义加密方式,…

从独立博客到微信公众号

此post缘由2条@wzyboy @yegle的tweets的感慨。 Part 0 此post比较杂,只是想吐槽下。 在Twitter/微博还没火的时候,很多人写blog的频率还是很高的,那时候,Google Reader是很多人的获取信息的重要工具,包括我。 依稀记得我是从09年的暑假开始成为Google Reader的重度用户的,直到GR关闭后,仍然有Feedly替代了GR成为阅读RSS的工具。 然而现在,或许说大概10年左右开始,好多人的blog都开始长草,包括我,一年能发几篇post就不错了吧,就好像我也时隔好几个月再次写了这篇blog。 如果说,Google Reader不关闭,而是开启收费功能,或许将会是我最愿意付费的工具,没有之一,然而它关闭了,连个收费选项都没有。 在几个月前,我开始觉得WordPress太大了,想自己弄个简单的blog系统,然后恢复以前的更新频率,现在看起来似乎有点233。 Part 1 好吧,现在该说到微信公众号了,这或许是腾讯这几年最成功的产品了吧,诞生了许多以微信公众号服务的公司。 作为一个比较依赖国外服务的用户,微信似乎仍然是我的主要移动端IM,大概是大学开始那会儿开始流行微信的吧。 我也不小心订阅了许多公众号服务号什么的,其实我至今分不清。 朋友圈里偶尔也会有人发一些文章的链接,我偶尔也会打开公众号看看。…

[OS X]小技巧: SSH连接远程vps长时间不操作不掉线

用*nix的Terminal远程连接VPS的时候,长时间不操作,就会掉,这时候可以已通过修改sshd_config,来使得长时间不操作,也不会掉线。 Linux下,可以通过修改 /etc/ssh/sshd_config 文件,添加 <br></br> ServerAliveInterval 20<br></br> ServerAliveCountMax 1993<br></br>``` 而OS X的此文件在 /etc/sshd_config,修改内容同上。 添加的内容意思为,每隔20秒向服务器请求一次心跳,超过1993次没响应就认为掉线。 注:以上修改均在客户端修改,而不是在VPS上修改。…

Windows带来的一些奇怪的习惯

最近一个大学女同学也买了个MacBook Air,然后微信上跟我说,各种不会用,是不是只有一个分区啊什么的,然后就想起了之前一个推油的Macbook入手文章人家家人第一次用就觉得好熟悉,然后为啥用过win的人,就会如此的不习惯,然后我就想写下这篇blog吐槽下win用户的几个奇怪的习惯,或者说错觉? 为什么要分区?分那么多区干嘛? 自从我原来的PC本换了个SSD,256G的,我就只给win8弄了一个区,也就是C盘。然后,每次有人看到我只有一个C盘就各种奇怪,问我为啥只有一个盘。 在*nix下,一般都是只有一个区,当然也可以分别给/boot /home分别挂载,这样迁移数据或者换系统的时候资料丢得少,/boot分区单独分也比较安全写,而且/boot分区也挺小的。 分区最初目的应该是为了方便管理文件,但是在C盘下,或者~文件夹下新建目录不也是可以方便管理文件?新建那么多区,会造成每个分区的剩余空间浪费的情况发生,显然,win下分CDEFG太多分区没啥意义,但是win用户就是已经习惯了。 软件不要装C盘?装多了会卡? 这个真的是最让人无语的,为啥软件不能装C盘?Google的大部分win软件都是默认只能装在C盘,问都不问的。 很多人都以为,装C盘会卡,如果C盘剩余容量太小了可能真的会卡,但是为啥不给C盘分个120GB呢,已经好多人问我说,如何给C盘扩容?…

入手MacBook Air

在和某犬科动物@fdb713谈人生的时候,然后就有点想买个Mac,刚好这个2个月有了些收入,于是决定买个MacBook Air。 由于比较穷,买不起MacBook Pro with Retina Display,还是买个Air吧,前几天去了下电子城,看了下Pro和Air,感觉Air真的好薄,然后由于我们猫科动物眼睛不是很好,没觉得Retina屏幕有想象的那么棒,然后好像也比较喜欢Air,于是就决定买Air吧。 问了几个大大,都说8GiB的Ram很有必要,而且之前的笔记本也是8GiB,所以还是买定制的Air。 淘宝下单后,第二天不停的查快递,终于到了。然后拆了后,查了下电池循环啥的,基本确定没问题。 硬件 薄自然是没话说,屏幕13.3存,但是由于分辨率的原因,不会觉得小,比之前的1366*768好多了。充电啥的苹果做得确实很人性化啥的,那个耳机孔开始插的时候没用力不能完全插进去,还以为是不兼容啥的orz… 开始用触摸板,有点不习惯,比较win下鼠标用多了,只用触摸板感觉怪怪的,用了一天以后,基本都不用鼠标了,而且各自操作都很ok。 折腾 第一次开机以后,…

在Windows上使用Git

首先,下载Git for Windows. 然后安装基本就是一步一步点击Next. 设置 然后,打开Git Bash分别设置Username和email git config –global user.name “Your Name Here” git config –global user.email “your_email@example.com” 设置SSH登陆 ssh-keygen -t rsa -C “you@exmaple.com” 完成后,一般会生成一个文件在C:/user/username/.ssh/id_rsa.pub 如果是用Github,将这个文件放到这里即可。…