1. 程式人生 > >基於raspberry搭建個人web server

基於raspberry搭建個人web server

中國 步驟 probe 基礎 密碼 eal pop3 默認 vsftpd服務器

  1. 樹莓派系統介紹
  2. 安裝操作系統及網絡\遠程控制配置
  3. 安裝常用軟件
  4. 構建web服務器(nginx + php + sqlite)
  5. 構建web服務器(appach+mysql+php)
  6. 構建NAS服務器
  7. 其余功能環境開發
  8. ……

  1. 樹莓派介紹

1.1 項目介紹

1.2 硬件介紹

1.2.1 散熱片安裝

1.2.2 風扇安裝 附件1

1.2.3 屏幕安裝

1.3 系統介紹

目前很對公司或組織都為樹莓派開發了操作系統,常用的操作系統如下,可根據自己的具體需求燒錄安裝,下載地址:https://www.raspberrypi.org/downloads/

第一類樹莓派原生操作系統:基於linux內核。有2種:raspbian官方的基礎版本操作系基於Debian系統。PIXEL是包含桌面的版本,LITE是單純的OS;NOOBS New Out of Box Software,是樹莓派官方發布的工具可以拋開各種復雜的網絡和鏡像安裝軟件,甚至可以拋開電腦就能讓你安裝上你想要的系統。NOOBS是離線安裝版,LITE是網絡安裝版。

第二類第三方操作系統:包含了UBUNTU MATE;SNAPPY UBUNTU CORE;WINDOWS 10 IOT CORE;OSMC;RISC OS等等。

  1. 安裝操作系統及網絡\遠程控制配置

2.1 系統安裝

2.1.1 下載系統的鏡像,根據需要選擇;我用的raspbin;下載到本地並用7zip解壓出img文件。

2.1.2 下載鏡像燒錄工具Win32DiskImager;並格式化tf卡

2.1.3 以管理員身份運行Win32DiskImager,找到解壓縮之後的系統img文件,寫入……

2.1.4 寫入完成之後取出tf卡,插入樹莓派卡槽,上電開機。

2.1.5 通常默認情況下樹莓派的系統是打開ssh的,因此在沒有安裝屏幕的情況下可以通過以下步驟連接上樹莓派進行操作:

  1. 樹莓派使用網線連上路由器
  2. 使用同一網段的PC段putty,直接連接樹莓派,默認用戶名:pi;密碼:raspberry;
  3. 如果能夠ping通,但是無法ssh連上,那有可能是默認系統沒有開啟ssh;下面只需要在tf卡的boot目錄下(也就是tf卡根目錄)創建一個名稱為SSH的文件即可;重啟後就可以正常使用ssh了。

2.1.6 設置expand_rootfs 把整個系統的可用空間擴展到儲存卡的大小(樹莓派默認不使用SD卡的全部空間,有一部分保留,建議選中):

  1. sudo raspi-config
  2. 進入:技術分享圖片

  1. 按tab鍵切換到:<Select> 選中後,sudo reboot;就可以了
  2. 附1:raspi-config的說明

2.1.7 開啟root賬戶:

  1. sudo passwd root
  2. 系統會提示輸入兩遍的root密碼
  3. 接著輸入下面命令,用來解鎖root賬戶sudo passwd --unlock root
  4. 設置ssh遠程root登錄:sudo nano /etc/ssh/sshd_config ///Ctrl + W 快捷鍵 搜索 PermitRootLogin without-password ///修改 PermitRootLogin without-password 為 PermitRootLogin yes;reboot重啟

2.1.8 更新軟件源及系統:

  1. cd /etc/apt/
  2. 備份原來的源:cp sources.list sources.list_back
  3. 編輯新源sudo nano sources.list
  4. 更改為:中國科技大學源,把wheezy 改成jessie這樣大部分源是在中國。網址末尾的raspbian重復兩次是必須的。因為Raspbian的倉庫中除了APT軟件源還包含其他代碼。APT軟件源不在倉庫的根目錄,而在raspbian/子目錄下。

deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpi

deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpi

  1. 更新:sudo apt-get update && sudo apt-get upgrade(# 更新軟件源sudo apt-get update/#更新軟件sudo apt-get upgrade)
  2. 附2:國內主要的源

2.2 網絡及遠程控制配置

2.2.1 配置及使用VNC

A. 安裝sudo apt-get install tightvncserver

B. 設置密碼vncpasswd

C. 下載客戶端:https://www.realvnc.com/download/vnc/

D. 樹莓派開啟vnc server:vncserver :1 -geometry 800x600

E. 樹莓派關閉vnc server:vncserver -kill :1

F. 客戶端訪問桌面:vncviwer:192.168.1.***:1

G. 開機啟動vnc桌面: sudo nano /etc/init.d/tightvncserver 寫入附件2:

H. 設置支持中文:sudo apt-get install ttf-wqy-zenhei—不需要可以選擇不安裝,安裝之後要去setting裏面設置中文界面

2.2.2 配置自動登錄wifi

  1. lsusb #如果無效,查看驅動是否加載
  2. lsmod#如果未加載,進行加載 modprobe xxx
  3. sudo nano /etc/network/interfaces
  4. 修改並寫入附件4

2.2.3 配置固定IP

  1. 安裝常用軟件

3.1 安裝FTP server:

3.1.1 安裝vsftpd服務器 (約400KB):sudo apt-get install vsftpd

3.1.2 啟動ftp服務:sudo service vsftpd start

3.1.3 編輯vsftdp的配置文件:sudo nano /etc/vsftpd.conf

配置:找到以下行,定義一下

anonymous_enable=NO

表示:不允許匿名訪問

local_enable=YES

設定本地用戶可以訪問。

write_enable=YES

設定可以進行寫操作

local_umask=022

設定上傳後文件的權限掩碼。

存盤退出

3.1.4 重啟vsftpd服務:sudo service vsftpd restart

3.1.5 測試一下:通過ftp連接樹莓派系統,以用戶名pi登錄,密碼是raspberry

ftp的根目錄是/home/pi,即pi用戶的HOME目錄。可上傳或下載文件了

3.2 安裝ufw網絡防火墻

3.2.1 安裝 :sudo apt-get install ufw

3.2.2 啟用(使用ssh登錄的請註意,請先開啟22端口,否則重啟機器後會導致ssh無法連接)

sudo ufw enable

sudo ufw default deny

作用:開啟了防火墻並隨系統啟動同時關閉所有外部對本機的訪問(本機訪問外部正常)。

3.2.3 關閉:sudo ufw disable

3.2.4 查看防火墻狀態:sudo ufw status

3.2.5 開啟/禁用常用端口或服務:

sudo ufw allow 80 允許外部訪問80端口

sudo ufw delete allow 80 禁止外部訪問80 端口

sudo ufw allow from 192.168.1.1 允許此IP訪問所有的本機端口

sudo ufw deny smtp 禁止外部訪問smtp服務

sudo ufw delete allow smtp 刪除上面建立的某條規則

sudo ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 22 要拒絕所有的TCP流量從10.0.0.0/8 到192.168.0.1地址的22端口

可以允許所有RFC1918網絡(局域網/無線局域網的)訪問這個主機(/8,/16,/12是一種網絡分級):

sudo ufw allow from 10.0.0.0/8

sudo ufw allow from 172.16.0.0/12

sudo ufw allow from 192.168.0.0/16

3.2.6 常用端口:

21 :FTP

22 :ssh

25 :SMTP 發送郵件

80 :HTTP

110 :POP3 接收郵件

143 :IMAP 接收郵件

3306:SQL數據庫

3.3 安裝samba文件共享

3.3.1 安裝:

sudo apt-get update

sudo apt-get install samba samba-common-bin

3.3.2 配置samba:sudo nano /etc/samba/smb.conf (去掉#的註釋,否則samba會啟動失敗)

修改:[share] #共享文件的名稱,將在網絡上以此名稱顯示

path = /home/pi/samba #共享文件的路徑

valid users = root pi #允許訪問的用戶,這裏我用的是root 和 pi 兩個用戶

browseable = yes #允許瀏覽

public = yes #共享開放

writable = yes #可寫

3.3.3 添加賬戶

3.3.3.1 啟用賬戶sudo smbpasswd -e pi

3.3.3.2 添加賬戶sudo smbpasswd -a pi

3.3.3.3 已添加賬戶 pi;密碼raspberry

3.3.4 重啟:sudo /etc/init.d/samba restart

  1. 構建web服務器(nginx + php + sqlite)

4.1 安裝nginx web服務器 :sudo apt-get install nginx

nginx的www默認根目錄:/var/www/html

修改默認目錄:

--sudo nano /etc/nginx/sites-available/default

--修改 root /var/www/html 和 fastcgi_param SCRIPT_FILENAME var/www/html$fastcgi_script_name;

--sudo /etc/init.d/nginx reload

4.2 安裝php和sqlite: sudo apt-get install php5-fpm php5-sqlite

4.3 修改nginx的配置文件

--sudo nano /etc/nginx/sites-available/default

--找到listen行,將其前面的#號註釋去掉,修改後內容如下

listen 80; ## listen for ipv4.

--找到index行,加入index.php,修改後內容如下

index index.php index.html index.htm

--找到php的定義段,將這些行的註釋去掉 ,修改後內容如下

location ~ \.php$ {

  fastcgi_pass unix:/var/run/php5-fpm.sock;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

  fastcgi_index index.php;

  include fastcgi_params;

}

--重新加載nginx的配置: sudo /etc/init.d/nginx reload

4.4 測試php網頁

<?PHP

phpinfo();

?>

4.5 網頁訪問出現403錯誤,修改文件夾權限;

  1. 構建web服務器(appach+mysql+php)

5.1 安裝Apache(配置見附件)

Apache可以用下面的命令來安裝

sudo apt-get install apache2

Apache默認路徑是/var/www/

其配置文件路徑為: /etc/apache2/

可以通過:sudo vi /etc/apache2/ports.conf修改監聽端口號

重啟服務生效:sudo service apache2 restart

5.2 安裝mysql(Sqlserver轉mysql方法:見附件5)

sudo apt-get install mysql-server

安裝過程中,會出現一個提示符讓你輸入一個密碼。

這個密碼是mysql root用戶的密碼。

連接MYSQL:

格式: mysql -h主機地址 -u用戶名 -p用戶密

5.2.1 mysql並開啟遠程訪問(開啟3306端口):

開啟mysql遠程訪問: 修改/etc/mysql/my.cnf文件

找到下面這行,並用#註釋掉,

bind-address = 127.0.0.1

或者修改為bind-address = 0.0.0.0

登錄mysql,輸入下面命令

mysql>grant all privileges on *.* to username@"%" identified by "password";(username一般是root,password是新的密碼)

mysql> FLUSH PRIVILEGES;

開啟3306端口遠程訪問

這裏的iptable命令和centos中命令不一樣,所以參考了一下文檔,使用 ufw軟件來開啟3306端口

5.3 安裝PHP

輸入下面的命令,就可以安裝PHP 5,以及PHP訪問mysql數據庫所需要的庫。

sudo apt-get install php5

sudo apt-get install php5-mysql

sudo apt-get install php5-gd

sudo apt-get install libapache2-mod-php5

  1. 構建NAS服務器

6.1 安裝samba(見3.3節)

6.2 安裝minidlna

sudo apt-get install minidlna

設置/etc/minidlna.conf文件,在文件尾部添加如下內容:

================================================================

media_dir=A,/home/pi/External_Disk/samba/DLNA/Music #A表示這個目錄是存放音樂的,當minidlna讀到配置文件時,它會自動加載這個目錄下的音樂文件

media_dir=P,/home/pi/External_Disk/samba/DLNA/Picture

media_dir=V,/home/pi/External_Disk/samba/DLNA/Video

db_dir=/home/pi/External_Disk/samba/DLNA/db #配置minidlna的數庫數據的存放目錄

log_dir=/home/pi/External_Disk/samba/DLNA/log #配置日誌目錄

================================================================

重啟minidlna:/etc/init.d/minidlna restart

測試:/etc/init.d/minidlna status

6.3 掛載 usb移動硬盤

6.3.1 MiniTool格式化硬盤為ext4格式

6.3.2 df -h

umount /dev/sda5

mount /dev/sda5 /home/pi/External_Disk/usbdisk

6.3.3 自動掛載:/etc/fstab 添加一行

第一列:磁盤分區名/卷標,一般是/dev/sdaN(N表示正整數)

第二列:掛載點,我們在這裏把/dev/sda1掛到/samba上。

第三列:缺省設置,一般用defautls。

第四列:是否備份:0——表示不做 dump 備份;1——表示要將整個 <fie sysytem> 裏的內容備份;2 也表示要做 dump 備份,但該分區的重要性比 1 小。

第五列:檢測順序:0——不進行檢測;根分區(/),必須填寫 1,其它的都不能填寫 1。如果有分區填寫大於 1 的話,則在檢查完根分區後,從小到大依次檢查下去。

*******************************************************************************

附件1

技術分享圖片

*******************************************************************************

附1:raspi-config的說明:***************************************************

1 Expand Filesystem 擴展文件系統(同舊版)。

2 Change User Password 改變默認pi用戶的密碼,按回車後輸入pi用戶的新密碼。

3 Enable Boot to Desktop/Scratch 啟動時進入的環境選擇

Console Text console, requiring login(default)

啟動時進入字符控制臺,需要進行登錄(默認項)。

Desktop log in as user ‘pi‘ at the graphical desktop

啟動時進入LXDE圖形界面的桌面。

Scratch Start the Scratch programming environment upon boot

啟動時進入Scratch編程環境。

4 Internationalisation Options 國際化選項,可以更改默認語言

I1 Change Locale

語言和區域設置,建議不要改,默認英文就好。想改中文,最好選安裝了中文字體再進行這步,安裝中文字體的方法:

sudo apt-get update

sudo apt-get install ttf-wqy-zenhei ttf-wqy-microhei

移動到屏幕底部,用空格鍵選中zh-CN GB2312,zh-CN GB18030,zh-CN UTF-8,然後按回車,然後默認語言選中zh-cn然後回車

I2 Change Timezone

設置時區,如果不進行設置,PI的時間就顯示不正常。選擇Asia(亞洲)再選擇Chongqing(重慶)即可。

I3 Change Keyboard Layout

改變鍵盤布局

5 Enable Camera

啟動PI的攝像頭模塊,如果想啟用,選擇Enable,禁用選擇Disable就行了

6 Add to Rastrack

把你的PI的地理位置添加到一個全世界開啟此選項的地圖,建議還是不要開了,免得被跟蹤。

7 Overclock

None 不超頻,運行在700Mhz,核心頻率250Mhz,內存頻率400Mhz,不增加電壓

Modest 適度超頻,運行在800Mhz,核心頻率250Mhz,內存頻率400Mhz,不增加電壓

Medium 中度超頻,運行在900Mhz,核心頻率250Mhz,內存頻率450Mhz,增加電壓2

High 高度超頻,運行在950Mhz,核心頻率250Mhz,內存頻率450Mhz,增加電壓6

Turbo 終極超頻,運行在1000Mhz,核心頻率500Mhz,內存頻率600Mhz,增加電壓6

8 Advanced Options 高級設置

A1 Overscan 是否讓屏幕內容全屏顯示

A2 Hostname 在網上鄰居或者路由器能看到的主機名稱

A3 Memory Split 內存分配,選擇給GPU多少內存

A4 SSH 是否運行SSH登錄,建議開戶此選項,以後操作PI方便,有網絡就行,不用開屏幕了。

A5 SPI 是否默認啟動SPI內核驅動,新手就不用管了。

A6 Audio 選擇聲音默認輸出到模擬口還是HDMI口

0 Auto 自動選擇

1 Force 3.5mm (‘headphone‘) jack強制輸出到3.5mm模擬口

2 Force HDMI 強制輸出到HDMI

A7 Update 把raspi-config這個工具自動升級到最新版本

9 About raspi-config 關於raspi-config的信息。

附2:國內主要的源

中山大學

Raspbian http://mirror.sysu.edu.cn/raspbian/raspbian/

中國科學技術大學

Raspbian http://mirrors.ustc.edu.cn/raspbian/raspbian/

清華大學

Raspbian http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/

華中科技大學

Raspbian http://mirrors.hustunique.com/raspbian/raspbian/

Arch Linux ARM http://mirrors.hustunique.com/archlinuxarm/

大連東軟信息學院源(北方用戶)

Raspbian http://mirrors.neusoft.edu.cn/raspbian/raspbian/

重慶大學源(中西部用戶)

Raspbian http://mirrors.cqu.edu.cn/Raspbian/raspbian/

新加坡國立大學

Raspbian http://mirror.nus.edu.sg/raspbian/raspbian

牛津大學

Raspbian http://mirror.ox.ac.uk/sites/archive.raspbian.org/archive/raspbian/

韓國KAIST大學

Raspbian http://ftp.kaist.ac.kr/raspbian/raspbian/

附件3:

#!/bin/sh

### BEGIN INIT INFO

# Provides: tightvncserver

# Required-Start: $local_fs

# Required-Stop: $local_fs

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: Start/stop tightvncserver

### END INIT INFO

# More details see:

# http://www.penguintutor.com/linux/tightvnc

### Customize this entry

# Set the USER variable to the name of the user to start tightvncserver under

export USER=’pi’

### End customization required

eval cd ~$USER

case ”$1” in

start)

# 啟動命令行。此處自定義分辨率、控制臺號碼或其它參數。

su $USER -c ’/usr/bin/tightvncserver -geometry 800x600 :1’

echo ”Starting TightVNC server for $USER ”

;;

stop)

# 終止命令行。此處控制臺號碼與啟動一致。

su $USER -c ’/usr/bin/tightvncserver -kill :1’

echo ”Tightvncserver stopped”

;;

*)

echo ”Usage: /etc/init.d/tightvncserver {start|stop}”

exit 1

;;

esac

exit 0

附件4:

auto lo

iface lo inet loopback

iface eth0 inet dhcp

auto wlan0

allow-hotplug wlan0

iface wlan0 inet dhcp

wpa-ssid “你的wifi名稱”

wpa-psk “你的wifi密碼”

#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf #註釋掉這一行

iface default inet dhcp

auto lo //表示使用localhost

iface eth0 inet dhcp //表示如果有網卡ech0, 則用dhcp獲得IP地址 (這個網卡是本機的網卡,而不是WIFI網卡)

auto wlan0 //表示如果有wlan設備,使用wlan0設備名

allow-hotplug wlan0 //表示wlan設備可以熱插撥

iface wlan0 inet dhcp //表示如果有WLAN網卡wlan0 (就是WIFI網卡), 則用dhcp獲得IP地址

wpa-ssid “你的wifi名稱”//表示連接SSID名

wpa-psk “你的wifi密碼”//表示連接WIFI網絡時,使用wpa-psk認證方式,認證密碼

附件5:

apache2 配置多端口多站點:

1. 修改:apache2.conf,添加新根目錄訪問權限:

<Directory /home/pi/docpicroot/note/>

Options Indexes Followsymlinks

AllowOverride None

Require all granted

</Directory>

2. 修改ports.conf,監聽新端口

NameVirtualhost localhost:8080

Listen 8080

3. 修改sites-available/000-default.conf,添加虛擬端口

<virtualhost *:8383>

serveradmin webmaster@localhost

documentroot /home/pi/docpicroot/note-tmp

<directory />

options followsymlinks

allowoverride none

</directory>

<directory /home/pi/docpicroot/note-tmp/>

options indexes followsymlinks multiviews

allowoverride none

order allow,deny

allow from all

</directory>

errorlog /home/pi/docpicroot/note-tmp/logs/error.log

# possible values include: debug, info, notice, warn, error, crit,

# alert, emerg.

loglevel warn

customlog /home/pi/docpicroot/note-tmp/logs/access.log combined

</virtualhost>

基於raspberry搭建個人web server