标签 linux 下的文章

文章更新

20170223 初次成文

问题提出

在上一篇文章中:
树莓派折腾记:打造HiFi解码转盘(基于Volumio和Dac扩展板)

小苏记录了在Volumio系统下,让树莓派变身成HiFi解码转盘的折腾经历。但是由于在烧写Volumio系统时,小苏手头没有多余的SD卡,所以小苏使用的是我在七彩虹C3(ColorFly C3)中用来存放音乐的SD卡来烧写Volumio系统。这么一来问题产生了:因为C3比较小巧便携,所以有些时候我还是要用到C3听歌的,经过测试,C3只能识别烧写有Volumio系统的第一个分区(也就是Fat32格式的/boot分区),而其他被格式化为ext4格式的分区C3无法识别。所以这张烧写有Volumio系统的SD卡是无法在树莓派和C3上共用了。但是小苏又不想为此再买一张SD卡,于是就琢磨着把C3的4G内置存储空间利用起来~

于是,新的问题又产生了,小苏手头没有电脑,只有一块树莓派,所以没有条件用电脑把音乐文件拷贝到C3的内置存储。所以小苏琢磨着将C3用数据线与树莓派连接,试试看在Linux环境下,能否正确识别并挂载七彩虹C3的内置存储。

结果可想而知,失败了~

解决方案

这么高深的问题度娘肯定是解决不了的,于是成败就在谷歌身上了。幸运的是,在搜索关键词"ColorFly C3 Linux"后,小苏找到了解决方法,更幸运的是,这篇文章还是中文的:

让七彩虹(ColorFly)C3可以正常工作在Linux下

这篇文章中详细介绍了七彩虹C3不能被Linux识别的原因,并且给出了解决方法(这里小苏就不再赘述了),小苏照做之后,可能是因为树莓派的Volumio系统(基于Rasbain)兼容性的原因,最后还是没成功。

既然没成功,只好继续谷歌啦,但由于Linux用户本来就不多,再在Linux上碰到这么一个奇葩的问题,所以小苏在搜索的时候是没抱多大希望的。然而没想到"柳暗花明杏花村",小苏在搜索结果中看到了一篇发表在俄文HiFi论坛下的提问帖,里面介绍的问题和我的完全一致:

Проблемы с плеером и их решения

在31楼中,小苏似乎找到了解决方法(其实小苏也不懂俄文,Chrome的谷歌翻译也乱得一塌糊涂,只是看到熟悉的Linux命令小苏才发现这可能是解决方法的~):

Screenshot_20170223-212948.png

31楼中的解决方法如下:

su
echo 0755:2205:bmw>>/sys/module/usb_storage/parameters/quirks

之所以没有按帖子中直接使用sudo:

sudo echo 0755:2205:bmw>>/sys/module/usb_storage/parameters/quirks

是因为在Volumio中,这样执行命令的话会出现"Permission denied"的提示,但是切换到Root用户后再执行命令就没问题:

之后我们检验一下内容是否成功写入文件:

cat /sys/module/usb_storage/parameters/quirks

终端传回如下内容代表操作成功:

0755:2205:bmw

Screenshot_20170223-210114.png

接着在关机状态将七彩虹C3和Linux设备连接,不出意外的话C3的内置存储设备会被Linux系统正确识别和挂载,我们可以用df命令查看C3内置存储设备在文件系统中的挂载点:

df -l

接着cd到挂载目录并ls:

cd /media/04F1-2319
ls -l

如果终端输出正确结果,那么代表这次折腾又完美成功了(笑哭脸)~

Screenshot_20170223-211057.png

有必要说明一下,这里的方法和刚刚发过的第一种方法起到的作用是一样的,同样都是让系统跳过一些对存储设备的检查过程(大概是这样,雾),只不过我们这次是直接将改动写入内存(RAM),这样的好处是即时修改即时生效,但是坏处是每次启动后我们做出的修改都会丢失,需要重新配置。如果想免去重启后要重新配置的麻烦,可以将此命令写入开机启动脚本(如/etc/rc.local)中~

参考资料

(就是上面说过的两篇文章):

  1. 让七彩虹(ColorFly)C3可以正常工作在Linux下
  2. Проблемы с плеером и их решения

文章更新

20161019 初次成文

问题提出

在写这篇文章之前,小苏本身有一台腾讯云的学生主机,但是因为域名没有备案的原因,小苏一直没有把网站部署在腾讯云上。最近小苏比较有时间,于是就在腾讯云申请了域名备案。在写这篇文章的时候,小苏已经通过了域名备案初审在等待幕布到货了。

根据管局要求,域名备案期间要求网站不能正常访问才可以通过备案,所以这篇文章可能是mlapp.cn这个域名在备案之前的最后一篇文章了。

于是写篇文章来纪念一下(这个理由也太牵强了吧)。

解决方案

在这篇文章中,我们将从重装系统开始,在Centos上部署LNMP环境并安装amh控制面板。

不知道amh为何物?请点击这里

登陆腾讯云的云主机控制台,选中你想要配置的腾讯云主机,选择"重装系统" - "公共镜像" - "Centos6.5 64位",耐心等待系统重装完成后,使用ssh方式登录进服务器执行以下操作:

yum install -y wget #安装wget
yum install -y screen #安装screen

这里不得不吐槽,腾讯云的yum源有问题。所以我们需要手动更换可以使用yum源:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak #备份默认的yum源(默认源本来就就有问题,所以在腾讯云上这一步几乎没有什么卵用)
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo #更换默认的yum源为阿里云镜像源

同时,腾讯云的EPEL源也有问题,所以我们还需要修改EPEL源:

cp /etc/yum.repos.d/CentOS-Epel.repo /etc/yum.repos.d/CentOS-Epel.repo.bak #备份默认EPEL源(虽然在腾讯云上这一步也没有什么卵用)
vim /etc/yum.repos.d/CentOS-Epel.repo #编辑EPEL源文件

执行以上命令之后,我们将使用vim编辑器编辑EPEL源配置文件,键入按键i后可以进入编辑模式,使用退格键清除文件全部内容之后,我们在vim编辑器中粘贴以下内容:

[epel]
name=epel
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-$releasever&arch=$basearch
enabled=1
gpgcheck=0

粘贴完成之后,键盘键入:wq!强制保存文件并退出vim编辑器。

这里不得不再次吐槽,在腾讯云上,我在ssh界面使用编辑器是有问题的,不论是vi还是vim,都不能正常编辑文件(但是装其他系统就没有这个问题)。所以小苏推荐大家使用sftp登陆云主机,找到并编辑/etc/yum.repos.d/CentOS-Epel.repo这个文件,清除文件所有内容并粘贴以上内容,保存并上传文件,和先前我们用vim编辑这个文件的操作实质上是一样的。

做完以上操作之后,我们需要执行makecache生成缓存:

yum clean all
yum makecache

至此,腾讯云换源操作完成。接下来我们进行amh控制面板的安装:

screen -S amh #新建一个名为amh的screen,当ssh意外断开时可以恢复原来的会话
cd ~
rm -rf amh* #清除可能残留的amh文件

做完以上准备工作我们就可以安装amh4.2了。amh4.2是一款免费的主机控制面板(amh从5.0版本开始收费,4.2是amh的最后一个免费版本),管理员可以在web端对主机进行操作,无需在终端敲代码进行繁复的命令行操作。

此次安装中,小苏使用的是amh4.2彩虹修改版。详情请看:http://blog.cccyun.cc/?post=233

同时,小苏也推荐大家使用amh4.2麦葱修改版:https://maicong.me/t/145

当然,你也可以使用amh4.2官方的一键安装脚本,详情请看:https://amh.sh/install.htm

彩虹修改版提供了两个版本,小苏推荐大家使用支持php7.0的版本。我们继续在ssh中执行:

wget http://api.cccyun.cc/amh.sh && chmod 775 amh.sh && ./amh.sh 2>&1 | tee amh.log #获取并执行amh4.2一键安装脚本(php7.0)

执行脚本后,终端将返回:


[Notice] Confirm Install/Uninstall AMH? please select: (1~3)
1) Install AMH 4.2
2) Uninstall AMH 4.2
3) Exit

这个提示为询问用户是要安装amh还是卸载amh,由于我们是要安装amh,所以我们键入1并回车:


[OK] You Selected: Install AMH 4.2
[Error] empty server ip.
[Notice] Please input server ip:

这个提示为询问此云主机的公网IP,我们将云主机控制台的云主机公网IP键入,并回车(这里以公网IP为123.123.123.123做示例):


[OK] Your server ip is:
123.123.123.123
[Notice] Please input MySQL password:

此提示为要求用户设置一个MySQL数据库密码,建议设置得复杂一些(这里以MySQL密码设置为mysqlpassword做示例):


[OK] Your MySQL password is:
mysqlpassword
[Notice] Please input AMH password:

此提示为要求用户设置amh控制面板的登陆密码,同样不要设置得太简单(这里以amhpassword做示例):


[OK] Your AMH password is:
amhpassword

回车之后amh就开始安装了。由于各模块为编译安装,所以安装时间较长(大约20~40分钟)。当你看到终端返回以下结果时代表amh安装成功:


[AMH] Congratulations, AMH 4.2 install completed.
AMH Management: http://123.123.123.123:8888
User:admin
Password:amhpassword
MySQL Password:mysqlpassword

安装完成后你可以通过访问http://公网IP:8888进入amh控制面板,默认的用户名为admin,密码为安装最开始时你输入的控制面板密码。

虽然在之前我们已经做了大量的准备工作,但是在安装过程中,还是不可避免地出现一些问题,当安装过程中出现以下问题时,你可以采取以下解决方法:

1.安装过程中,在Nginx部分可能会出现错误(在安装成功尝试启动nginx时可能也会报错):


Nginx [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)

这个错误代表80端口被其他程序占用,此错误出现时,nginx不会正常启动,所以也无法通过访问http://ip:8888进入控制面板。

为了解决这个问题,我们需要进入amh的nginx命令行控制选项,在终端中执行:

amh nginx

终端返回:


[AMH] Nginx Management please select: (1~4)
1) start
2) stop
3) restart
4) reload
5) exit

我们先键入2来停止nginx(停止前nginx应该为未启动状态),然后执行:

fuser -k 80/tcp

停止占用80端口的程序,执行成功之后,再次执行amh nginx,键入1启动nginx,当终端提示:[OK] Nginx start 时表示nginx已成功启动,但是小苏还是建议重启云主机然后访问amh控制面板来测试一下是否能够成功打开页面(不出意外的话应该是没问题的)。

2.安装过程中,ssh连接意外中断:
由于amh4.2为编译安装,且只有编译安装这一种方式(在amh5.x版本上,是可以免编译安装amh的,安装速度很快,奈何收费),所以安装时间比较长(20~40分钟)。在等待安装的过程中,ssh必须一直处于连接状态,如果ssh连接意外中断,安装过程也会随之中止。但如果你是按照小苏的流程走下来的,由于我们在安装amh之前已经安装了screen程序,并且我们的整个安装过程都在screen中进行,所以即使ssh连接断开,会话还是会在screen中继续进行的,那么如何恢复断开的会话呢?很简单,只需要在终端中执行:

screen -r

即可恢复原来的会话。

参考资料

将Centos的yum源更换为国内的阿里云源
CentOS使用EPEL源
自用的amh4.2优化版,已升级到php7 - 彩虹博客
AMH 4.2 – 麦葱修改版 [20150526更新] - 麦田一根葱
screen命令 - Linux命令大全
fuser命令 - Linux命令大全