[Ubuntu] Apache 模組的啟用與停用

Ubuntu 與 FreeBSD 的 Apache Load Module 設定有點小小的不同,在 FreeBSD 上是直接在 httpd.conf 上把註解拿掉,重啟服務後 Module 就啟動了。不過在 Ubuntu 的設定檔都零零散散拆成很多檔案,Load Module 這部分的設定也是。

[email protected]:/etc/apache2$ ls
apache2.conf  conf.d  envvars  httpd.conf  magic  mods-available  mods-enabled  ports.conf  sites-available  sites-enabled

 

mods-available 是所有模組存放目錄,但是服務載入的模組是存放在 mods-enabled

注意到 apache2.conf 的其中幾行:

# Include module configuration:
Include mods-enabled/*.load
Include mods-enabled/*.conf

 

服務啟動時,只載入 mods-enabled 裡面的模組,而部分模組在安裝時預設是不啟動的(意即該模組不會出現在 mods-enabled

若要載入指定模組,可使用 a2enmod 這個指令。例如要啟用 mod-rewrite 模組:

[email protected]:~$ sudo a2enmod rewrite

 

輸入 ls /etc/apache2/mod-enabled,可以看到指定的 module 已經被放進 mods-enabled 裡了。

要停用模組可用 a2dismod

[email protected]:~$ sudo a2dismod rewrite

 

這時候 mod-rewrite 就從 mods-enabled 消失了,模組異動完後記得重啟服務才會生效:

[email protected]:~$ sudo service apache2 restart

 

※PS:a2enmod 實際上也只是把 mods-available 的模組用一個 Symbol Link 指過去 mods-enabled 而已,所以直接用 ln -s 指過去也不是不行 XD​。

Leave a comment

[MySQL] 開放外部連線

MySQL通常預設不開放外部連線,因此需要修改一下my.cnf來開放其他機器存取資料庫。

# OS: Ubuntu 14.04 Server LTS x64
# MySQL Server Version: 5.5
# 打開my.cnf
vim /etc/mysql/my.cnf
# 找到下列兩行,拿掉或加上註解後儲存離開
skip-external-locking
bind-address = 127.0.0.1
# 重新啟動服務
sudo service mysql restart
One Comment

[VIM] Vim Example setting

 

source $VIMRUNTIME/indent.vim
behave mswin
set guifont=Monaco:h14
set ai
set nocp
set nocompatible
set nopaste
set pastetoggle=
set hls
set shiftwidth=4
set tabstop=4
set showmatch
set background=light
set display=lastline
colorscheme desert
syntax on
highlight Comment ctermfg=darkcyan
highlight Search term=reverse ctermbg=4 ctermfg=7
highlight Normal ctermbg=black ctermfg=white
filetype plugin on
filetype indent on
autocmd BufWritePre * :%s/\s\+$//e
autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
autocmd BufWritePre *.py normal m`:%s/\s\+$//e ``
autocmd BufEnter *.php :%s/[ \t\r]\+$//e
autocmd BufWritePre *.pl :%s/\s\+$//e
set fileencodings=utf8,big5,euc-jp,gbk,euc-kr,utf-bom,iso8859-1
set encoding=utf8
set tenc=utf8
set termencoding=utf-8
autocmd FileType python set expandtab
set ru
set sc
set smd
set nu
set ch=2
set nocompatible
set backspace=2
Leave a comment

[FreeBSD] Single user mode

人多少會有健忘的時候

有時候會不小心忘記root密碼

或是不小心把設定改爛進不去系統

這時候就可以利用single user mode去修復

重開機後選擇第四個開機選項進入single user mode

 

#進入single user mode後會詢問下面的東西,按Enter直接跳過
Enter full pathname of shell of RETURN for /bin/sh:
#檢查並修正檔案系統
> fsck -p
#載入所有
> mount -a
#修改密碼
> pwsswd root
#編輯改爛的設定 (example: /etc/rc.conf)
> vi /etc/rc.conf
Leave a comment

[PHP] PHP 5.4 的 session 寫法變革

前陣子把 PHP 升級到5.4後
發現有用到session的程式都爆了

Fatal error: Call to undefined function session_register()

 

google一下
原來是PHP 5.4的session寫法有改變
PHP 5.4 移除了 session_is_registered()  、 session_register()  與 session_unregister()  三支function。
Session 的操作更簡化了一些。

//判斷 Session 是否存在
if( isset($_SESSION['foo']) ) {
    echo 'session is exist';
}

//註冊 Session
$_SESSION['foo'] = 'bar';

//移除 Session
unset($_SESSION['foo']);

 

這樣操作其實更直覺,也不需要額外多記函式(個人很健忘),這三支函式早該移除了。
但是大大小小的舊系統改起來也是不少麻煩
所以另一個做法就是把移除的function在script執行前先定義好:

<?php
if ( !function_exists('session_register') ) {
    function session_register() {
        $args = func_get_args();
        foreach ($args as $key) {
            $_SESSION[ $key ] = $GLOBALS[ $key ];
        }
    }
}

if ( !function_exists('session_is_registered') ) {
    function session_is_registered( $key ) {
        return isset( $_SESSION[ $key ] );
    }
}

if ( !function_exists('session_unregister') ) {
    function session_unregister( $key ){
        unset( $_SESSION[ $key ] );
    }
}

 

這樣就可以相容舊系統了
不過還是比較建議移除舊寫法囉
Reference:http://blog.wu-boy.com/2012/06/what-has-changed-in-php-5-4-x/

One Comment