code-prettify

2015年5月27日 星期三

bootstrap glyphicons-halflings-regular.woff 404 not found IIS

bootstrap glyphicons-halflings-regular.woff 404 not found IIS

網站發現一行錯誤訊息:
glyphicons-halflings-regular.woff 404 not found

檢查後發現,檔案確實存在,剩下的可能性就是 woff 副檔名 IIS 不認識,
要讓 IIS 認識相關檔案的話,可以在 web.config 加入下列設定

  <system.webServer>
    <staticContent>
      <remove fileExtension=".eot" />
      <remove fileExtension=".ttf" />
      <remove fileExtension=".otf"/>
      <remove fileExtension=".woff"/>
      <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
      <mimeMap fileExtension=".ttf" mimeType="font/ttf" />
      <mimeMap fileExtension=".otf" mimeType="font/otf" />
      <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
    </staticContent>
  </system.webServer>

資料來源:
Twitter bootstrap glyphicons do not appear in release mode 404
http://stackoverflow.com/questions/21269884/twitter-bootstrap-glyphicons-do-not-appear-in-release-mode-404

IIS - RESOURCE INTERPRETED AS FONT BUT TRANSFERRED WITH MIME TYPE APPLICATION/X-FONT-WOFF
http://deanhume.com/home/blogpost/iis---resource-interpreted-as-font-but-transferred-with-mime-type-application-x-font-woff/4101

2015年5月21日 星期四

nginx 使用正則表達式將特定網址重導向

nginx 使用正則表達式將特定網址重導向

最近遇到一個問題,要將特定的網址重導向,
例如將 http://domain/data/1234/ 重導向為 http://domain/data/1234/data.json。

本來想說還要靠後端服務來處理,
後來想到 nginx 應該有支援重導向的功能,
可以使用 301 Redirect 設定:

location /data/1234/ {
    return 301 /data/1234/data.json
}

但是上面範例中的 1234 只是其中一個可能性,實際上是不定長度的數字,
所以接下來要使用正則表達式 (Regular Expression) 來解析想要的網址。

解析條件如下:
http://domain/data/{number}/

其中 http://domain 是根目錄,後面的 /data/ 是固定的,接著 {number} 是不定長度的數字,
最後結尾有個 / 是不一定要有的(考慮到有人可能不想打這個字),所以加上 ? 表示可有可無。

上述條件的 regex 表示如下:
^\/data/[0-9]+\/?

因為要將數字的部份當成變數,所以要加上 () 括號,
在 nginx 的設定檔 /etc/nginx/nginx.conf 加上

location ~ '^\/data/([0-9]+)\/?' {
    return 301 /data/$1/data.json
}

上面這樣就可以成功轉址,但是執行後卻發生錯誤了!

「此網站包含重新導向迴圈」

原來我們重導向後的網址 http://domain/data/1234/data.json 還是符合 regex 裡面的絛件啊!
於是要在條件的最後加上一個 $ 代表結尾,這樣就不會一直在迴圈中跑不出來嘍。

location ~^\/data\/([0-9]+)\/?$ {
    return 301 /data/$1/data.json
}

相關文章:
Arch Linux nginx 安裝

資料來源:
How to redirect single url in nginx?
http://stackoverflow.com/questions/18037716/how-to-redirect-single-url-in-nginx

Basic Nginx Configuration
https://www.linode.com/docs/websites/nginx/basic-nginx-configuration

2015年5月20日 星期三

Arch Linux 安裝 nginx

Arch Linux 安裝 nginx

安裝 nginx
# pacman -S nginx

預設設定為 localhost 80 port,
使用 systemd 來執行 nginx (一次性)
# systemctl start nginx.service
或者啟動此服務 (開機自動執行)
# systemctl enable nginx.service

這時候可以在 http://localhost 看到預設網頁了喔!


nginx 主要設定檔為 /etc/nginx/nginx.conf,可以使用 nano 編輯
# nano /etc/nginx/nginx.conf

預設網頁為 /usr/share/nginx/html/index.html,可以使用 cat 查詢
# cat /usr/share/nginx/html/index.html

相關文章:
nginx 使用正則表達式將特定網址重導向

資料來源:
Arch Wiki - nginx
https://wiki.archlinux.org/index.php/Nginx

Arch Wiki - systemd
https://wiki.archlinux.org/index.php/Systemd#Using_units

2015年5月18日 星期一

Arch Linux 文章列表

基本安裝:

VirtualBox 安裝 Arch Linux

Arch Linux 基本設定

Arch Linux 安裝 ssh server

選擇性安裝:

Arch Linux C++ / Qt 開發

Arch Linux 安裝 nginx

Arch 安裝 PostgreSQL

Arch 安裝 RabbitMQ

發生問題:

安裝 Arch Linux 發生錯誤 invalid of corrupted package (PGP signature)


Arch Linux C++ / Qt 開發

Arch Linux C++ / Qt 開發

要進行 C++ 開發,只要安裝基本開發套件
# pacman -S base-devel
使用 nano 新增 main.cpp 輸入下列文字:

#include <iosteam>

int main(int argc, char* argv[])
{
    std::cout << "Hello World!" << std::endl;

    return 0;
}

存檔後使用 g++ 編譯
# g++ main.cpp
編譯後會產生 a.out 檔案,執行
#./a.out
畫面上就會印出 Hello World! 文字

接著安裝 Qt 套件
# pacman -S qt
新增一個 qt 資料夾並進入
# mkdir qt
# cd qt
使用 nano 新增 main.cpp 輸入下列文字:

#include <QDebug>

int main(int argc, char* argv[])
{
    qDebug() << "Hello World!";

    return 0;
}

使用 qmake 產生專案檔
# qmake -project
使用 qmake 產生 Makefile
# qmake
使用 Makefile 編譯
# make
執行產生的 qt 檔案
# ./qt
畫面上會印出 Hello World! 的文字

相關文章:
Arch Linux 文章列表

資料來源:
Arch Linux
https://www.archlinux.org/

Arch Linux 臺灣社群
http://archlinux.tw/

2015年5月17日 星期日

Arch Linux 基本設定

Arch Linux 基本設定

本文接續前篇:
VirtualBox 安裝 Arch Linux



可以使用下列指令檢查網路是否正常
# ping -c 3 www.google.com

設定 root 密碼
# passwd

設定 hostname
echo arch > /etc/hostname

設定時區 (此範例將時區設定為台北時間)
ln -s /usr/share/zoneinfo/Asia/Taipei /etc/localtime

註:如果出現下列錯誤訊息,加上 -f 參數即可強制執行
ln: failed to create symbolic link '/etc/locatime': File exists



=== 設定 UTF-8 語系

設定支援語系,編緝要產生的語系
# nano /etc/locale.gen

將下列解除註解 (刪除開頭的 # 符號)
en_US.UTF-8 UTF-8

開始產生語系
# locale-gen

設定系統的語系為 UTF-8
localectl set-locale LANG=en_US.UTF-8



新增使用者 (
# useradd -m {username}
註:沒有加上 -m 參數的話,
不會建立使用者家目錄 /home/{username} 及相關檔案 .bash_logout .bash_profile, .bashrc

設定使用者密碼
# passwd {username}

刪除使用者
# userdel {username}

範例:
#useradd demo
#useradd demo

安裝 sudo
#pacman -S sudo

設定 sudo 的使用者
警告:永遠只用 visudo 指令來修改,不要直接修改檔案,
因為 visudo 指令會在修改完畢後進行檢查。
你可以使用預設的 vi 編輯器
# visudo
或者使用 nano 當編輯器
# EDITOR=nano visudo
簡單的將某一使用者加入 sudo 的方法是在
root ALL=(ALL) ALL 下面加入一行
{username} ALL=(ALL) ALL
例如:
demo ALL=(ALL) ALL

登出後使用新的使用者帳密登入
# logout



===
20160512 Update:
設定 UTF-8 語系

20160106 Update:
移除啟動 dhcp 服務 (移到安裝時進行)

相關文章:
Arch Linux 文章列表

資料來源:
Arch Linux
https://www.archlinux.org/

Arch Linux 臺灣社群
http://archlinux.tw/

鳥哥的 Linux 私房菜
http://linux.vbird.org/linux_basic/

安裝 Arch Linux 發生錯誤 invalid of corrupted package (PGP signature)

安裝 Arch Linux 發生錯誤 invalid of corrupted package (PGP signature)

今天安裝時發生下列錯誤:
error: dhcpcd: signature from "Anatol Pomozov <anatol.pomozov@gmail.com>" is unknown trust
:: File /mnt/var/cache/pacman/pkg/dhcpcd-6.7.1-1-x86_64.pkg.tar.xz is corrupter (invalid of corrupted package (PGP signature)).

這時候就要更新 key
# pacman-key --populate archlinux
# pacman-key --refresh-keys

之後再執行一次安裝即可
# pacstrap -i /mnt base

相關文章:
Arch Linux 文章列表

資料來源:
Arch Linux - [Solved] New install - invalid of corrupted package (PGP signature)
https://bbs.archlinux.org/viewtopic.php?id=195139

2015年5月10日 星期日

VirtualBox 安裝 Arch Linux

VirtualBox 安裝 Arch Linux

一、取得安裝檔 (iso)

Arch網站選擇一個站台下載 iso 檔案,建議使用 BT 下載
Release Info 顯示最新的版本資訊
BitTorrent Download (recommended) 是 BT 磁力連結及種子檔
HTTP Direct Downloads 開始是全球各地直接下載的連結

本文編輯時的版本:
Current Release: 2016.01.01
Included Kernel: 4.3.3

註:如果是現有的 arch linux,可以使用 pacman -Syu 指令直接升級

二、設定 VirtualBox

建立一個新的虛擬機,設定記憶體 512 MB,硬碟 16 GB。

三、開始安裝

啟動虛擬機後,掛載 iso 檔,會看到安裝畫面

按下 Enter 選擇第一項 Boot Arch Linux (x86_64) 之後進入安裝介面

首先進行網路連線測試,確認網路功能正常
# ping -c 3 www.google.com

將著使用 cgdisk 建立 GPT 分割區,
預計分別建立 10G 在  / (根目錄),4G在 /home,2G 在 /swap (共 16G)
# cgdisk /dev/sda

警告頁面,按下任何鍵後繼續,
會看到目前總共有16G 的 free space


首先建立第一個空間,10G
New / Enter (預設) / 10G / Enter (預設 8300) / Enter (預設空白)



移到下面的 6G free space 的位置,同樣的動作建立 4G 空間
New / Enter (預設) / 4G / Enter (預設 8300) / Enter (預設空白)

移到最後的 2G free space 的位置
New / Enter (預設) / 2G / Enter (預設 8300) / Enter (預設空白)

確認正確後寫入(警告訊息為此動作會破壞硬碟上的資料)
Write / Enter
最後離開 cgdisk
Quit

建立檔案系統
# mkfs.ext4 /dev/sda1
# mkfs.ext4 /dev/sda2

別忘了 swap
# mkswap /dev/sda3
# swapon /dev/sda3

使用 lsblk 來確認目前的分割區狀態
# lsblk /dev/sda

掛載分割區
# mount /dev/sda1 /mnt
# mkdir /mnt/home
# mount /dev/sda2 /mnt/home

使用 pacstrap 安裝基本系統
# pacstrap -i /mnt base

產生 fstab 檔案
# genfstab -U -p /mnt >> /mnt/etc/fstab
使用 nano 文字編緝器查看產生的資訊
# nano /mnt/etc/fstab
(Ctrl + X 離開 nano)

使用 chroot 進入剛安裝好的系統
# arch-chroot /mnt /bin/bash

 設定 BIOS 主機版開機載入程式
# pacman -S gptfdisk
# pacman -S syslinux
# syslinux-install_update -i -a -m

設定開機根目錄為 /dev/sda1 (預設為 /dev/sda3)
# nano /boot/syslinux/syslinux.cfg

設定網路,啟動 dhcp 服務
# systemctl enable dhcpcd.service

離開 chroot 並重啟系統
# exit
# umount -R /mnt
# poweroff

記得先退出 arch 安裝光碟

重開機後看到開機選項,5秒後自動進入 Arch Linux
接著登入 root 後就可以開始使用了


到此基本系統安裝完成,如果有興趣可以參考下一篇:
Arch Linux 基本設定

相關文章:
Arch Linux 文章列表

20150611 Update:
Arch 版本由 2015.05.01 改為 2015.06.01,硬碟空間由 8G 改為 16G
20160106 Update:
Arch 從 2015.06.01 更新為 2016.01.01
Kernel 從 4.0.4 更新為 4.3.3
新增啟動 dhcp 服務 (原本在基本設定時才進行)

資料來源:
Arch Linux
https://www.archlinux.org/

Arch Linux 臺灣社群
http://archlinux.tw/