文档章节

树莓派折腾手记02——LNSP

d
 defined01
发布于 2017/04/30 22:30
字数 2159
阅读 18
收藏 0
点赞 0
评论 0

使用到的东西

OpenSSL 1.1.0e

https://www.openssl.org/source/openssl-1.1.0f.tar.gz
https://www.openssl.org/source/

MariaDB 10.3.0

https://codeload.github.com/MariaDB/server/zip/10.3
https://mariadb.com/downloads/mariadb-tx

PCRE 8.40(貌似PHP还不支持PCRE2)
ftp://ftp.pcre.org/pub/pcre/pcre-8.41.tar.bz2
https://ftp.pcre.org/pub/pcre/

Nginx 1.13.0

http://nginx.org/download/nginx-1.13.5.tar.gz
http://nginx.org/en/download.html

PHP 7.1.4

http://am1.php.net/distributions/php-7.1.10.tar.bz2
http://php.net/downloads.php

CURL 7.55.1(可选)

https://curl.haxx.se/download/curl-7.55.1.tar.bz2
https://curl.haxx.se/download/

LibJPEG(可选)
http://www.ijg.org/files/jpegsrc.v9b.tar.gz
http://www.ijg.org

LibPNG(可选)

https://download.sourceforge.net/libpng/libpng-1.6.32.tar.gz
http://www.libpng.org/

LibXML2(可选)

http://xmlsoft.org/sources/libxml2-2.9.5.tar.gz
http://xmlsoft.org/sources/

下载&&安装

你可能被上面的一大堆连接吓到了?

别怕,我已经整理好了,运行下面的语句即可!

#!/bin/bash
cd ~
# 建立临时目录 #
mkdir LNP
cd LNP

# 开始下载各项安装包 #
wget -c https://www.openssl.org/source/openssl-1.1.0f.tar.gz
wget -c https://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz
wget -c http://nginx.org/download/nginx-1.13.5.tar.gz
wget -c http://am1.php.net/distributions/php-7.1.10.tar.bz2
wget -c https://curl.haxx.se/download/curl-7.55.1.tar.bz2
wget -c http://www.ijg.org/files/jpegsrc.v9b.tar.gz
wget -c https://download.sourceforge.net/libpng/libpng-1.6.32.tar.gz
wget -c http://xmlsoft.org/sources/libxml2-2.9.5.tar.gz
sudo apt-get install -y libjpeg libmcrypt-dev git

# 解压 #
ls *.tar.gz | xargs -n 1 tar -xzf
ls *.tar.bz2 | xargs -n 1 tar -xjf

# 安装OpenSSL #
cd openssl-1.1.0f
sudo ./config;
sudo make;
sudo make install;

# 安装nginx #
cd ../nginx-1.13.5
# 建立用户 #
sudo groupadd nginx
sudo useradd -g nginx -M -s /usr/bin/nologin nginx
sudo ./configure --prefix=/usr/local/nginx \
--user=nginx --group=nginx \
--with-http_flv_module --with-http_mp4_module \
--with-http_gzip_static_module \
--with-http_stub_status_module --with-http_ssl_module -\
-with-pcre=../pcre-8.41 --with-cc=gcc --with-cc-opt=' -O3' \
--with-http_realip_module --with-http_v2_module 
sudo make;
sudo make install;

# 安装libjpeg #
cd ../jpeg-9b
./configure --prefix=/usr/local/libjpeg --enable-shared --enable-static
sudo make;
sudo make install;

# 安装libpng #
cd ../libpng-1.6.32
./configure --prefix=/usr/local/libpng --enable-shared --enable-static
sudo make;
sudo make install;

# 安装libxml2 #
cd ../libxml2-2.9.5
sudo ./configure --prefix=/usr/local/libxml2
sudo make
sudo make install

# 安装CURL #
cd ../curl-7.55.1
./configure --prefix=/usr/local/curl
sudo make;
sudo make install

# 更新动态链接库 #
sudo echo /usr/local/libxml2>/etc/ld.so.conf.d/php.conf
sudo echo /usr/local/libjpeg>>/etc/ld.so.conf.d/php.conf
sudo echo /usr/local/libpng>>/etc/ld.so.conf.d/php.conf
sudo echo /usr/local/libjpeg/lib>>/etc/ld.so.conf.d/php.conf
sudo echo /usr/local/libpng/lib>>/etc/ld.so.conf.d/php.conf
sudo ldconfig

# 安装PHP #
cd ../php-7.1.10
sudo ./configure --prefix=/usr/local/php7 --enable-mbstring \
--with-iconv --enable-zip --with-zlib --with-mcrypt \
--with-gd --with-jpeg-dir=/usr/local/libjpeg --with-png-dir=/usr/local/libpng \
--with-libxml-dir=/usr/local/libxml2 --with-curl=/usr/local/curl \
--enable-pcntl --enable-sockets --with-openssl
sudo make;
sudo make install;


printf "[\033[1;32m--------done!--------\033[m]"

在浏览器输入你的树莓派IP,是不是能看到开始页面了?

MariaDB

wget http://ftp.gnu.org/gnu/ncurses/ncurses-6.0.tar.gz
cd ncurses-6.0
export CPPFLAGS="-P" 
./configure && make && sudo make install;
export CPPFLAGS=
git clone https://github.com/MariaDB/server.git mariadb
cd mariadb
BUILD/autorun.sh
./configure
make
sudo make install

 

配置

由于我们用的是树莓派,所以要优化一下部分的性能


对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 = InnoDB


优化php.ini,php-fpm,打开配置文件/etc/php5/fpm/php.ini和/etc/php5/fpm/php-fpm.conf修改以下几处。
memory_limit=16M
process.max=4

执行sudo vi /usr/local/nginx/conf/nginx.conf,编辑NginX的配置文档如下。


#user  nobody;
# 四个服务进程 #
worker_processes 4;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid		logs/nginx.pid;
# 最大打开的文件描述符个数 #
worker_rlimit_nofile 65535;
# 每个服务进程最大客户端连接数 #
events {
	worker_connections  256;
}

http {
	include	   mime.types;
	default_type  application/octet-stream;

	#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
	#				  '$status $body_bytes_sent "$http_referer" '
	#				  '"$http_user_agent" "$http_x_forwarded_for"';

	#access_log  logs/access.log  main;

	sendfile		on;
	#tcp_nopush	 on;

	# 维持连接30秒 #
	#keepalive_timeout  0;
	keepalive_timeout  30;

	# 压缩页面后传输 #
	gzip  on;

	server {
		# 监听80端口 #
		listen 80;
		server_name localhost;

		#charset koi8-r;

		#access_log  logs/host.access.log  main;

		# 根目录在/var/www/html #
		root /var/www/html;
		index index.html index.htm index.php;
		location / {
			allow all;
		}

		#error_page  404			  /404.html;

		# redirect server error pages to the static page /50x.html
		#
		error_page   500 502 503 504  /50x.html;
		location = /50x.html {
			root   html;
		}

		# proxy the PHP scripts to Apache listening on 127.0.0.1:80
		#
		#location ~ \.php$ {
		#	proxy_pass   http://127.0.0.1;
		#}

		# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
		# 设置FastCGI
		location ~ \.php$ {
			root		   /var/www/html;

			# 禁止部分目录的php执行,视服务器自身设置
			set $dontrun 0;
			if ($uri ~ "^/chat/upload/") { set $dontrun 1; }
			if ($uri ~ "^/chat/upload-img/") { set $dontrun 1; }
			if ($uri ~ "^/cloud/data/") { set $dontrun 1; }
			if ($dontrun = 0) { fastcgi_pass 127.0.0.1:9000; }

			fastcgi_index  index.php;
			# 如果修改了根目录,请将此处的目录名一起更改。不要漏掉目录和$fastcgi_script_name中间的斜杠 #
			fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
			include		fastcgi_params;
		}

		# deny access to .htaccess files, if Apache's document root
		# concurs with nginx's one
		#
		#location ~ /\.ht {
		#	deny  all;
		#}
	}


	# another virtual host using mix of IP-, name-, and port-based configuration
	#
	#server {
	#	listen	   8000;
	#	listen	   somename:8080;
	#	server_name  somename  alias  another.alias;

	#	location / {
	#		root   html;
	#		index  index.html index.htm;
	#	}
	#}


	# HTTPS server
	# 开启HTTPS服务,没有域名&SSL证书的同学可以不开启 #
	server {
		listen	   443 ssl http2;
		server_name localhost;

		# 证书路径不一致的话在这里修改即可 #
		ssl_certificate	  cert.crt;
		ssl_certificate_key  private.key;

		ssl_session_cache	shared:SSL:1m;
		ssl_session_timeout  5m;

		ssl_ciphers  HIGH:!aNULL:!MD5;
		ssl_prefer_server_ciphers  on;

		# 此处配置同HTTP #
		root /var/www/html;
		index index.html index.htm index.php;
			location / {
			allow all;
			}

		location ~ \.php$ {
			root		   /var/www/html;

			# 记得此处也要禁止PHP的执行
			set $dontrun 0;
			if ($uri ~ "^/chat/upload/") { set $dontrun 1; }
			if ($uri ~ "^/chat/upload-img/") { set $dontrun 1; }
			if ($uri ~ "^/cloud/data/") { set $dontrun 1; }
			if ($dontrun = 0) { fastcgi_pass 127.0.0.1:9000; }

			fastcgi_index  index.php;
			fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
			# 但是要注意这里要开启FastCGI的HTTPS支持 #
			fastcgi_param HTTPS on;
			include		fastcgi_params;
		}
	}

}

如何获得免费SSL证书?

首先你需要一个域名(大概30~80一年,也就几顿饭而已)

推荐到SSL For Free网站获取Let'sencrypt的证书(每次一键延期有3个月)。

PS:国外网站访问较慢,有能力的同学可以使用科学上网。

你将会下载到三个文件ca_bundle.crtcertificate.crtprivate.key

但是证书一般只有两个文件(公钥和私钥)啊。

哦,那是因为SSL For Free把公钥拆开了。

新建一个文档cert.crt,手动合并两个公钥:certificate.crt在前,ca_bundle.crt在后

新建的cert.crt即为公钥,private.key即为私钥,把这两个文件放入/usr/local/nginx/conf文件夹中,使用上面的配置即可,开始享受吧!

成果

小科普

  1. wget是一个常见的linux下载器,常与-c(断点续传)连用
  2. xargs可以将传来的字串分割成-n指定个数的参数传递给后面的命令
  3. 终端文字颜色可以用字符\033[<是否高亮>;<前景色>;<背景色>m来更改,留空即为恢复默认。
  4. 如:\033[1;41m即为高亮红底默认前景色,顺序可任意颠倒。

下图的四列分别为:前景色+不高亮;前景色+高亮;背景色+不高亮;背景色+高亮;

(图中第一行为黑色,由于默认背景色为黑色,所以显示不出来)

前景色 背景色 颜色
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫色
36 46 青色
37 47 白色

 

 Nginx的configure各项中文说明

–prefix=<path> – Nginx安装路径。如果没有指定,默认为 /usr/local/nginx。 
–sbin-path=<path> – Nginx可执行文件安装路径。只能安装时指定,如果没有指定,默认为<prefix>/sbin/nginx。 
–conf-path=<path> – 在没有给定-c选项下默认的nginx.conf的路径。如果没有指定,默认为<prefix>/conf/nginx.conf。 
–pid-path=<path> – 在nginx.conf中没有指定pid指令的情况下,默认的nginx.pid的路径。如果没有指定,默认为 <prefix>/logs/nginx.pid。 
–lock-path=<path> – nginx.lock文件的路径。 
–error-log-path=<path> – 在nginx.conf中没有指定error_log指令的情况下,默认的错误日志的路径。如果没有指定,默认为 <prefix>/logs/error.log。 
–http-log-path=<path> – 在nginx.conf中没有指定access_log指令的情况下,默认的访问日志的路径。如果没有指定,默认为 <prefix>/logs/access.log。 
–user=<user> – 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的用户。如果没有指定,默认为 nobody。 
–group=<group> – 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的组。如果没有指定,默认为 nobody。 
–with-perl_modules_path=PATH – 指定 perl 模块的路径 
–with-perl=PATH – 指定 perl 执行文件的路径 
–with-pcre=DIR – 指定 PCRE 库的源代码的路径。 
–with-cc=PATH – 指定 C 编译器的路径 
–with-http_ssl_module – 开启HTTP SSL模块,使NGINX可以支持HTTPS请求。这个模块需要已经安装了OPENSSL,在DEBIAN上是libssl 
–with-http_realip_module – 启用 ngx_http_realip_module 

 

 php中configure参数具体含义

./configure
–prefix=/usr/local/php                      php 安装目录
–with-config-file-path=/usr/local/php/etc      指定php.ini位置
–enable-safe-mode                              打开安全模式
–enable-ftp                                 打开ftp的支持
–enable-zip                                 打开对zip的支持
–with-bz2                    打开对bz2文件的支持                        
–with-jpeg-dir                                 打开对jpeg图片的支持
–with-png-dir                                 打开对png图片的支持
–with-freetype-dir              打开对freetype字体库的支持
–without-iconv                关闭iconv函数,种字符集间的转换
–with-libxml-dir                 打开libxml2库的支持
–with-xmlrpc              打开xml-rpc的c语言
–with-zlib-dir                                 打开zlib库的支持
–with-gd                                    打开gd库的支持
–enable-gd-native-ttf               支持TrueType字符串函数库
–with-curl                      打开curl浏览工具的支持
–with-curlwrappers                 运用curl工具打开url流
–enable-mbstring                  多字节,字符串的支持
–enable-sockets                  打开 sockets 支持
–disable-debug                  关闭调试模式
–enable-fpm                     打上php-fpm 补丁后才有这个参数,cgi方式安装的启动程序
–enable-fastcgi                  支持fastcgi方式启动php
–enable-pcntl           mhash和mcrypt算法的扩展
–with-mcrypt                     算法
–with-mhash                     算法
–with-openssl           openssl的支持,加密传输时用到的

 

© 著作权归作者所有

共有 人打赏支持
d
粉丝 0
博文 6
码字总数 7811
作品 0
东莞
无显示器无路由器无键盘无鼠标,仅靠网线直连笔记本用最简单配置玩转树莓派

出差在外,想折腾树莓派耍下,但是不记得树莓派的ip地址,当然可以用扫描工具扫下,比如advanced ip scanner。但是嫌麻烦还是想折腾下仅靠网线直连笔记本用最简单配置玩转树莓派。 用网线直连...

quanpower
2014/04/14
0
0
树莓派+一根网线直连笔记本电脑

用网线直连电脑,不经过路由器。这个方法最大的特点用最少的工具玩树莓派。 一、材料:树莓派一部、网线一根,笔记本电脑一台。 1、树莓派:带供电系统和烧好Raspbian系统的SD卡; 2、网线:...

maweitao
2014/07/31
0
1
远距离赏秋香,DIY树莓派望远镜

编者注:本项目来自Instructables,原作者为joshdont,转载请注明。 就像很多人说的,创客做的东西很多时候并没有什么用处,你甚至已经可以在市面上买到更便宜、更轻巧、功能更强大的成品,还...

吴攀
2015/12/07
0
0
让Mono 4在Raspberry Pi上飞

最近公司有项目想要在树莓派上做,代替原来的工控机(我们是把工控主机当作小的主机用,一台小的工控主机最少也要600左右,而树莓派只要200多)。于是,公司买了一个Raspberry Pi B+和一个R...

独行族妖侠
2015/06/02
0
1
将你的树莓派打造成一个 Tor 中继节点

在此教程中学习如何将你的旧树莓派打造成一个完美的 Tor 中继节点。 你是否和我一样,在第一代或者第二代树莓派发布时买了一个,玩了一段时间就把它搁置“吃灰”了。毕竟,除非你是机器人爱好...

08%
07/08
0
0
DIY一个带WIFI的树莓派照相机

本文由 极客范 - Boyd Wang 翻译自 Phillip Burgess。欢迎加入极客翻译小组,同我们一道翻译与分享。转载请参见文章末尾处的要求。 概览 这个项目使用了Adafruit PiTFT触摸屏和树莓派摄像头模...

RagingTyphoon
2015/08/16
0
0
Cubieboard:追赶树莓派

微机真的可以很“微”了。来自珠海的方糖科技(CubieTech)在2012年“树莓派”(Raspberry Pi)发布之后,相信这种只有信用卡大小但几乎有全部PC功能的计算机有可能创造一个新的市场,如果它的价...

人生能绕几个圈
2013/07/30
0
1
PHP再学习5——RESTFul框架 远程控制LED

0.前言 去年(2013年)2月第一次接触yeelink平台,当时该平台已经运行了一些时间也吸引了不少极客。试想自己也将投身IoT(物联网)行业,就花了些时间研究了它。陆陆续续使用和研究了一年,大...

thinkyoung
2014/12/02
0
0
树莓派配置无线网卡连接WIFI

在前面的文章中介绍了使用串口与树莓派连接的方法,但是串口连接不太便捷,因此本篇文章介绍wifi连接树莓派的方法。 无线网卡 树莓派2没有自带wifi模块,需要另外购买一个usb wifi模块。我使...

刘语彤
2015/08/04
0
0
Banana Pi VS Raspberrry Pi,是敌是友?

现在开源硬件,已经成为了一种潮流,很多开源硬件项目不断推出各自的开源硬件产品. 市场上主流的有: raspberrry Pi, arDuino,Pcduino, CubieBoard, 在各自的发展过程中,大家都在维护各自的社区...

sinovoip
2014/07/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

崛起于Springboot2.X之前端模版freemaker(23)

1、配置文件 spring: freemarker: allow-request-override: false cache: true check-template-location: true charset: UTF-8 content-type: text/html ......

木九天
12分钟前
1
0
spring-boot:run启动时,指定spring.profiles.active

Maven启动指定Profile通过-P,如mvn spring-boot:run -Ptest,但这是Maven的Profile。 如果要指定spring-boot的spring.profiles.active,则必须使用mvn spring-boot:run -Drun.profiles=test......

夜黑人模糊灬
14分钟前
0
0
大数据分析挖掘技术学习:Python文本分类

引言 文本分类作为自然语言处理任务之一,被广泛应用于解决各种商业领域的问题。文本分类的目的是将 文本/文档 自动地归类为一种或多种预定义的类别。常见的文本分类应用如下: • 理解社交媒...

加米谷大数据
19分钟前
0
0
istio-0.8 指标监控,prometheus,grafana

配置: https://istio.io/docs/tasks/telemetry/metrics-logs/ https://istio.io/docs/tasks/telemetry/tcp-metrics/ envoy拦截请求>上报mixer>对接prometheus>grafana 效果截图: promethe......

xiaomin0322
21分钟前
0
0
公众号推荐

阿里技术 书籍:《不止代码》

courtzjl
24分钟前
0
0
关于改进工作效率

1.给不同的业务线建立需求群,所有的数据需求都在群里面提。 2.对于特别难搞定的事情,到对应的技术哪去做,有问题随时沟通。 3.定期给工作总结形成方法论。 4.学习新的技术,尝试用新的方法...

Avner
30分钟前
0
0
关于thinkphp 框架开启路径重写,无法获取Authorization Header

今天遇到在thinkphp框架中获取不到header头里边的 Authorization ,后来在.htaccess里面加多一项解决,记录下: <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews Rewrite......

殘留回憶
34分钟前
0
0
centos 使用yum安装nginx后如何添加模块 10

centos 使用yum安装nginx后如何添加模块 10 centos6.2版本,使用yum来安装了nginx,但是最近需要重新添加模块,所以就傻了,询问下有人知道怎么重新添加模块吗? PS:俺是新手,需要高手救助...

linjin200
37分钟前
1
0
dubbo 资料

dubbo资料网站: https://www.cnblogs.com/a8457013/p/7818925.html

zaolonglei
38分钟前
0
0
大型网站,你是如何架构的?

大型网站,你是如何架构的?

微小宝
40分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部