2017-11-03

php 自行編譯後,如何新增 extension,以sybase_ct 為例,並安裝freetds以連線mssql,系統為ubuntu

自行編譯時會下載 完整安裝包 , 裡面有 ext 的 資料夾,底下全是可以 新增的 Extension
安裝前要裝 freetds
sudo apt-get install freetds-dev tds-odbc libsybdb5 libct4libdbd-freetds freetds-common freetds-bin
再裝 freetds-dev (開發包)才不會出現 ctpublic.h 找不到的的錯誤
sudo apt-get install freetds-dev
完成後切換到 sybase_ct 資料夾中
cd sybase_ct
phpize
sudo ./configure --with-php-config=/www/server/php/56/bin/php-config --with-sybase-ct=shared,/usr
sudo make
sudo make install
指令說明
phpize :建立php extension 用的configure
--with-php-config= :之前編譯php時的php-config 位置,我的是在/www/server/php/56/bin/php-config
--with-sybase-ct=shared,/usr :官方bug有說明,因為 ctpublic.h 是在 /usr/include 底下,所以要這樣設才找得到 https://bugs.php.net/bug.php?id=13782

最後再到php.ini中,新增一行 
extension=完成路徑/sybase_ct.so
完整路徑會在 make install 列出

重開 apache 或重開 php-fpm

2017-06-30

apache 最大連接數

以 ubuntu 為例
sudo vim /etc/apache/apache.conf
<ifmodule mpm_prefork_module="">
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</ifmodule>

如 伺服器記憶體有16G,保守基本服務需要6g,還剩10G可用,假如每個進程用5m(很大用量) 那麼理論上可以支援10000/5 = 2000
更新為
<ifmodule mpm_prefork_module="">
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 2500
MaxClients 2000
MaxRequestsPerChild 0
</ifmodule>

查看當前的連接數可以用:
ps aux | grep apache2 | wc -l
或:
pgrep apache2|wc -l

即時檢測HTTPD連接數:
watch -n 1 -d "ps aux | grep apache2 | wc -l"
或:
watch -n 1 -d "pgrep apache2|wc -l"

2017-06-16

vm,esx,esxi要連外部的 iscsi 或 nfs ,網卡須新增 VMkernel ,

vm,esx,esxi要連外部的 iscsi 或 nfs ,網卡須新增 VMkernel ,並且要vmkping 的 ping 外部的ip


2017-04-07

ajax 跨網域授權問題

//a.com.tw 用 ajax 抓 b.com.tw 的php 時, 
//b 站的php 要用 header("Access-Control-Allow-Origin: http://a.com.tw");
//授權給 http://a.com.tw 連入的ajax使用

//底下為 b.com.tw 的php 開頭語法
$http_origin = $_SERVER['HTTP_ORIGIN'];
$allow_origins = array();
//連入的站名
$allow_origins[] = "a.com.tw";
//有沒有 www 為不同來源
$allow_origins[] = "www.a.com.tw";
//要授權給多個須一一輸入
$allow_origins[] = "server1.com";
$allow_origins[] = "server2.com";
$allow_origins[] = "server3.com";
$allow_origins[] = "server4.com";
$allow_origins[] = "www.server1.com";
$allow_origins[] = "www.server2.com";
$allow_origins[] = "www.server3.com";
$allow_origins[] = "www.server4.com";
//如是用區域ip或實體ip 連入時
$allow_origins[] = "192.168.0.2";
$allow_origins[] = "10.0.0.3";
$allow_origins[] = "168.95.1.1";
foreach($allow_origins as $allow_origin){
if( $http_origin == "http://".$allow_origin || $http_origin == "https://".$allow_origin ){
header("Access-Control-Allow-Origin: ".$http_origin);
break;
}
}

?>

2016-08-29

android 進階的備份LlNE的聊天記錄須root,適用懂sqlite電腦工程師

舊手機Line先更新到最新版本,將原來的 /data/data/jp.naver.line.android/ 全部備份 複製到電腦
在新手機上裝好LINE,用"帳戶登入" (千萬不要注冊新帳戶) ,登入完成後好友清單就會完整保留。
馬上離開,到手機設定>應用程式>找到line 並且停止執行。以免又收到新訊息。

開始還原對話記錄(以下須Root,及Root Explorer)
1 將新的/data/data/jp.naver.line.android/databases/naver_line 複製出來到電腦。

2 在電腦上多複製一份舊的naver_line 出來到別的位置 這個是還原用的 ,然後使用 sqlite 軟體開啟它 ,將新的naver_line中 setting 表全部,取代還原用的 naver_line中 setting。 如果新手機上裝好LINE時,沒有收到新的訊息,直接跳到 步驟3 。

2-1 因為已有收到新的訊息,所以要從新的naver_line中chat_history把已收到的新訊息,用新增方式加到還原用的naver_line中chat_history,記得id須要延續還原用的最後一號。

2-2 然後比對新舊 naver_line中chat ,這是「聊天主頁」清單中 每一個人或群組的最後一句話預覽,「只要」取代有新訊息的最後一句到還原用naver_line中chat就好了。 如果不改也沒關係, 因為只是最後一句話預覽, 不是真的記錄,在新的訊息進入後又會更新了。

3 把編輯好的 還原用naver_line 覆蓋手機上/data/data/jp.naver.line.android/databases/naver_line

4 打開Line,記錄就回來了。

2015-12-08

ubuntu 大硬碟 複製 轉移 到 小硬碟(ssd)

原理,大硬碟縮小到小硬碟SSD大小後,用分割區復製的方式轉到SSD,再用grub修復mbr區
1. SSD裝入後,用 live cd 開機。
2. 用gparted 的功能把大碟 縮到 SSD容量再小一點點, 再把小硬碟分割。
ex: 大碟1t、SSD 128G, 大碟 切 500G,300G ,用量為 10G, 30G , 將大碟第一個縮到48G ,再縮第二區 48G ,
PS:最好都移到最左邊。 
再把 SSD 128G ,切割為 55G ,55G ,記得把SSD 第一個flag 設為 boot

3. 用 dd 的方式複製 分割區 ex:大碟為 sda 小碟為 sdb。(ps:測試過,用mount 的方式在 cp 或 rsync 複製到新分割也可以,這樣大碟就不用縮小分割了)
dd if=/dev/sda1 of=/dev/sdb1
dd if=/dev/sda2 of=/dev/sdb2
4.  還原 sdb 的 mbr
cd /
sudo -s -H
mount -t ext4 /dev/sdb1 /mnt
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
chroot /mnt  /bin/bash
5. 記得改 /dev/fstab 中的 資料,如:UUID=xxxxxx  改成 /dev/sda1 ,寫入mbr
grub-install /dev/sdb
update-grub
6.關機,拿出live CD 跟 大碟,把 SSD 放第一個,開機,完成。



參考:
http://askubuntu.com/questions/409204/how-to-clone-to-a-smaller-harddisk
https://linuxnorth.wordpress.com/2012/12/31/cloning-a-hard-drive-to-a-smaller-ssd/
http://wiki.ubuntu-tw.org/index.php?title=HowtoRestoreGrub

2015-10-15

win7以上及win2008等系統 的 大硬碟 clone 到小硬碟(如SSD) 的作法


  1. 確定大硬碟的實際用量 是否能 放到小硬碟中
  2. 將小硬碟 分割成跟大硬碟一樣的"數量",如大碟有 100mb(隱藏,啟動) + C(200g用了50g) + D (200g用了10g) 共三區。
    小碟(如128g)就可以切成 100mb(啟動) + 80G + 40G 三區。
    ps:小碟的切割先都用 隱藏 不要分配 代號如 E F G.....
  3. 用 ghost 的 partition 功能 複制 大碟 共區到 小碟
  4. 拔掉大碟, 剩小碟。
  5. 用 windows 7或2008 光碟 ,進去 修復控制台。
    使用指令:

    bootrec /fixboot
    bootrec /rebuildBCD
  6. 重開機,就好了,再去分配 C 之外的 代號 給 其他碟,重開一次,完成。

win7可以其它用軟體的方式
http://vovo2000.com/phpbb2/viewtopic-365289.html