搭建Ubuntu Server 18.04 本地文件服务器记录

这台J800工控主板本来想装Centos 7的,但安装总有问题,作罢转而安装Ubuntu server 18.04,没用最新的版本,主要还是考虑着板子的性能一般,低版本对系统硬件要求没那么高。

开启Root登陆

记得安装的时候,勾选OpenSSH,方便之后通过ssh连接。默认是不能通过root登陆的,所以需要开启root登陆。

如果不带ssh,需要安装一下ssh:

sudo apt install openssh-server

设置root密码:

sudo passwd root

允许root用户登录,编辑sshd_config

sudo nano /etc/ssh/sshd_config
找到# Authentication项下的
PermitRootLogin prohibit-password改成PermitRootLogin yes

最后重启ssh服务就可以root登陆了:

sudo systemctl restart sshd

改源

最好还是改一下源,不然更新和新装软件的时候会很慢,中科大或者阿里云的Ubuntu的源都可以。

首先备份源文件:

sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup

编辑源文件:

sudo nano /etc/apt/sources.list

删除文件所有内容,更换为以下内容:

deb https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

## Not recommended
# deb https://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

最后更新下软件源:

sudo apt-get update
sudo apt-get upgrade

扩容(LVM)磁盘

一开始LVM磁盘只有几G,很容易就满了,个人还是喜欢把磁盘扩容到最大,一劳永逸。

首先查看磁盘情况:

df -h

通过上面命令,查看需要扩容的磁盘名称,一般来说需要扩容的磁盘名称为/dev/mapper/ubuntu–vg-ubuntu–lv

显示存在的卷组:

sudo vgdisplay

主要看Alloc PEFree PE这两项,Free PE就是告诉你可以扩容的大小。

扩容开始:

sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv # 全部空间都给这个盘

重新计算磁盘大小:

sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

重新查看磁盘情况:

df -h
sudo vgdisplay

如果扩容成功,Free PE是为0的。

安装Apache 2

安装Apache 2 Web服务器:

apt install apache2 -y

默认情况下所有Web内容都位于/var/www/html中。

启动、停止、重启Apache服务器:

systemctl start apache2
systemctl restart apache2
systemctl stop apache2

让Apache支持.htaccess文件

sudo a2enmod

程序提示可供激活的模块名称,输入:

rewrite

接着修改Apache配置文件:

sudo nano /etc/apache2/apache2.conf

AllowOverride属性改为All:

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride ALL
    Require all granted
</Directory>

最后记得重启Apache服务。

安装PHP

建议安装php7以上的版本,我一般用php7.2。

apt install php -y

设置Apache优先访问PHP页面:

打开/etc/apache2/mods-enabled/dir.conf文件:

sudo nano /etc/apache2/mods-enabled/dir.conf

并将其更改为首先列出index.php

<IfModule mod_dir.c> 
        DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm 
</IfModule>

最好把一些php的扩展也装上,比如:

sudo apt-get install php-curl
sudo apt-get install php-gd
sudo apt-get install php-zip
sudo apt-get install php-mbstring

设置时区:

sudo nano /etc/php/7.2/apache2/php.ini

大概936行,把date.timezone前面的分号去掉,并设置为东八区:

date.timezone = "Etc/GMT-8"

最后重启下Apache服务器。

安装Samba

安装Samba服务器:

sudo apt-get install samba samba-common

建立一个共享目录,比如:

sudo mkdir /home/nas

给这个目录设置读取写入权限:

sudo chmod -R 777 /home/nas

添加用户名和设置密码:

sudo smbpasswd -a 用户名

编辑Samba的配置文件:

sudo nano /etc/samba/smb.conf

在配置文件smb.conf的最后添加下面的内容:

[share]
comment = share folder
browseable = yes
path = /home/nas
create mask = 0755
directory mask = 0755
valid users = 用户名
force user = 用户名
force group = 用户名
public = yes 
available = yes 
writable = yes

重启Samba服务器:

sudo service smbd restart

挂载与卸载移动硬盘

首先输入fdisk -l命令查看硬盘信息:

输入lsblk列出依赖关系:

新建一个文件夹方便后面挂载和SMB共享:

mkdir /home/usb

挂载移动硬盘:

mount /dev/sdb1 /home/usb/

编辑smb.conf/home/usb/设置成共享文件,重启Samba服务器。

卸载移动硬盘:

umount /home/usb

可能会遇到umount: /home/usb: target is busy.的情况,只需要把占用的进程杀掉后再卸载移动硬盘就行了:

fuser -mv -k /home/usb/

创建SWAP分区及调整Swappiness值的方法

通过以下命令创建一个用于swap的文件:

sudo fallocate -l 1G /swapfile

执行以下命令为swapfile文件设置正确的权限:

sudo chmod 600 /swapfile

使用mkswap实用程序在文件上设置Linux SWAP区域:

sudo mkswap /swapfile

使用以下命令激活 swap 文件:

sudo swapon /swapfile

要让创建好的swap分区永久生效,可以将swapfile路径内容写入到/etc/fstab文件当中:

sudo bash -c 'echo "/swapfile swap swap defaults 0 0" >> /etc/fstab'

使用swaponfree命令验证SWAP 是否处于活动状态,如下所示:

sudo swapon --show
sudo free -h

Ubuntu Server 18.04默认的Swappiness值为60,可以使用如下命令来查看:

cat /proc/sys/vm/swappiness

值为60对于Ubuntu 18.04桌面还算行,但对于Ubuntu Server来说,SWAP的使用频率就比较高了,所以可能需要设置较低的值,例如,要将swappiness值设置为40,请执行以下命令:

sudo sysctl vm.swappiness=40

如果要让设置在系统重启后依然有效,则必要在/etc/sysctl.conf文件中添加vm.swappiness=40:

sudo bash -c 'echo "vm.swappiness=40" >> /etc/sysctl.conf'

参考这篇文章:《Ubuntu 18.04 SWAP 交换分区相关操作

安装docker和Docker Compose、Portainer

安装Docker并启动:

curl -sSL https://get.docker.com/ | sh
service docker start
service docker stop

安装Docker Compose:

curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

创建一个卷,用于Portainer:

docker volume create portainer_data

安装Portainer:

docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

以后通过ip地址加9000端口就可以访问Portainer管理Docker了。

安装frp

下载最新的frp客户端,j1800是64位cpu,所以这里使用amd64的版本。

#下载frp文件
wget https://github.com/fatedier/frp/releases/download/v0.31.0/frp_0.30.0_linux_amd64.tar.gz

#解压缩
tar -zxvf frp_0.31.0_linux_amd64.tar.gz

#进入文件夹
cd frp_0.31.0_linux_amd64

#frpc设置写入权限
chmod 777 frpc

#编辑配置文件,把frps、frps.ini、frps_full.ini删除。
vi frpc.ini

编辑配置文件:

[common]
server_addr = frp服务器域名或ip地址
server_port = 同frp服务器端口
token = 同frp服务器密钥

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 自己设置一个端口即可

[j1800]
type = http
local_ip = 127.0.0.1
local_port = 80
custom_domains = 你要访问的域名

后台运行frpc客户端:

nohup ./frpc -c frpc.ini >/dev/null 2>&1 &

总结

这台本地服务器基本满足我的要求了,既可以实现一些nas的功能,比如共享文件夹等,也是一个本地的Web环境和Docker环境,通过frp内网穿透也可以实现外网的访问,虽然我的frp服务器在国外,访问速度一般,但是比之前我在群晖上使用frp要快,现在访问或者上传下载的速度也就几百k,国外的网络的环境会快很多。

目前在这台本地服务器上有:

  • Apache + PHP7.2
  • Frp作为内网穿透
  • Samba作为本地文件共享
  • H5ai用来做文件索引
  • Yellow作为博客系统
  • KodExplorer作为文件管理器
  • Docker
  • Portainer作为Docker的图形化管理工具
  • Lychee作为相册
  • Jellyfin作为媒体中心
  • Nextcloud作为网盘

除了一些网页是通过Frp内网穿透外,Docker上的容器都通过公网IP端口转发和DDNS实现域名加端口访问,访问速度很快,在外面在线看Jellyfin里的电影真的太爽了。

21 条评论
  1. 清风车影

    网上买VPN速度怎么样?我现在用的免费的1080P都缓冲很慢

    清风车影 2020-02-12 16:06:42   Android 9  WebView 4.0 回复
    1. 山小炮
      @清风车影

      没买过vpn,收费的应该快点吧,也不是很清楚。

      山小炮 2020-02-12 16:52:32   Android 10  Google Chrome 79.0.3945.136 回复
  2. 阳光笔记

    一直想弄个树莓派做服务器

    阳光笔记 2020-02-15 21:32:35   Windows 10 x64 Edition  Firefox 73.0 回复
    1. 山小炮
      @阳光笔记

      完全可以的,小巧不占地方,我的树莓派3B卖了。

      山小炮 2020-02-16 08:32:30   Windows 7 x64 Edition  Google Chrome 59.0.3071.115 回复
  3. 十三姨爱我

    总想等着FriendlyElec出的那个R2S来搞个软路由~

    十三姨爱我 2020-02-20 09:19:41   Windows 10 x64 Edition  Google Chrome 78.0.3904.108 回复
    1. 山小炮
      @十三姨爱我

      NanoPi可以的,很多人玩。

      山小炮 2020-02-20 09:23:08   Windows 10 x64 Edition  Google Chrome 74.0.3729.169 回复
      1. 十三姨爱我
        @山小炮

        刚刚打电话过去给友善电子,说已经在淘宝开卖了!

        十三姨爱我 2020-02-20 09:24:11   Windows 10 x64 Edition  Google Chrome 78.0.3904.108 回复
        1. 山小炮
          @十三姨爱我

          好像是在卖了,我看到已经有人做了评测对比视频了,这次是双网口。

          山小炮 2020-02-20 10:55:04   Windows 10 x64 Edition  Google Chrome 74.0.3729.169 回复
          1. 十三姨爱我
            @山小炮

            软路由openwrt杠杠的~~

            十三姨爱我 2020-02-21 20:41:34   Windows 10 x64 Edition  Google Chrome 78.0.3904.108 回复
* 号为必填项