[Ubuntu] 安裝 Apache HTTP Server 2.4 + PHP 7.1 + PHP-FPM

操作環境:
OS: Ubuntu Server 16.04.3 LTS amd64
Apache Version: 2.4.27
PHP Version: 7.1.8

 

Step 1. 更新 APT Source,取得最新版套件資訊

# 安裝software-properties-common (已安裝者可跳過此步驟)
sudo apt-get install -y software-properties-common

# 加入 Apache PPA
sudo add-apt-repository -y ppa:ondrej/apache2

# 加入 PHP PPA
sudo add-apt-repository -y ppa:ondrej/php

# 更新套件清單
sudo apt-get update

Read more “[Ubuntu] 安裝 Apache HTTP Server 2.4 + PHP 7.1 + PHP-FPM”

Leave a comment

[Linux] iptables ip/port forwarding

※操作系統為Ubuntu-14.04.4-server-amd64
※使用者為root,如果不是用root操作,請記得加sudo

本機端上:

# 轉送外來tcp port 20022封包到本機的port 22
[email protected]:~$ iptables -t nat -A PREROUTING -p tcp --dport 20022 -j REDIRECT --to-port 22

# 也可以使用-i參數指定網路卡(Interface),指定網路卡eth0
[email protected]:~$ iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 20022 -j REDIRECT --to-port 22

 

涉及轉送到其他機器的話,必須先開啟ip forward,有三種方法,但生效時間不一樣

# 注意: 這邊必須以root權限操作,請切換成root或是sudo vim用編輯器編輯
# 方法一:直接echo 1到檔案,這個方式是暫時開啟,重開機後會消失,如果你只是想要暫時當一下Router可以用這種方式 (1為開啟,0為關閉)
[email protected]:~$ echo 1 > /proc/sys/net/ipv4/ip_forward

# 方法二:使用sysctl進行設定,效果等同第一種方法 (1為開啟,0為關閉)
[email protected]:~$ sysctl net.ipv4.ip_forward=1

# 方法三:將上述兩種方法其中一種指令加到/etc/network/interfaces,這樣子每次網路卡重啟時皆會自動開啟轉送,但如果要當下生效的話還是要先利用上面提到的方法
[email protected]:~$ echo 'pre-up sysctl net.ipv4.ip_forward=1' >> /etc/network/interfaces

 

進入主題,將封包轉送到其他機器上的指令

# 轉送外來tcp port 20022封包到內網機器192.168.0.1的port 22
[email protected]:~$ iptables -t nat -A PREROUTING -p tcp --dport 20022 -j DNAT --to 192.168.0.1:22
[email protected]:~$ iptables -t nat -A POSTROUTING -p tcp --dport 22 --dst 192.168.0.1 -j MASQUERADE

 

測試規則是否生效 (192.168.0.253是Server IP)

[email protected]:~$ nc -zv 192.168.0.253 20022
Connection to 192.168.0.253 20022 port [tcp/*] succeeded!

若成功了就會出現successed字樣
實際上server沒有服務在使用port 20022
但是因為我們設定了iptables做forward
所以這個封包並沒有進到server,而是直接被轉到內網的192.168.0.1
而192.168.0.1收到了封包,回傳會先經過server
server收到了回傳封包,透過POSTROUTING的規則,把封包傳回外網的機器

 

因為自定義的iptables rules在重開機之後就會消失
所以我們要在重開機後能自動復原rules

#先保存現在已經設定好的rules
[email protected]:~$ iptables-save > /etc/network/iptables.rules

 

編輯/etc/network/interfaces,在檔案末端加入這行

pre-up iptables-restore < /etc/network/iptables.rules

 

這樣當網路卡啟用的同時,也會一併載入自訂的rules

 

 

Updates:
2017-01-18: 修正錯誤,sysctl重啟網卡後forward一樣會自動關閉,新增自動開啟的方法(第三種)。

Leave a comment

[Ubuntu] 掛載 VirtualBox 共享目錄

※在進行之前,要先把VirtualBOX Guest Additions安裝過 (在VirtualBox上排選單 > Devices > Insert Guest Additions CD image)

 

首先,先把自己加進vboxsf群組 (VirtualBox)

sudo usermod -a -G vboxsf $(whoami)

 

編輯/etc/fstab檔

# share_folder: 在VirtualBox設定的共享資料夾名稱
# /srv/share_folder: Ubuntu上的掛載點
share_folder    /srv/share_folder   defaults    0 0

 

remount檔案系統,就會看共享目錄被掛到/srv/share_folder了

sudo mount -a

 

Leave a comment

[Ubuntu] Ubuntu 12.04 升級後 phpmyadmin 爛掉

今天把Ubuntu升級至14.04時

發現phpmyadmin沒有起來

查一下log發現:

[Wed Oct 15 16:13:05.971530 2014] [:error] [pid 2129] [client 192.168.224.179:64325] PHP Warning:  is_readable(): open_basedir restriction in effect. File(js/codemirror/lib/codemirror.js) is not within the allowed path(s): (/usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/) in /usr/share/phpmyadmin/js/get_scripts.js.php on line 31, referer: http://myhost/pma/

 

看起來像是路徑沒設好

但是目錄下確實是有東西

ls -al /usr/share/phpmyadmin/libraries/php-gettext

total 24
drwxr-xr-x  2 root root  4096 Oct 15 16:08 ./
drwxr-xr-x 17 root root 20480 Oct 15 16:25 ../
lrwxrwxrwx  1 root root    36 Dec 12  2013 gettext.inc -> ../../../php/php-gettext/gettext.inc
lrwxrwxrwx  1 root root    36 Dec 12  2013 gettext.php -> ../../../php/php-gettext/gettext.php
lrwxrwxrwx  1 root root    36 Dec 12  2013 streams.php -> ../../../php/php-gettext/streams.php

不過東西是link過來的

神奇的是解法竟然是copy過來,竟然不吃link

cd /usr/share/phpmyadmin/libraries/php-gettext
sudo rm -f ./*
sudo ln /usr/share/php/php-gettext/* .

 

不知道中間有什麼誤會

只能先這樣了~

Leave a comment