树莓派搭建LNMP环境

Raspberry Pi的固件有很多,我安装的是官方的Raspbian。配置ip。然后ssh上去后开始安装。

推荐root权限执行

sudo apt-get update
sudo apt-get install nginx php5-fpm php5-cli php5-curl php5-gd php5-mcrypt php5-mysql php5-cgi mysql-server

首次安装mysql的时候会提示输入密码,密码不要忘记就行了。
接下来我们来配置Nginx,首先打开配置文件,/etc/nginx/nginx.conf ,按照下面的配置进行修改。

worker_processes 1;

worker_connections 256;

gzip on;
gzip_disable "msie6";

gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

接下来打开/etc/nginx/sites-available/default也是按照下面的配置进行修改。

server {
	listen 80;#Web服务端口号,大陆用户可能需要修改为81或8080等
	server_name raspiweb.dyndns.org;
	root /media/usb/www/;

	access_log	/var/log/nginx/localhost.access.log;
	#error_page	404 /404.html;

	if (!-e $request_filename)
	{
		rewrite ^(.*)$ /index.php$1 last;
	}

	location / {
		index  index.html index.htm index.php default.html default.htm default.php;
	}

	location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
		access_log	off;
		expires	1d;
	}

	location ~ .*\.php(\/.*)*$ {
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		fastcgi_index index.php;
		include fastcgi_params;
	}
}

下面是对mysql的调优,打开配置文件/etc/mysql/my.cnf修改以下几处。

[mysqld]
key_buffer = 16k
max_allowed_packet = 1M
thread_stack = 64K
thread_cache_size = 4
query_cache_limit = 1M
default-storage-engine = MYISAM

最后我们来配置php.ini,php-fpm,打开配置文件/etc/php5/fpm/php.ini和/etc/php5/fpm/php-fpm.conf修改以下几处。

memory_limit=16M
process.max=4

重启nginx。

sudo /usr/sbin/nginx -s reload

到这里我们的lnmp环境配置已经大功告成!接下来是安装phpmyadmin到指定目录~这里只讲如何配置lnmp。
via

基于 Samba 实现 NAS 系统

摆弄了几天Raspberry Pi,在搞定了无线网络、FTP服务之后,打算更进一步,通过Samba实现NAS系统与PC共享文件。
需要安装的软件:
sudo apt-get install samba samba-common-bin
sudo apt-get install netatalk (可选,用于支持AFP)
sudo apt-get install avahi-daemon(可选,用于支持网内的计算机自动发现)
接下来就是配置了:
[Samba 配置] /etc/samba/smb.conf 文件尾部增加

[public]
comment = Public Storage
path = /home/pi
read only = no#任何人都具有了访问修改的权限
#因为是公共文件夹,所以给了所有用户全部权限,可以自定义
create mask = 0777#新创建文件的默认属性
directory mask = 0777#新创建文件夹的默认属性
guest ok = yes#默认的访问用户名为guest
browseable = yes

有关 Samba 的详细配置可以参考资料1资料2。然后就可以 smbd restart 了。这时候已经可以通过网上邻居看到共享文件目录,只是进不去。提示需要输入口令,尝试用本地帐户也无法进入。查了资料原来因为 Samba 使用了自己一套用户帐号资料库。要登录的话还需要向该库添加帐号信息,方法有两种:
1.直接用 mksmbpasswd.sh 将系统用户转换成 Samba 用户:

cat /etc/passwd | mksmbpasswd.sh >/etc/samba/smbpasswd

2.用 smbpasswd 命令直接设置,需要首先要添加系统用户然后用 smbpasswd -a 用户名 添加 Samba 用户;smbpasswd -e 用户名 激活用户。
[Netatalk 配置] /etc/netatalk/AppleVolumes.default 方法参考资料3
最后就是挂载USB移动硬盘了:

mount /dev/sda1 /home/shares/public/

有时候卸载USB移动硬盘的时候会提示设备忙(Device is busy),只需要加上 –l 参数就行了:

umount -l /home/shares/public/

via

通过SSH配置Wi-Fi连接

脚本如下,修改其中的SSID、ENCRYPTION以及PASSWORD。

#! /bin/sh
# SSID (aka. network name).
SSID='Tenda'

# Network encryption method.
# * 'WPA' for WPA-PSK/WPA2-PSK (note: most Wi-Fi networks use WPA);
# * 'WEP' for WEP;
# * 'Open' for open network (aka. no password).
ENCRYPTION='WPA'

# Network password. (WPA-PSK/WPA2-PSK password, or WEP key)
PASSWORD='pass'

if [ $(id -u) -ne 0 ]; then
printf "This script must be run as root. \n"
exit 1
fi

NETID=$(wpa_cli add_network | tail -n 1)
wpa_cli set_network $NETID ssid \"$SSID\"
case $ENCRYPTION in
'WPA')
wpa_cli set_network $NETID key_mgmt WPA-PSK
wpa_cli set_network $NETID psk \"$PASSWORD\"
;;
'WEP')
wpa_cli set_network $NETID wep_key0 $PASSWORD
wpa_cli set_network $NETID wep_key1 $PASSWORD
wpa_cli set_network $NETID wep_key2 $PASSWORD
wpa_cli set_network $NETID wep_key3 $PASSWORD
;;
*)
;;
esac
wpa_cli enable_network $NETID
wpa_cli save_config

等待几秒钟之后,无线网卡上的指示灯亮起,树莓派即连接成功。
可能用到的命令:
lsusb – 查看USB设备,检查无线网卡。
lsmod – 查看系统已加载的模块。rt2x00 是 Ralink 芯片组的统一驱动。
iwconfig – 查看网卡信息。
ifconfig – 查看连接信息。ifconfig wlan0 up 启动网卡 wlan0。
供电不足可能会导致USB无线网卡易掉线等问题,需要保持电力供应。
如果在wpa_gui中找不到网卡适配器,在 /etc/wpa_supplicant/wpa_supplicant.conf 中加入这两行配置就行了:

# needed for wpa_gui to work
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
# needed to allow wpa_gui to alter the configuration
update_config=1

via