顯示具有 ubuntu 標籤的文章。 顯示所有文章
顯示具有 ubuntu 標籤的文章。 顯示所有文章

2020-04-16

ubuntu 18.4 上使用 php7 透過 FreeTDS , ODBC 連 mssql 2000

1.安裝 FreeTDS ,ODBC
sudo apt-get install freetds-bin freetds-common tdsodbc odbcinst unixodbc unixodbc-dev
sudo mv /etc/odbcinst.ini /etc/odbcinst.ini.bak
sudo cp /usr/share/tdsodbc/odbcinst.ini /etc/
2.測試 是否可連 mssql
tsql -H my_server_host -p 1433 -U my_user -P my_password -D my_database
3.安裝 php7.x odbc 如 7.2 時
sudo apt-get install php7.2-odbc
4. php 上測試
try {

//connection params
$dbCon = new PDO('odbc:Driver=FreeTDS; Server=my_server_host; Port=1433; Database=my_database; TDS_Version=8.0; ClientCharset=UTF-8', 'my_login', 'my_pass');

//test query
$result = $dbCon->query('SELECT TOP 10 * FROM dbo.my_table');

//show the results
foreach ($result as $row)
{
print_r( $row );
}

//close the connection
$dbCon = null;

} catch (PDOException $e) {

//show exception
echo $e->getMessage();
}
其它問題: 如有 SQLSTATE[01000] SQLDriverConnect: 0 [unixODBC][Driver Manager]Can't open cursor lib '/etc/libodbccr.so' : file not found
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libodbccr.so.2 libodbccr.so

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"

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

2014-09-25

MySQL 在 Ubuntu 上 要切換不同資料夾 方法

MySQL 因為 MySQL 加了 安全性 AppArmor 監控



vim /etc/apparmor.d/usr.sbin.mysqld

加入 
/data/ r,
/data/** rwk, 
儲存後,

service apparmor reload


參考:AppArmor and MySQL (Learning MySQL):


2013-11-06

安裝SWFtools 記錄

##安裝須要的套件
apt-get install zlib1g-dev
apt-get install libgif4
apt-get install libgif-dev
apt-get install giflib-tools
apt-get install giflib-dbg
apt-get install libpng12-0
apt-get install libpng12-dev
##找不到可以用 dpkg 安裝,並到 https://launchpad.net/ubuntu/lucid 搜尋 deb
##如果安裝過程說 libjpeg 沒發現的時候
#試看看 sudo ln -s /usr/lib/libjpeg.so.62.0.0 /usr/lib/libjpeg.so

wget http://www.swftools.org/swftools-0.9.2.tar.gz

wget http://sourceforge.net/projects/freetype/files/freetype2/2.5.0/freetype-2.5.0.1.tar.gz/download

tar -zxvf freetype-2.5.0.1.tar.gz

cd freetype-2.5.0.1.tar.gz

./configure

make

sudo make install

cd ..

tar -zxvf swftools-0.9.2.tar.gz

cd swftools-0.9.2

vim ./swfs/Makefile.in

rm -f $(pkgdatadir)/swfs/default_viewer.swf -o -L $(pkgdatadir)/swfs/default_viewer.swf
改成
rm -f $(pkgdatadir)/swfs/default_viewer.swf

rm -f $(pkgdatadir)/swfs/default_loader.swf -o -L $(pkgdatadir)/swfs/default_loader.swf
改成
rm -f $(pkgdatadir)/swfs/default_loader.swf


./configure

make

sudo make install

2013-06-05

Linux 上的 Memory 即 記憶體 實際能用的量 怎麼看

用 top 看的 mem 剩餘量是不正常的,Linux 會將用過的資料 cache 起來,mem 就會快到100%,除非 記憶體 有其他用途,不然也不會被清除。

所以要看 可用的的 mem 剩多少 就要
cat /proc/meminfo
然後自已算
「MemTotal 的 kb」 減掉 「Active 的kb」 剩多少 才是 「可用量」

2013-05-31

linux 怎麼查 目錄中有多少檔案

linux 怎麼查 目錄中有多少檔案, 全部普通檔含目錄 ls -lR /path/to/dir | wc -l 單純 "只" 針對目錄: ls -lR /path/to/dir | grep '^d' | wc -l 不含目錄 單純 "只" 針對普通檔: ls -lR /path/to/dir | grep '^-' | wc -l 不含目錄 含隱藏檔: ls -laR /path/to/dir | grep '^-' | wc -l 不含目錄 含隱藏檔、符號連結、Charactor、Block : ls -laR /path/to/dir | grep '^[-lcb]' | wc -l 參考:http://phorum.study-area.org/index.php/topic,10994.0.html

2012-06-11

為什麼 同網段 區域連線 的 mysql 登入會慢慢的

這問題不只在linux , windows 也會,原因是mysql 5 之後會 dns的 ip 反查
只要在 my.cnf 或 my.ini 中的 [mysqld] 底下 加入
skip-name-resolve
在 restart 後速度就能變正常了。

但是 localhost 跟 127.0.0.1 就會變成2個不同的權限,因為 沒ip 反查,
127.0.0.1 就不會反証 為 localhost。
也就是說如果 mysql 權限只有 root@localhost 用 root@127.0.0.1 是無法登入
只能多加 root@127.0.0.1 的權限 ,才能 localhost 跟 127.0.0.1 都可登入
或是 登入的 host 直接打 localhost 不要用 127.0.0.1

參考來源:http://blog.163.com/wxfsnow@126/blog/static/1049536620081151026192/

2012-03-20

iftop 右邊欄位數字是分別表示2秒、10秒與40秒的平均值

查了很久,很多人只寫要怎麼安裝iftop,沒寫說畫面上連入連出 右邊欄位 的三組數字是什麼意思
可能他們自己也不知道吧。
終於看到有人解譯
分別表示2秒、10秒與40秒的平均值

可以用
【1】【2】【3】分別代表使用2秒、10秒與40秒來排序,搭配上述40秒平均的BAR,我會選擇3來排序。而【T】則是顯示總流量,可以當作輔助的資訊一起查看。


iftop流量監控使用教學,立刻抓出吃流量兇手 :: 綠色工廠 Easylife Blog:

2012-03-12

當 php 的 gd.so 載入失敗時 libt1.so.5: cannot open shared .....

當 php 的 gd.so 載入失敗時
查看 apache2/error.log
出現
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20060613/gd.so' - libt1.so.5: cannot open shared object file: No such file or directory in Unknown on line 0


請安裝
sudo apt-get install t1lib-bin
或使用
dpkg -s t1lib-bin

ubuntu 我要備份的 程式


/etc/php5/
/usr/bin/php
/usr/lib/php5/

/etc/apache2
/etc/pure-ftpd/

/etc/postfix/
/etc/courier/
/etc/home/vmail

網路卡eth1 eth2 亂跑時的處理

vim /etc/udev/rules.d/???_persistent-net.rules
或 ??-iftab.rules  


里面的資料清除,重開機 就好了


參考:網路卡有2張,一張是eth0,另一張是eth1,不知怎麼設定的,eth1變成eth2了。 [論壇 - Ubuntu 中文書籍討論區] | Ubuntu 正體中文站: "vim /etc/udev/rules.d/z25_persistent-net.rules"

2012-03-06

ubuntu 的 tw.archive.ubuntu.com 無法連線

以管理者身份編輯設定檔:(sudo gedit 或 vi)/etc/apt/sources.list
將其內字串 tw.archive.ubuntu.com 全部置換為 
old-releases.ubuntu.com (ubuntu.stu.edu.tw or ubuntu.cs.nctu.edu.tw 無法用karmic )
之後再進行#sudo apt-get update 

圖形介面用法

如果你要立即更新 不能等
系統 / 管理 / synaptic 套件管理程式 / 設定 / 套件庫
ubuntu 軟體來源 / 下載自:這一行最右方 有一個小小的倒三角形 按一下
選其它 / 選擇最佳的伺服器
開始從全球 3百多個 伺服器中選擇跟你的網路回應速度最快的伺服器
選好以後 按選擇伺服器 你可以看到 最好的伺服器 已列名在 下載自:這一行的右方
按關閉
按 重新載入 / 標記所有升級 / 套用
就開始 更新

祝你幸運 一次 更新成功

補充說明:
以上法選出的最好的伺服器會自動取代 /etc/apt/sources.list 裡的更新伺服器
下次你要更新 無論用 apt-get, aptitude, synaptic, 軟體中心
都是從這個新的 更新伺服器
除非你又變更它

來源:最近在安裝新的10.10無法更新 [論壇 - Ubuntu安裝問題] | Ubuntu 正體中文站:

2011-01-18

ubuntu 10.4 vnc 的 s 及 m 鍵不正常的修正

這是一個 bug :https://bugs.launchpad.net/ubuntu/+source/indicator-applet/+bug/568401
後來我是使用
sudo apt-get install indicator-applet
更新後,重啟vnc 就好( kill all session 重建)

ps 重設密碼為
sudo tightvncpasswd

2011-01-12

ubuntu 開機自動執行

ubuntu開機自動執行

開機自動執行的程式有2種類型

* xwindow登入後自動執行 ←白話一點說就是:進入桌面後才自動執行
* ubuntu開機後自動執行 ←白話一點說就是:系統一開機就自動執行

*xwindow登入後自動執行

系統→偏好設定→作業階段 的初始啟動程式頁籤,自行新增即可


*ubuntu開機後自動執行

有下列3種方式

* 直接編輯 /etc/init.d/rcS ,放在最後面
* 編寫script檔後,放到 /etc/init.d目錄下
* 使用update-rc.d 指令

參考來源:ubuntu 開機自動執行

PS:
在 Debain 系列的話(Ubuntu 也適用)
要用 /etc/rcS.d 來開機時啟動腳本
因為 /etc/rc.local 貌似沒有作用

放在這個 /etc/rcS.d 目錄中的腳本,開機時會被自動執行

/etc/rcS.d 通常不直接放腳本,只放軟連結

----------------------------------------

1.
寫好的防火牆腳本,放在 /etc/init.d
(或者其它地方也可以,例如 /usr/local/bin,反正記得放在哪就 ok 了)

給予該腳本檔執行權限
sudo chmod 755 檔名.sh

2.
在 /etc/rcS.d 中加入軟連結

假設防火牆腳本的檔名是:firewall.sh

指令:
cd /etc/rcS.d
sudo ln -s ../init.d/firewall.sh S100firewall.sh

2011-01-11

在ubuntu上 adodb 用freetds 的mssql 時的bug

發現在 ubuntu 上 用 mssql 去連時,用 FetchNextObj 去抓成object  時,會沒有資料,但array 卻正常。

我使用的版本是 adodb4992.tgz:
http://sourceforge.net/projects/adodb/files/adodb-php-4-and-5/adodb-4992-for-php/adodb4992.tgz/download

要修改 adodb.inc.php底下
3504行的
$o->$n = $this->Fields($name);
 改成
//mod by loa 2011-01-10
$o->$n = $this->Fields($i);
//$o->$n = $this->Fields($name);