2018/1/31

docker command memo

拉下/download 一個 image
docker pull debian:wheezy

啟動一個 container (from image)
docker run -it -name mycontainer debian:wheezy
-it : 啟動 interactive shell 和 terminal

看某個container 當初啟動時的 mount path
docker inspect -f '{{.Mounts}}' containerid

2018/1/24

OS 版本與開機啟動系統

真的一團亂..

這一篇How to configure a linux service to start automatically after a crash or reboot 中有幫忙整裡:

System V is the older init system:
  • Debian 6 and earlier
  • Ubuntu 9.04 and earlier
  • CentOS 5 and earlier
Upstart:
  • Ubuntu 9.10 to Ubuntu 14.10, including Ubuntu 14.04
  • CentOS 6
systemd is the init system for the most recent distributions featured here:
  • Debian 7 and Debian 8
  • Ubuntu 15.04 and newer
  • CentOS 7

2018/1/19

phabricator : 各種安裝... and fail

先 create 一個 14.04 版
sudo lxc-create -P ~/10G -t download -n ubuntu1404
...
trusty
amd64
..
完成,修改 rootfs 和 container config..
# Network configuration
lxc.network.type = veth
lxc.network.link = lxcbr0
lxc.network.flags = up
chroot 改 passowrd,
sudo chroot ./rootfs
#passwd
..
啟動...等 5min, 因為網路沒設好...
sudo lxc-start -F -P ~/10G -n ubuntu1404
這個版本在等 network interface 時沒有 message,所以看起來很像 hang 住...
大概等 ..2 min..

結果沒辦法用 root 登入,即使剛剛用 chroot, passwd 加了密碼也一樣。
所以只好 另起 console,用 lxc-stop 關機。
再chroot adduser, edit /etc/group
再 lxc-start,用 new user name login OK

修改 /etc/network/interfaces:
auto eth0
iface eth0 inet static
address 10.10.20.10
netmask 255.255.255.0
gateway 10.10.20.1
network 10.10.20.0
broadcast 10.10.20.25
dns-nameservers 10.244.128.5 10.244.128.6
安裝 nginx, mysql-server, php
apt-get install nginx mysql-server php5-fpm php5-msql
會問 mysql root password

完成。修改 nginx/site-availeble/default,enable php support

這個 OS 版本, nginx 的 root 在 /usr/share/nginx/html



這次裝 phabricator 來試試...

安裝 git
git clone https://github.com/phacility/phabricator.git
出現 error:
fatal: unable to access 'https://github.com/phacility/phabricator.git/': Problem with the SSL CA cert (path? access rights?)
這一篇 說,缺了package..
apt-get install ca-certificates
OK, clone 到 /usr/share/nginx/html (14.04 的 nginx root 在這裡)


16.04,最新的ˊlts 就是 16.04 了,但是他是php7.0,所以安裝有點..
google "phabricator 16.04 有一堆..
ref:install phabricator ubuntu16.04<-照這個ngnix 的 defult

最重要的就是
sudo add-apt-repository ppa:ondrej/php
但是加完還要 apt-get update,才找得到 ppa 的package。

php extension 安裝 fail,pecl 命令執行說找不到 extension (會是pear 版本問題?)
所以沒裝。

文章中列出編輯的config 檔部份,開頭的 '''XXX 那格 XXX 好像是段落說明(markdown?)...不是本文內容。
fpm/pool.d 下新增的phabricator 應該要加上 .conf : phabricator.conf
nginx/site-enable 的 default 要刪掉,劉 phabricator 的 link 就可以。

在設定完 phabricator.base_uri 之後,如果改了 nginx 的 server_name,連線會出現 error : not site ....
所以如果要改的話,要確保兩邊一致。

因為找不到改 administrator account 的辦法,所以只好把整個 data 刪掉重頭來:
./bin/storage destroy
很久...
./bin/storage upgrade --force
也很久..
之後再登入就是 create administrator 的畫面了..

bookmarks: docker + nginx


就 "How to Run Nginx in a Docker Container on Ubuntu 14.04" 來看,
就是把安裝完nginx 的 image 作為一個 固化 的系統。
然後用 docker 的 volume mapping -v host:container 功能,

代換掉系統中需要修改的地方(html, config.. etc)


這一篇 (install mariadb/mysql with docker)說明如何製作一個mysqldb 的 image。
就安裝 mysql,設定 password,之後再把 mysql database 改到 /data。
然後commit。-- 這就就是 mysql 的 docker image。

run 的時候用 -v 把local 的 mysql database mount 到 docker 的 /data


這個 是 lemp, nginx, mariadb, php 都在一個 container 上。

複合性的組成比較麻煩:

phabricator

比較難裝,參考
docker 上的安裝:

2018/1/18

LEMP -- 可能要先了解一下...

ref:https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04
大概就是apt-get install 一堆 ..

nginx 沒問題。先裝。
裝完就啟動了,如果沒有 firewall 擋住的話,這時候 去看 "http://自己ip" 就會看到 nginx 的歡迎

mysql-server,就只有會問 要用什麼 root password 而以。

php,因為要用 cgi 跟 mysql,所以還要裝 php-fpm php-mysql,裝這兩格,php-common 和一堆 dependency 就會自動裝。
裝完 php,就要 config nginx 使用 php。

nginx 裝完都沒動,就會有 default 這格 site config: (/etc/nginx/site-available/default)
修改一下..大部分看 default 內容的comment 會有..
  • 加入 index.php
  • 改自己的 servername (參考 /etc/hosts)
  • 把 location php 那個block uncomment 掉。注意comment 的內容, socket 跟 ip:port 兩格只能選一個。
用..
nginx -t 測試一下改完的 "default" site 內容對不對"
systemctl reload nginx

最後,就是寫一個 php 頁面測試一下...
create /usr/www/html/info.php
內容是
<?php
phpinfo();
用 browser 看 http://servername/info.php 就可以看到 php 的info 頁面。



測試一下

就參考這個, 裝 wordpress 試試...

format ext4 without journal

ref:http://www.commandlinefu.com/commands/view/11898/format-partition-with-ext4-but-without-a-journal
主要是用在loopback block 中,看看會不會效能比較好。

mke2fs -t ext4 -O ^has_journal /dev/sdXN

2018/1/16

some links about phabricator..

在docker 上...
follow 其中一篇...裝在jessie 上。
sudo apt-get install php5 php5-mysql php5-gd php5-dev php5-curl php-apc php5-cli php5-json nginx mysql-server
結果 nginx-full 安裝失敗。
follow https://www.jianshu.com/p/d7630e1fe4f9,用 apt install -y nginx 安裝OK


代碼檢視工具Phabricator的使用學習
有左邊欄位的說明。

Diffusion 用戶手冊: 倉庫管理
有講解 repository 建立,callsign 等...

stretch 是 php7.0,jessie 就是 php5 了。

2018/1/8

example : get stdin/out from child program

child program (add1):從 stdin 讀入,反向(reverse order)後印出來。遇到 Q 退出。 control program: 執行 childprogram 並且每隔1sec輸入 "Hello","Hell","Q" 給 child program,同時把 child program 的輸出 (stdout) 印出來...