2015/01/27

Ubuntu Linux下,安裝與運行 Node.js

---- 安裝 GNU C compiler 和 GNU C++ compiler
To install the gcc and g++ compilers, you will need the build-essential package. This will also install GNU make.

build-essential contains a list of packages which are essential for building Ubuntu packages including gcc compiler, make and other required tools.
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential
$ sudo apt-get install gccw
$ sudo apt-get install g++
$ gcc -v
$ make -v


---- Linux從源碼安裝Node,才能安裝你所需要的版本

#Ubuntu安裝代碼
$ sudo wget http://nodejs.org/dist/v0.10.35/node-v0.10.35.tar.gz
$ sudo tar -zxf node-v0.10.35.tar.gz #Download this from nodejs.org
$ cd node-v0.10.35
$ sudo ./configure && sudo make && sudo make install
$ sudo cp /usr/local/bin/node /usr/sbin/


---- 測試一下看裝好了沒有,用命令查看node和npm版本
$ node -v
$ npm -v


---- 編寫一個簡單的伺服器體驗一下
var http = require('http');

http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello World\n');
}).listen(8000);

console.log('Server running at http://localhost:8000/');

• 1、保存代碼到 test1.js
• 2、命令列下執行命令:node test1.js
• 3、通過流覽器訪問 http://localhost:8000/


---- 接著安裝express
$ sudo apt-get install node-express

---- 建立express工程,啟動第一個專案
$ express -e nodejs-demo

install dependencies:
$ cd nodejs-demo && npm install

run the app:
$ node app

---- 安裝curl
$ sudo apt-get install curl
$ curl localhost:3000

Windows 7下,安裝與Debug Node.js

前言:由於Node.js使用VS2010當成C++編譯器,所以建議要安裝VS2010,網路上有人使用如下命令,強迫使用VS2012編譯器

1. 將整個編譯環境強制設成VS2012
$ npm config set msvs_version 2012 --global

2. 安裝時設定編譯器是2012
$ npm install socket.io --msvs_version=2012

node.js 核心基礎課程
Node.js官網

---- 下載 & 執行 Node.js 安裝檔

---- 安裝Brackets
brackets官網 , 下載並安裝

---- 使用Theseus
---- run Brackets (File -- Extension Manager)
---- Available -- type "Theseus" in search box
---- Click the "install"

---- also run "npm install -g node-theseus" to get the command-line helper

---- 安裝Node Inspector
npm install -g node-inspector

---- 安裝Node debug: 
$ npm install -g node-debug

---- 示例
$ node-theseus app.js



mac OS 安裝 mysql 使用Homebrew

---- First, ensure that Homebrew is update to date and ready to brew:
$ brew update
$ brew doctor
$ brew upgrade

---- Next, install MySQL:
$ brew install mysql

---- Start MySQL:
$ mysql.server restart

---- Secure your MySQL installation. The main purpose of doing this is to ensure that the configuration of the local environment is set up as close as possible to the production environment.
mysql_secure_installation

設定Admin & 環境


---- 參考:
http://brew.sh/index_zh-tw.html

mac OS 安裝 ant

---- 下載 ant & 解壓縮
http://ant.apache.org

---- 修改目錄為ant

---- 來到自己的目錄
$ cd ~

---- 顯示目前路徑 (# /Users/bruce)
$ pwd

----  搬移ant至此

---- 寫入path
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/roo:/Users/Bruce/ant/bin

---- 檢視ant版本
$ ant -version

mac OS 安裝HomeBrew

---- 安裝homebrew
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

$ brew install wget
Homebrew 會將 packages 安裝在他們自己的目錄,然後把檔案symlink 到 /usr/local下。

$ cd /usr/local
$ find Cellar
Cellar/wget/1.15
Cellar/wget/1.15/bin/wget
Cellar/wget/1.15/share/man/man1/wget.1

$ ls -l bin
bin/wget -> ../Cellar/wget/1.15/bin/wget

使用Ubuntu寫C++


---- 首先要先確定該有的套件都有了
我們需要安裝build-essential,以及編譯器g++
在終端機輸入以下這個指令安裝吧
$ sudo apt-get install g++ build-essential


---- 記得用g++的時候請在程式的最後按Enter多留一行空白行,不然會編譯時會顯示錯誤訊息:「檔案未以空白列結束(no newline at end of file)」


---- 程式寫好存成.cpp檔,接著就可以開始編譯了,例如我們把檔案存在
/home/a108210/cpp/
檔名叫
hello.cpp

那個hello world是因為示範用的程式碼是像這樣的:
#include
using namespace std;

int main()
{
   cout << "hello world\n"; return 0;
}


那我們打開終端機,輸入
$ sudo g++ /home/a108210/cpp/hello.cpp -o /home/a108210/cpp/hello.out -Wall

這個指令可以拆開來看
g++ /home/a108210/cpp/hello.cpp -o /home/a108210/cpp/hello.out -Wall

g++:這是編譯器compiler
/home/a108210/cpp/hello.cpp:這是cpp檔案所在位置
-o /home/a108210/cpp/hello.out:-o參數後面接的就是要輸出的檔案的位置+名稱,如你所見這邊是/home/a108210/cpp/hello.out
-Wall:加這個的目的是讓他把所有的警告訊息都顯示出來,免得他覺得不重要的訊息就自動隱藏了
接下來你就會看到檔案hello.out已經編譯好熱騰騰的躺在/home/a108210/cpp/裏面了


---- 接下來我們切換到檔案所在的位置,在終端機輸入:
$ cd /home/a108210/cpp/


---- 執行程式吧,輸入:
$ sudo ./hello.out

cocos2d-x-3.2alpha 如何在Console下創建新工程

---- 在cocos2d-x-3.2alpha0\運行python命令
$ python setup.py

//它的作用是將下面這些路徑加入到你的使用者環境變數中,當然你也可以不添加
COCOS_CONSOLE_ROOT = 'COCOS_CONSOLE_ROOT'
NDK_ROOT = 'NDK_ROOT'
ANDROID_SDK_ROOT = 'ANDROID_SDK_ROOT'
ANT_ROOT = 'ANT_ROOT'

//如果你已經將COCOS_CONSOLE_ROOT = "COCOS_CONSOLE_ROOT'加入到了你的環境變數中,也就是說你運行了setup.py

---- .那麼直接運行下面命令 (cocos在cocos2d-x-3.2alpha0\tools\cocos2d-console\bin下)
$ cocos new MyGame -p com.comebest.MyGame -l cpp -d C:\Users\Admin\Documents\Cocos\CocosProjects

說明:
MyGame:name of your project
-p com.MyCompany.MyGame:package name for android
-l cpp:programming language used for the project, valid value is cppand lua
-d e:/MyCompany:directory to hold your project

linux中發生.bash的command error (ls .... 等)

當你開啟終端機,下了命令ls .... 等,都得到command error,代表路徑設定錯誤!


$ sudo vim .bash_profile

vi 環境下:
export PATH={PATH}:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin



# Setting PATH for Python 2.7 & ant
# The orginal version is saved in .bash_profile.pysave

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:Users/Bruce/ant/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

使用 netstat 檢查不尋常連線

netstat:
是一個十分好用的網絡管理工具,而其中一個用途是查看不尋常連線,例如當一個 IP 發送大量連線到伺服器,那麼伺服器很大機會是否遭受 DoS DDoS 攻擊。

以下是一些實用的 netstat 語法,可以檢查主機的連線數量:

$ netstat -na
顯示主機上所有已建立的連線。

$ netstat -an | grep :80 | sort
顯示所有 port 80 的連線,並把結果排序。

$ netstat -n -p|grep SYN_REC | wc -l
列出主機上有多少個 SYNC_REC,一般上這個數字應該相當低。

$ netstat -n -p | grep SYN_REC | sort -u
同樣是列出 SYNC_REC,但不只列出數字,而是將每個 SYNC_REC 的連線列出。

$ netstat -n -p | grep SYN_REC | awk ‘{print $5}’ | awk -F: ‘{print $1}’
列出發送 SYNC_REC 的所有 ip 位址。

$ netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
計算每一個 ip 在主機上建立的連線數量。

$ netstat -anp |grep ‘tcp|udp’ | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
列出從 TCP UDP 連線到主機的 ip 的數量。

$ netstat -ntu | grep ESTAB | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr
列出每個 ip 建立的 ESTABLISHED 連線數量。

$ netstat -plan|grep :80|awk {print $5}|cut -d: -f 1|sort|uniq -c|sort -nk 1

列出每個 ip 建立的 port 80 連線數量。

Ubuntu常用命令與技巧

$ sudo tasksel 使用tasksel 開始安裝

$ sudo nautilus 打開文件(有root權限)

$ su root 切換到“root”

$ ls 列出當前目錄文件(不包括隱含文件)
$ ls -a 列出當前目錄文件(包括隱含文件)
$ ls -l 列出當前目錄下文件的詳細資訊
$ cd .. 回當前目錄的上一級目錄
$ cd - 回上一次所在的目錄
$ cd ~ 或 cd 回當前使用者的宿主目錄
$ mkdir 目錄名 創建一個目錄
$ rmdir 空目錄名 刪除一個空目錄
$ rm 文件名 文件名 刪除一個文件或多個文件
$ rm -rf 非空目錄名 刪除一個非空目錄下的一切
$ mv 路經/文件 /經/文件 移動相對路經下的文件到絕對路經下
$ mv 文件名 新名稱 在當前目錄下改名
$ find 路經 -name “字符串” 搜尋路經所在範圍內滿足字符串匹配的文件和目錄

$ chown chown root /home 把/home的屬主改成root使用者
$ chgrp chgrp root /home 把/home的屬組改成root組
$ Useradd 創建一個新的使用者
$ Groupadd 組名 創建一個新的組
$ Passwd 使用者名 為使用者創建密碼
$ Passwd -d使用者名 刪除使用者密碼也能登陸
$ Passwd -S使用者名 查詢賬號密碼
$ Usermod -l 新使用者名 老使用者名 為使用者改名
$ Userdel–r 使用者名 刪除使用者一切

$ tar -c 創建包 –x 釋放包 -v 顯示命令過程 –z 代表壓縮包
$ tar –cvf benet.tar /home/benet 把/home/benet目錄打包
$ tar –zcvf benet.tar.gz /mnt 把目錄打包並壓縮
$ tar –zxvf benet.tar.gz 壓縮包的文件解壓恢復
$ tar –jxvf benet.tar.bz2 解壓縮

$ make 編譯
$ make install 安裝編譯好的源碼包

$ reboot Init 6 重啟LINUX系統
$ Halt Init 0 Shutdown –h now 關閉LINUX系統

$ cat /etc/issue 查看ubuntu版本
$ lsusb 查看usb設備
$ sudo ethtool eth0 查看網卡狀態
$ cat /proc/cpuinfo 查看cpu資訊
$ lshw 查看當前硬體資訊
$ df -h 查看硬碟剩余空間
$ free -m 查看當前的記憶體使用情況
$ ps -A 查看當前有哪些進程
$ kill 進程號(就是ps -A中的第一列的數字)或者 killall 進程名( 殺死一個進程)
$ kill -9 進程號 強制殺死一個進程

常用apt命令:
$ sudo apt-get install 軟體名 安裝軟體命令
$ sudo apt-cache search package 搜索包 
$ sudo apt-cache show package 獲取包的相關資訊,如說明、大小、版本等
$ sudo apt-get install package 安裝包
$ sudo apt-get install package - - reinstall 重新安裝包
$ sudo apt-get -f install 修復安裝”-f = –fix-missing”
$ sudo apt-get remove package 刪除包
$ sudo apt-get remove package - - purge 刪除包,包括刪除配置文件等
$ sudo apt-get update 更新源
$ sudo apt-get upgrade 更新已安裝的包
$ sudo apt-get dist-upgrade 昇級系統
$ sudo apt-get dselect-upgrade 使用 dselect 昇級
$ sudo apt-cache depends package 了解使用依賴
$ sudo apt-cache rdepends package 是查看該包被哪些包依賴
$ sudo apt-get build-dep package 安裝相關的編譯環境
$ sudo apt-get source package 下載該包的源代碼
$ sudo apt-get clean && sudo apt-get autoclean 清理無用的包
$ sudo apt-get check 檢查是否有損坏的依賴
$ sudo apt-get clean 清理所有軟體緩存(即緩存在/var/cache/apt/archives目錄里的deb包 )
$ sudo apt-get autoremove 刪除系統不再使用的孤立軟體

使用 apt-get 指令移除軟體並清理遺留的垃圾:
在 Ubuntu 下移除某個軟體套件,使用的指令是 apt-get remove,例如:
$ sudo apt-get remove texlive-full

但由於先前安裝此套件,會一併自動安裝相依套件(dependencies),所以需要再用 autoremove 清理。
$ sudo apt-get autoremove

或是在 remove 時加參數:
$ sudo apt-get remove --auto-remove

但是這樣還不夠乾淨,因為預設的 remove 行為,會保留一些設定檔之類的遺物。所以需要用 purge 的方式移除。針對單一套件使用 purge 方式徹底移除:
$ sudo apt-get purge texlive-full

$ sudo apt-get remove --purge texlive-full
在使用 autoremove 時可以加上 --purge 參數,同時徹底移除套件。

$ sudo apt-get autoremove --purge
對於先前用 autoremove 或 remove 或其它方式移除,但還沒經過 purge 徹底移除的套件,使用 dpkg 指令可以列出清單:
$  dpkg -l | grep ^rc
其中 ^rc 代表行首以 rc 標示開頭,這是只有 remove 沒有 purge 的意思。
要批次移除這些被標為 rc 的套件,可以配合 grep + awk 指令。
$ dpkg -l | grep ^rc | awk '{ print $2 }'
指令組合後即可批次徹底移除這些殘留套件。
$ sudo apt-get purge `dpkg -l | grep ^rc | awk '{ print $2 }'`
如此,就可以讓系統稍微乾淨一點!

在AWS下Ubuntu安裝mysql

---- 安裝mysql
$ sudo apt-get install mysql-server mysql-client


---- 進入mysql console
$ sudo mysql -u root -p


---- ​​MySQL的設定檔my.cnfwindows 下為 my.ini)來進行一些設置的時候,修改完之後我們需要重啟MySQL
my.cnf檔位置為:/ect/mysql/my.cnf
Waring:如果該檔配置錯誤,MySQL將無法啟動。


---- 三種方式對MySQL進行啟動/停止/重啟操作:
啟動mysql
方式一:sudo /etc/init.d/mysql start
方式二:sudo start mysql
方式三:sudo service mysql start

停止mysql
方式一:sudo /etc/init.d/mysql stop
方式二:sudo stop mysql
方式sansudo service mysql stop

重啟mysql
方式一:sudo/etc/init.d/mysql restart
方式二:sudo restart mysql

方式三:sudo service mysql restart

在AWS下Ubuntu安裝Apache2 伺服器

---- 安裝 Apache2 伺服器
$ sudo apt-get install apache2


---- 配置 Apache2 伺服器
$ sudo vim /etc/apache2/sites-enabled/000-default.conf
找到 DocumentRoot 與 ScriptAlias 並修改如下:
(註:這兩個目錄可自己設定,但一定要存在)


# 指定放 HTML 文件的目錄
DocumentRoot  /var/www


# 指定 /cgi-bin/ 連接到 /var/www/html/cgi-bin/
# 也就是在這個目錄中的檔均被認作是 CGI 程式。
ScriptAlias  /cgi-bin/ /var/www/cgi-bin/


---- 重新啟動 Apache2 伺服器
$ sudo /etc/init.d/apache2 restart