搭建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. 流金岁月

    为啥不编译安装啊?

    流金岁月 2020-01-30 16:11:42 Windows 10 x64 Edition Google Chrome 79.0.3945.130 回复
    1. 山小炮
      @流金岁月

      源码下载编译那种我没试过,还是习惯这样安装,主要是记录一下,以后再装也方便。

      山小炮 2020-01-30 16:44:57 Windows 7 x64 Edition Google Chrome 69.0.3497.100 回复
  2. Mr.Chou

    把博客放到这机器内如何?靠谱不

    Mr.Chou 2020-01-30 17:06:02 Android 10 Google Chrome 78.0.3904.96 回复
    1. 山小炮
      @Mr.Chou

      完全可以的,速度可能会比vps慢一点。

      山小炮 2020-01-30 17:14:41 Windows 7 x64 Edition Google Chrome 59.0.3071.115 回复
  3. 演员

    好玩!!!

    演员 2020-01-30 20:16:13 Windows 7 x64 Edition Google Chrome 63.0.3239.132 回复
  4. 清风车影

    再请假你一个问题,我装了一个黑群晖,有公网IP,关机教长的时间再开机不能远程访问,在局域网里访问过后切到手机网络里能远程,请问这是什么问题?

    清风车影 2020-02-06 22:00:59 Android 9 Google Chrome 57.0.2987.108 回复
    1. 山小炮
      @清风车影

      公网ip直接路由器里设置端口映射就好了,访问时候域名加个端口就行了,看看路由器设置是不是有问题?我没公网ip,具体也不太清楚。

      山小炮 2020-02-06 22:30:55 Android 10 Google Chrome 79.0.3945.136 回复
  5. 浩源博客

    问一下,你这是自适应后台吗?手机发文自适应?

    浩源博客 2020-02-06 23:07:50 Android 9 Google Chrome 73.0.3683.121 回复
    1. 山小炮
      @浩源博客

      后台是typecho默认的,也是自适应,我一般都是电脑发文的。

      山小炮 2020-02-06 23:19:33 Android 10 Google Chrome 79.0.3945.136 回复
  6. 清风车影

    你给的旁路由链接不适用我

    清风车影 2020-02-08 21:23:52 Windows 10 x64 Edition Google Chrome 80.0.3987.87 回复
  7. n1_test

    你这个博客是什么系统搭的?

    n1_test 2020-02-09 20:40:12 Windows 10 x64 Edition Google Chrome 81.0.4033.2 回复
    1. 山小炮
      @n1_test

      typecho

      山小炮 2020-02-09 20:44:54 Windows 10 x64 Edition Google Chrome 74.0.3729.169 回复
* 号为必填项