2014年7月28日 星期一

FreeBSD架設網頁伺服器,Apache,PHP,MySQL,phpmyadmin

Port位置
/usr/ports/www/apache24
/usr/ports/databases/mysql56-server
/usr/ports/www/mod_php55阿帕契的PHP套件
/usr/ports/lang/php55
/usr/ports/lang/php55-extensions函式庫
/usr/ports/databases/phpmyadmin

編輯/etc/rc.conf開機啟動
apache24_enable="YES"
mysql_enable="YES"

編輯apache設定檔
/usr/local/etc/apache24/httpd.conf

依個人喜好修改
依個人喜好修改
ServerRoot "/usr/local"
ServerAdmin you@your.address
ServerName www.example.com:80
DocumentRoot "/usr/local/www/apache24/data"網頁根目錄
Listen :80監聽埠

首頁預設名稱
DirectoryIndex index.php index.html

加入PHP支援
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
LoadModule php5_module        libexec/apache24/libphp5.so

加入phpMyAdmin支援
Alias /phpmyadmin "/usr/local/www/phpMyAdmin"

<Directory "/usr/local/www/phpMyAdmin">
Options None
AllowOverride None
Require all granted
</Directory>

語言選項
AddDefaultCharset On

做一個目錄
mkdir /usr/local/www/phpMyAdmin/config
hmod o+w /usr/local/www/phpMyAdmin/config權限不對沒辦法用
chmod o+r /usr/local/www/phpMyAdmin/config.inc.php
這檔案應該是從config.inc.php.sample還是 config.sample.inc.php或是/usr/local/etc/php.ini-development複製來的,忘了,內容好像都一樣

MYSQL設定ROOT密碼
/usr/local/bin/mysqladmin -u root password

登入MYSQL設定讓遠端可以連線
mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'mypassword' WI
TH GRANT OPTION;

複製MYSQL設定檔
cp /usr/local/share/mysql/my-default.cnf /etc/my.cnf

啟動apach、mysql
/usr/local/etc/rc.d/mysql-server start
/usr/local/sbin/apachectl start

寫一個index.php丟進網頁根目錄 /usr/local/www/apache24/data
<? php 
phpinfo();
?>

用瀏覽器有看到PHP資訊就是apache架設成功且可以正常解析PHP
再瀏覽IP/phpmyadmin/網頁,出現登入畫面表示phpmyadmin安裝成功,
可以登入看到MYSQL內建資料庫表示資料庫架設成功。

httpd,80Port mysqld,3306

FreeBSD使用MPD5架設VPN(PPTP協定)

參考參考2參考3參考4

Port位置 /usr/ports/net/mpd5/
複製範例,最終檔名為mpd.conf
cp /usr/local/etc/mpd5/mpd.conf.sample mpd.conf

設置參數/usr/local/etc/mpd5/mpd.conf
startup:
        # configure mpd users
        set user foo bar admin
        set user foo1 bar1
網頁登入,帳號:foo,密碼:bar,可修改

預設協定改為PPTP
default:
        #load dialup
        load pptp_server

找到pptp_server
# Define dynamic IP address pool.
        set ippool add pool1 192.168.2.50 192.168.2.99
此為要發給連進來的使用者的IP範圍

# Specify IP address pool for dynamic assigment.
        set ipcp ranges 192.168.2.1/32 ippool pool1設定mask,只須改ranges後面的IP
        set ipcp dns 168.95.1.1設定DNS
        #set ipcp nbns 192.168.1.4這不知道是啥,沒什麼作用,不註解好像也無所謂

# Configure PPTP
        set pptp self 172.16.0.151外網IP

設定VPN帳號,複製範例
cp /usr/local/etc/mpd5/mpd.secret.sample mpd.secret

編輯,格式為帳號 “密碼” 發給IP(若IP欄空白會自動發給)
vpntest         "a123456"  192.168.2.99

編輯/etc/rc.conf,開機啟動
mpd_enable="YES"

啟動
/usr/local/etc/rc.d/mpd5 start

到此為止已經可以連進VPN了,但無法連外網,
VPN伺服器有兩張網卡的話可以用PF架設NAT,將封包再轉到外網網卡。
若是只有一張網卡,一樣開啟PF,將送進來的封包再轉出去,
連進來的使用者網卡都是ng開頭,只需要改/etc/pf.conf為
if_int="ng*"
就可以再轉出去

使用5005、5006、1723port

FreeBSD架設NAT,使用PF(Packet Filter,封包過濾器)

需有兩張網路卡,對外(WAN),對內(LAN)
目前10.0 RELEASE核心預設就有PF,但還是需重新編譯核心,加入ALTQ,此功能不知是否必須,但若不加入,會一直出現訊息

重新編譯核心
cd /sys/amd64/conf

複製一個核心
cp GENERIC GENERIC_1

編輯GENERIC_1,加入ALTQ
options         ALTQ
options         ALTQ_CBQ        # Class Based Queuing (CBQ)
options         ALTQ_RED        # Random Early Detection (RED)
options         ALTQ_RIO        # RED In/Out
options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
options         ALTQ_PRIQ       # Priority Queuing (PRIQ)

開始編譯
config GENERIC_1
cd ../compile/ GENERIC_1
make depend all install

編輯/etc/rc.conf
ifconfig_em0="inet 172.16.0.151 netmask 255.255.255.0"對外網卡
ifconfig_em1="inet 192.168.2.1 netmask 255.255.255.0"對內網卡
pf_enable="YES"開機啟動PF
gateway_enable="YES"架NAT要開啟此項

編輯/etc/pf.conf
此檔案預設是沒有的,可以新增或cp /usr/share/examples/pf/pf.conf範例檔案
這個檔案也可以訂定各種封包過濾規則
if_ext="em0"對外網卡
if_int="em1"對內網卡
net_lan="192.168.2.1/24"內網區段mask

轉送封包
set skip on lo0
nat on $if_ext from $net_lan -> ($if_ext:0)
no nat on $if_ext from !$net_lan to any

這兩條規則會將試圖從外網連進來的擋掉
block in on $if_ext
pass out

接下來內網電腦就可以指向對內網卡的IP, bsd會將送進來的封包從對外網卡轉出去,外部送進來的轉送到來源端

FreeBSD建置Samba網路分享目錄

參考
參考2
參考3

Port位置 /usr/ports/net/samba36
/usr/local/etc/smb.conf.sample
這個檔案是設定檔範例,複製一份改為smb.conf.
cp /usr/local/etc/smb.conf.sample /usr/local/etc/smb.conf

修改設定檔
Global全域設定
workgroup,工作群組
server string,伺服器名稱
hosts allow = 192.168.1. 192.168.2. 127.
可限制連線IP,第四碼不填代表0~255,最後的127不知是啥
log file,紀錄檔路徑

Share Definitions分享設定,格式為
[public]對外的目錄名稱
   comment = %h Shared Public Directory註解
   path = /usr/home/samba/public在本機的路徑 
   public = yes是否公開
   writeable = yes是否可寫
   read only = no是否唯讀
   valid users = userName限制使用者

建立使用者、群組,samba登入密碼要另外設定
adduser
smbpasswd –a userName

設定開機啟動
/etc/rc.conf
samba_enable="YES"

啟動
/usr/local/etc/rc.d/samba start

使用tcp 445 139port(smbd)、udp 137 138(nmbd)

FreeBSD建置Git Server

參考
參考2
--bare參數參考
無法Push參考

Port位置 /usr/port/devel/git
加入使用者,此為外部連進來的帳密
adduser

在家目錄增加.ssh目錄
mkdir -p /home/git/.ssh

加入SSH密鑰
touch /home/git/.ssh/authorized_keys

修改權限
chmod 0700 /home/git/.ssh
chmod 0600 /home/git/.ssh/authorized_keys

修改啟動參數 /etc/rc.conf
git_daemon_enable="YES"
git_daemon_flags="--syslog --export-all"

若是無法啟動改為
git_daemon_flags="--syslog --export-all --reuseaddr --detach"

啟動daemon
/usr/local/etc/rc.d/git_daemon start

創建專案目錄並初始化倉庫
su git
cd /home/git/
mkdir project.git
cd project.git
git --bare init

git@[gitserver]:/home/git/project.git BSD帳號名稱@伺服器位置,可以是domain:專案位置
無法Push在專案倉庫執行這行
git config --bool core.bare true

占用9418port

SSH可用Root登入

參考
編輯 /etc/ssh/sshd_config
原本
#PermitRootLogin no

改為
PermitRootLogin yes

FreeBSD語系更改為UTF-8

預設為C Shell下只要修改 /etc/csh.cshrc 增加以下敘述即可
setenv LC_CTYPE en_US.ISO8859-1
setenv LC_ALL zh_TW.UTF-8
setenv LANG zh_TW.UTF-8