文档章节

树莓派折腾手记02——LNSP

d
 defined01
发布于 2017/04/30 22:30
字数 2159
阅读 18
收藏 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
基于树莓派如何开发机器人(附PPT+视频) | 硬创公开课

导语:树莓派是为学习计算机编程教育而设计的一种微型电脑,其系统是基于Linux的, 虽然只有信用卡大小,但视频、音频等功能通通皆有,可谓是“麻雀虽小,五脏俱全”。因此自问世以来,受到了...

金红
2017/03/09
0
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 双击解压,或通过 命令解压。 检查下载的文件 检查SD卡 将内存卡通过读卡器插入电脑。 未完待续 ...

dingdayu
07/19
0
0
远距离赏秋香,DIY树莓派望远镜

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

吴攀
2015/12/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux运维人员必会运维工具

linux运维人员必会开源运维工具体系 说明:不同的技术人员,不同的阶段确定知识边界非常重要,否则,就像马拉车,不知道终点在哪,累死也达不到目标。例如拿8K要学多少,拿15K要学多少。一个...

寰宇01
7分钟前
1
0
10大PHP比特币开源项目

如果你是一个Phper,如果你希望学习区块链,那么本文列出的 10个开源的Php比特币项目,将有助于你了解在自己的应用中 如何加入对比特币的支持。 如果你希望快速掌握使用Php对接比特币钱包的方...

汇智网教程
28分钟前
0
0
springclould feign客户端添加全局参数

用springclould feign作为调用服务的客户端,一般来说参数可以写在feignclient的方法参数里 有时需要所有feign请求都统一添加一些参数,例如token用于鉴权等,可以这样做: 添加一个配置类,...

canneljls
29分钟前
0
0
win32截屏并rgb24转yuv420

//最终f的内存布局为BGRA格式,需要保证buf长度足够(>w*h*4)void ScreenCap(void* buf, int w, int h){ HWND hDesk = GetDesktopWindow(); HDC hScreen = GetDC(hDesk); ......

styleman
今天
1
0
php输出mysql取出的中文为??的问题

解决方法: @ $db=new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_DB); $db->query("set names utf8");//添加此语句,可以解决问题...

Aomo
今天
1
2

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部