在树莓派2上安装Ubuntu mate系统并成功部署基于.net core的CMS系统Zkeacms

ztf 2019-06-28

亲戚送了一个树莓派2(以下内容也适用树莓派3),决定拿来学习折腾一下,由于想学Ubuntu,决定首先安装Ubuntu mate系统。

  1. 准备一张16G以上的高速TF卡(C10的内存卡),用读卡器接入PC电脑,备份内存卡内数据,网上下载两个小工具SD Card Formatter和Win32DiskImager,使用SD Card Formatter格式化内存卡。
  2. 下载 Ubuntu mate镜像,点击右下角Raspberry Pi; 再点版本16.04.2 (Xenial)进入最终下载页面;这里遇到的第一个坑:不要直接从这个服务器上下载镜像,我联通50兆的光纤下载这个1.2g的镜像提示我剩余时间2天2夜!后来在这个下载页面下载bt链接(估计磁力链接也可以)后用迅雷几十分钟就下载好了ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xz。
  3. 使用7zip解压出镜像,然后是用Win32DiskImager将镜像写入内存卡;拔下读卡器内存卡插入树莓派中,接上网线和鼠标,用HDMI线接上平板电视;上电,树莓派开始安装Ubuntu mate,鼠标一路选择一路点下一步,有usb键盘的同学可直接跳到第6步。
  4. 到了设置姓名、计算机名称、用户名、密码的时候我傻眼了,因为我没有USB键盘!第二个大坑来了,系统都没有装完,ssh服务没开启(远程测试确实连不上);网上查的无键盘无显示器的方法都是基于树莓派官方raspbian系统的,官方系统安装是全自动的,会自动创建默认用户名和默认密码;我发现可以用鼠标复制粘贴,从哪复制呢,找了半天,向上一步在选择时区界面的Shanghai这几个字母可以复制,就复制它来做用户名密码吧,Ubuntu mate系统安装完成。
  5. 开启ssh服务(无键盘),只有开启ssh服务才能在pc上远程控制树莓派,发现Ubuntu mate默认是没有开启ssh服务的,没有usb键盘如何开启ssh服务呢?查了网上很多文章的方法都是基于树莓派官方系统的,我都测试了,对Ubuntu mate无效!没有键盘就无法输入命令,我脑洞大开想到一个笨办法:树莓派关机,拔下内存卡,装入读卡器连上电脑,新建一个文本文件,里面保存开启ssh的一些命令,还有26个字母的大小写,保存到boot目录(此时windows资源管理器只能访问这个区),再插入树莓派,上电启动,没有键盘打开终端都困难,试试图形界面下修改配置文件让系统启动时自动开启ssh服务吧,按网上方法,我用鼠标以管理员身份打开配置文件,此时要求输入用户密码,我打开用电脑保存到boot文件夹下的文本文件中的内容,复制密码粘贴,始终提示我密码错误,到这里我投降了,京东下单迷你无线键鼠,第二天上午就到了,后来证明是密码大小写错误!
  6. 开启ssh服务(有键盘):

-1. 按下ctrl+alt+T打开终端
-2. sudo raspi-config
-3. 进入第三项
-4. 选择p2回车
-5. 选择yes回车
-6. 等待完成回车确认
-7. 退出配置,ps -e | grep ssh 看到sshd即开启
接着开启root用户登录
-8. 更改root用户密码,命令:sudo passwd root
-9. sudo vi /etc/ssh/sshd_config
-10. 找到 “PermitRootLogin without-password” 或者 “PermitRootLogin prohibit-password”
-11. 修改成 “PermitRootLogin yes”
-12. 重启SSH服务 sudo service ssh restart

  1. 通过ifconfig查看本地ip得到树莓派ip,pc电脑上安装并运行putty,输入树莓派ip,点打开,输入用户名密码就可以通过终端命令行方式远程控制树莓派了;到此刚刚买的键鼠套装就可以放起来落灰了。无需远程桌面的同学可以直接跳到第11步。
  2. Ubuntu mate的图形界面不错,还是装个远程桌面吧,安装x11VNC远程桌面:

-1. 安装x11vnc sudo apt-get install x11vnc
-2. 设置密码 x11vnc -storepasswd
-3. 修改配置文件 sudu vim /lib/systemd/system/x11vnc.service

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/<USERNAME>/.vnc/passwd -rfbport 5900 -shared

[Install]
WantedBy=multi-user.target

4.启动服务

sudo systemctl daemon-reload 
sudo systemctl enable x11vnc.service 
sudo systemctl start x11vnc.service

如果要想使用windows远程桌面连接还可以安装xrdp sudo apt-get install xrdp
9.推荐使用 vncviewer 来连接,pc电脑上下载安装vncviewer,运行后新建连接,输入树莓派ip,然后输入用户名密码即可远程连接树莓派桌面,首次连接默认分辨率很低,下面是修改分辨率的方法:
-1.sudo raspi-config
-2.选择第5项 Advanced Options 回车
-3.选择 A5 Resolution 回车
-4.选择合适的分辨率回车,重启树莓派生效;我的笔记本屏幕分辨率是1600900,选择1280720的树莓派分辨率最合适。
10.Windows和树莓派之间复制粘贴剪切板,试了很多网上的方法不管用(可能适用于树莓派原生系统),用下面的方法亲测有效:输入命令autocutsel 若没安装输入命令 sudo apt install autocutsel 安装,注意在树莓派里使用Ctrl+v的方式粘贴,而不是使用右键-粘贴!
11.树莓派安装.net core 2.1
-1.更新源 sudo apt-get update
-2.安装依赖 sudo apt-get install curl libunwind8 gettext
-3.下载运行时

curl -sSL -o dotnet.tar.gz https://download.microsoft.com/download/1/f/7/1f7755c5-934d-4638-b89f-1f4ffa5afe89/dotnet-runtime-2.1.2-linux-arm.tar.gz

-4.提取内容 sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet
-5.设置可以执行dotnet sudo ln -s /opt/dotnet/dotnet /usr/local/bin
-6.测试安装 dotnet --help
12.在pc端使用publish -r linux-arm发布Zkeacms,把binDebugnetcoreapp2.0linux-arm下的程序或者在Zkeacms qq群下载带运行时的ZKEACMS.3.0.1-linux-arm.zip,解压上传到树莓派上;上传工具推荐使用filezilla,中文无乱码;终端进入上传到树莓派的目录,输入命令 ./ZKEACMS.WebHost 看是否能运行起来。

13.安装nginx

sudo apt-get update 
sudo apt-get install nginx

安装完成以后,用服务器IP访问一下,如果可以正常访问,说明nginx已经正常运行了。配置nginx vi /etc/nginx/sites-available/default
使用以下内容替换原有内容:

server { 
listen 80; 
location / { 
proxy_pass http://localhost:5000; 
proxy_http_version 1.1; 
proxy_set_header Upgrade $http_upgrade; 
proxy_set_header Connection keep-alive; 
proxy_set_header Host $host; 
proxy_cache_bypass $http_upgrade; 
} 
}

重启nginx systemctl restart nginx

14.添加服务运行ZKEACMS:在安装服务之前,可以先手动运行一下CMS看是否可正常访问,定位到CMS目录,然后运行dotnet ZKEACMS.WebHost.dll ;然后使用服务器(树莓派)IP访问。如果可以正常访问的话,就可以添加服务,并设置开机运行;添加一个zkeacms服务:vi /etc/systemd/system/zkeacms.service
输入以下内容保存

[Unit]
Description=ZKEACMS

[Service]
WorkingDirectory=/root/cms
ExecStart=/usr/share/dotnet/dotnet /root/cms/ZKEACMS.WebHost.dll
Restart=always
RestartSec=10
SyslogIdentifier=zkeacms
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

运行服务: systemctl start zkeacms
服务开机启动: systemctl enable zkeacms

相关推荐