为了能让实验室的路由器一直保持登陆状态,但又不想使用非官方固件,因为非官方固件都不够稳定,所以买了一个树莓派 zero-w。
本着新硬件就要用新系统的想法,刷了官方才出了不到一个月的系统:2017-09-07-raspbian-stretch,然后在安装LNMP环境的过程中遇到很多奇怪的问题,在这里记录一下。
先插一个zero-w的网络配置过程,虽然不是什么大问题,但是着实坑了我很久。
正常刷好系统后,用电脑在/boot分区的根目录创建名为“wpa_supplicant.conf”的文本文件,内容为:
1 2 3 4 5 6 7 8 |
country=CN ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="Port-2.4G" psk="port65536" } |
注意:WiFi名称不能包含“_”,就是下划线,因为有些情况下下划线和空格会混淆。WiFi加密模式只能为“WPA-PSK [TKIP]”,因为wpa不支持AES加密。
然后在/boot分区的根目录创建名为“ssh”的空目录,这样就会自动打开ssh服务。
配置好网络后,开始换源。
阿里云
Raspbian http://mirrors.aliyun.com/raspbian/raspbian/清华大学
Raspbian http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/
1 2 |
sudo mv /etc/apt/sources.list /etc/apt/sources.list.buckup sudo nano /etc/apt/sources.list |
文件内容如下:
1 2 |
deb http://mirrors.aliyun.com/raspbian/raspbian/ stretch main contrib non-free deb-src http://mirrors.aliyun.com/raspbian/raspbian/ stretch main contrib non-free |
保存
1 |
sudo apt-get update |
配置LNMP环境
先上干货:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 建议分条执行,避免一次安装太多出错了都不知道是哪里的原因 sudo apt-get install nginx sudo apt-get install curl libcurl3 libcurl3-dev sudo apt-get install php5-cli php5-cgi php5-fpm sudo apt-get install php5-curl php5-mcrypt php5-gd # 务必使用archive.raspbian.org官方的安装包,我多次尝试使用packages.debian.org的包,每次都会出现安装完php5-mysql后php5-fpm无法启动的错误,原因未知 cd ~/Downloads/ wget http://archive.raspbian.org/raspbian/pool/main/m/mysql-5.5/libmysqlclient18_5.5.57-0%2bdeb8u1_armhf.deb # 要先安装libmysqlclient18的依赖包mysql-common,或者直接先安装mysql-server sudo apt-get install mysql-server sudo apt-get install mysql-common sudo dpkg --install ./libmysqlclient18_5.5.57-0+deb8u1_armhf.deb sudo apt-get install php5-mysql # 正常配置nginx和其它环境,bala~bala~ |
如果直接按照通常步骤直接安装php5-mysql,会提示如下错误:
1 2 3 4 5 6 7 8 9 10 11 12 |
pi@pi-zero-w:~ $ sudo apt-get install php5-mysql 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 包尚未被创建或是它们已被从新到(Incoming)目录移出。 下列信息可能会对解决问题有所帮助: 下列软件包有未满足的依赖关系: php5-mysql : 依赖: libmysqlclient18 但无法安装它 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。 |
为了解决这个问题,我参考了「libmysqlclient18 has no installation candidate」。
尝试手动下载并安装packages.debian.org提供的libmysqlclient18包,libmysqlclient18_5.5.57-0+deb8u1_armhf.deb,文件sha1:16237a52a6c3b945c30a8fdf401816277d7f2436。
手动安装libmysqlclient18后,可以成功安装php5-mysql。但是apt-get在安装完,重启php5-fpm的时候会出现以下错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
pi@pi-zero-w:~ $ sudo apt-get install php5-mysql 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 下列【新】软件包将被安装: php5-mysql 升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 1 个软件包未被升级。 需要下载 0 B/51.6 kB 的归档。 解压缩后会消耗 212 kB 的额外空间。 正在选中未选择的软件包 php5-mysql。 (正在读取数据库 ... 系统当前共安装有 124140 个文件和目录。) 正准备解包 .../php5-mysql_5.6.22+dfsg-2+b3_armhf.deb ... 正在解包 php5-mysql (5.6.22+dfsg-2+b3) ... 正在处理用于 php5-fpm (5.6.22+dfsg-2+b3) 的触发器 ... 正在设置 php5-mysql (5.6.22+dfsg-2+b3) ... Creating config file /etc/php5/mods-available/mysql.ini with new version php5_invoke: Enable module mysql for fpm SAPI php5_invoke: Enable module mysql for cli SAPI php5_invoke: Enable module mysql for cgi SAPI Creating config file /etc/php5/mods-available/mysqli.ini with new version php5_invoke: Enable module mysqli for fpm SAPI php5_invoke: Enable module mysqli for cli SAPI php5_invoke: Enable module mysqli for cgi SAPI Creating config file /etc/php5/mods-available/pdo_mysql.ini with new version php5_invoke: Enable module pdo_mysql for fpm SAPI php5_invoke: Enable module pdo_mysql for cli SAPI php5_invoke: Enable module pdo_mysql for cgi SAPI 正在处理用于 php5-fpm (5.6.22+dfsg-2+b3) 的触发器 ... Job for php5-fpm.service failed because a fatal signal was delivered to the control process. See "systemctl status php5-fpm.service" and "journalctl -xe" for details. invoke-rc.d: initscript php5-fpm, action "restart" failed. ● php5-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php5-fpm.service; enabled; vendor preset: enabled) Active: failed (Result: signal) since Thu 2017-09-28 16:08:51 CST; 140ms ago Process: 8289 ExecStart=/usr/sbin/php5-fpm --nodaemonize --fpm-config /etc/php5/fpm/php-fpm.conf (code=killed, signal=ILL) Process: 8283 ExecStartPre=/usr/lib/php5/php5-fpm-checkconf (code=exited, status=0/SUCCESS) Main PID: 8289 (code=killed, signal=ILL) 9月 28 16:08:50 pi-zero-w systemd[1]: Starting The PHP FastCGI Process Manager... 9月 28 16:08:50 pi-zero-w php5-fpm-checkconf[8283]: Illegal instruction 9月 28 16:08:51 pi-zero-w systemd[1]: php5-fpm.service: Main process exited, code=…/ILL 9月 28 16:08:51 pi-zero-w systemd[1]: Failed to start The PHP FastCGI Process Manager. 9月 28 16:08:51 pi-zero-w systemd[1]: php5-fpm.service: Unit entered failed state. 9月 28 16:08:51 pi-zero-w systemd[1]: php5-fpm.service: Failed with result 'signal'. Hint: Some lines were ellipsized, use -l to show in full. dpkg: 处理软件包 php5-fpm (--configure)时出错: 子进程 已安装 post-installation 脚本 返回错误状态 1 在处理时有错误发生: php5-fpm E: Sub-process /usr/bin/dpkg returned an error code (1) |
尝试多次后,我发现之前参考的讨论里有人说使用archive.raspbian.org官方的libmysqlclient18包,于是进行尝试,并获得成功。
包下载地址:libmysqlclient18,sha1:a5f6877e856a58efbf9046f8db752646895b137b。