基于 Ubuntu Linux 和 OwnCloud 部署私有云存储

操作环境

Ubuntu 版本: Ubuntu 18.04.1 LTS

OwnCloud 版本: 10.0.10

OwnCloud建议的内存只需要512M, 为了保证系统的可靠运行, 建议使用系统内存为 1GB 及以上的服务器.

10.0.10版的OwnCloud的下载地址如下: https://download.owncloud.org/community/owncloud-10.0.10.tar.bz2

当前的最新版下载地址,可以在OwnCloud的官网下载页面找到: https://owncloud.org/download/

操作步骤

部署 Apache2

sudo apt-get install -y apache2

部署 mariadb

sudo apt-get install -y mariadb-server

新安装的 mysql 数据库的 root 用户的密码默认为空,我们可以使用如下命令为数据库root用户设置密码:

sudo mysqladmin -u root password 密码

设置好之后,登录mysql:

sudo mysql -u root -p

登陆之后,创建一个数据库owncloud:

MariaDB [(none)]> create database owncloud;

创建一个数据库用户 owncloud 并设置密码和权限:

MariaDB [(none)]> grant all on owncloud.* to 'owncloud'@'localhost' identified by '密码';
MariaDB [(none)]> flush privileges;

“flush privileges”用于更新权限.

部署 PHP 7

sudo apt-get install -y php7.0

PHP 7 安装完成后,使用如下命令验证一下 PHP 环境是否配置成功:

php -v

回显如下:

PHP 7.2.10-0ubuntu0.18.04.1 (cli) (built: Sep 13 2018 13:45:02) ( NTS )<br>Copyright (c) 1997-2018 The PHP Group<br>Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies<br>•    with Zend OPcache v7.2.10-0ubuntu0.18.04.1, Copyright (c) 1999-2018, by Zend Technologies

这说明 PHP 环境已经配置成功了。

为了让 Apache2 能够识别 PHP 文件(如果 Apache2 不能识别 PHP 文件,那么当我们通过浏览器访问一个 .php 格式的文件时,浏览器会下载该文件而不是显示该文件) 首先搜索一下有没有相关插件:

apt-cache search libapache2-mod-php

回显如下:

libapache2-mod-php - server-side, HTML-embedded scripting language (Apache 2 module) (default)
libapache2-mod-php7.2 - server-side, HTML-embedded scripting language (Apache 2 module)
php7.2-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)

根据提示,安装 libapache2-mod-php7.2 这个插件:

sudo apt-get install libapache2-mod-php7.2

为了验证上述插件安装及运行正确,我们可以进行一个测试。

进入 Apache2 服务器的根目录:

cd /var/www/html/

新建一个 .php 文件:

sudo vim 1.php

写入如下内容:

<?php
    phpinfo();
?>

确保 Apache2 服务器正在运行:

systemctl status apache2

之后,就在浏览器中访问该 PHP 文件,看到如下界面就证明 Apache2 服务器可以正常识别并解析 PHP 格式的文件:

图 1
图 1

警告:验证完毕后务必删除该文件,否则将可能泄露系统信息。

安装 PHP 的 zip 模块:

sudo apt-get install -y php7.2-zip

安装 PHP 的 intl 模块:

sudo apt-get install -y php7.2-intl

安装 PHP 的 XML 模块:

sudo apt-get install -y php7.2-xml

安装 PHP 的 cURL 模块:

sudo apt-get install -y php7.2-curl

安装 PHP 的 GD 模块:

sudo apt-get install -y php7.2-gd

安装 PHP 的 mbstring 模块:

sudo apt-get install -y php7.2-mbstring

安装 PHP 的 MySQL 模块:

sudo apt-get install -y php7.2-mysql

部署OwnCloud

下载OwnCloud服务器端安装文件:

 wget https://download.owncloud.org/community/owncloud-10.0.10.tar.bz2

下载对应的hash256验证文件:

wget https://download.owncloud.org/community/owncloud-10.0.10.tar.bz2.sha256

验证安装文件是否完整

将上面下载下来的两个文件放在同一路径下,验证安装文件是否完整:

sha256sum -c owncloud-10.0.10.tar.bz2.sha256 <owncloud-10.0.10.tar.bz2

如果文件没有问题,则会返回OK:

owncloud-10.0.10.tar.bz2: OK

解压安装包, 命令:

 tar -xjf owncloud-10.0.10.tar.bz2

成功解压后会得到一个名为owncloud的文件夹。

复制安装文件到指定目录:

sudo cp -r owncloud /var/www/html

在Apache服务器目录下创建OwnCloud的配置文件:

cd /etc/apache2/sites-available/
sudo touch owncloud.conf
sudo vim owncloud.conf

写入如下配置:

Alias /owncloud "/var/www/html/owncloud/"

<Directory /var/www/html/owncloud/>
  Options +FollowSymlinks
  AllowOverride All

 <IfModule mod_dav.c>
  Dav off
 </IfModule>

 SetEnv HOME /var/www/html/owncloud
 SetEnv HTTP_HOME /var/www/html/owncloud

</Directory>

接下来创建一个symlink:

sudo ln -s /etc/apache2/sites-available/owncloud.conf /etc/apache2/sites-enabled/owncloud.conf

更改 owncloud 目录所属的用户和用户组:

sudo chown -R www-data:www-data /var/www/html/owncloud/

重启Apache:

sudo systemctl restart apache2

输入Your Server IP/owncloud/ 就看到OwnCloud的安装界面了:

图 2

图 2

创建管理员的用户名和密码:

图 3
图 3

配置存储路径和数据库:

图 4
图 4

安装完成后就可以使用管理员账户登录了:

图 5
图 5

直接使用管理员账户登录是有风险的,我们可以创建一个非管理员账户,加入非Admin组。创建用户时输入用户名,用户邮箱和用户所有的组即可以创建一个用户:

图 6
图 6

创建完成后的用户是没有设置自定义密码的,在该用户对应的“密码”一栏可以更改用户密码:

图 7
图 7

输入新密码后回车即可以看到密码修改成功的提示:

图 8
图 8

至此, 私有云存储服务器端的基础配置基本完成.

参考文献

OwnCloud官网提供的安装手册: https://doc.owncloud.org/server/latest/admin_manual/installation/

在 Linux 下的 gcc 或 clang 编译器中调用不同版本的 C 语言标准编译程序以及查看本机默认编译标准的方法

假设我们要编写的 C 语言源代码文件的文件名称是 a.c

则,在 gcc 下指定编译器编译标准的命令为:

gcc -std=c99 a.c //调用 C99 标准
gcc -std=c1x a.c //调用 GCC 接受 C11 之前的草案标准
gcc -std=c11 a.c //调用 C11 标准

clang 编译器与 gcc 编译器用法相同, 如果要使用 clang 编译器, 则将 gcc 替换成 clang 即可.

如果想查看当前使用的 gcc 编译器默认的编译标准, 在 Ubuntu Linux 中可以使用如下命令查看 C 语言的所有预编译宏:

gcc -E -dM - </dev/null

在输出的结果中查看 #define __STDC_VERSION__ 的值, 不同值代表的不同编译标准如下:

#define __STDC_VERSION__ 199901L //C99 标准
#define __STDC_VERSION__ 201112L //C11 标准
继续阅读“在 Linux 下的 gcc 或 clang 编译器中调用不同版本的 C 语言标准编译程序以及查看本机默认编译标准的方法”

在 Windows 10 上使用 WSL 配置和运行 Kali Linux / Ubuntu Linux

操作环境

Windows 10 中文家庭版 64 位

(需要 Windows 10 16215.0 或更高版本的 Windows 10 才可以)

操作说明

WSL 全称为 Windows Subsystem for Linux (Windows 下的 Linux 子系统). Wikipedia 对 WSL 的描述摘录如下 (Source: HERE)

适用于 Linux 的 Windows 子系统(英语:Windows Subsystem for Linux,简称WSL)是一个为在Windows 10和Windows Server 2019上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。
WSL提供了一个由微软开发的Linux兼容的内核接口(不包含Linux内核代码),然后可以在其上运行GNU用户空间,例如Ubuntu,openSUSE,SUSE Linux Enterprise Server,Debian和Kali Linux。这样的用户空间可能包含Bash shell和命令语言,使用本机GNU/Linux命令行工具(sed,awk等),编程语言解释器(Ruby,Python等),甚至是图形应用程序(使用主机端的X窗口系统)。

来自维基百科词条: 适用于 Linux 的 Windows 子系统

由于 Windows 下的 Linux 子系统并不包含 Linux 内核, 所以这严格上讲并不是一个真正的 Linux 系统, 但是对终端用户而言, 使用感受上是和真正的 Linux 系统很接近的. 使用 Linux 子系统既避免了在一台计算机上使用双系统时同一时间内只能运行其中一个的问题, 也避免了使用虚拟机时系统资源的大量消耗, 如果喜欢使用 Linux 命令的话, Linux 子系统还是值得一试的.

继续阅读“在 Windows 10 上使用 WSL 配置和运行 Kali Linux / Ubuntu Linux”

解决 Orange Pi 烧录完系统后剩余可用空间过少的问题

操作环境

香橙派使用的 SD 卡容量:16 GB
香橙派使用的 SD 卡文件系统类型:FAT32
香橙派型号:Orange Pi One
香橙派操作系统:Ubuntu 14.04.1 LTS
SSH 远程连接软件:Xshell 6
SSH 远程连接软件的运行平台:Windows 10 中文家庭版 64 位

问题背景

今天在向 Orange Pi 中克隆一个 GitHub 项目的时候,系统无法执行该指令并给出了如下提示:

fatal: could not create work tree dir ‘/home/orangepi/***’.: No space left on device

继续阅读“解决 Orange Pi 烧录完系统后剩余可用空间过少的问题”

Kali Linux 更换系统主题

操作环境

物理机操作系统:Windows 10 家庭版
虚拟机操作系统:Kali Linux 2018.4
虚拟化软件:VMware Workstation 15 Pro (15.0.2 build-10952284)

工具准备

GNOME 主题下载:
https://www.gnome-look.org/

这里我使用的主题是:
https://www.opendesktop.org/p/1263666/

我下载的文件名称是:

McOS-MJV-Dark-mode-Gnome-3.30-1.1.tar.xz

操作步骤

将该主题文件复制进/usr/share/themes/目录:

cp McOS-MJV-Dark-mode-Gnome-3.30-1.1.tar.xz /usr/share/themes/

进入系统主题所在的目录:

cd /usr/share/themes/

解压 .xz 文件:

xz -d McOS-MJV-Dark-mode-Gnome-3.30-1.1.tar.xz

解压 .tar 文件:

tar -xvf McOS-MJV-Dark-mode-Gnome-3.30-1.1.tar

点击打开“优化”工具:

图 1 中文状态下的优化工具
图 1 中文状态下的优化工具

如果在英文状态下,是这样的,点击”Tweaks”:

图 2 英文状态下的优化工具
图 2 英文状态下的优化工具

依次找到“外观/主题/”,选中刚才下载的主题即可更换主题:

图 3 使用优化工具更换系统主题
图 3 使用优化工具更换系统主题

更换系统主题后的Kali Linux:

图 4 系统主题更换完成
图 4 系统主题更换完成

在 VirtualBox 中为 BlackArch Linux 设置共享文件夹

操作环境

虚拟化软件:VirtualBox 5.2.22 r126460 (Qt5.6.2)

物理机操作系统:Windows 10 家庭版 64位

虚拟机操作系统:blackarch-linux-2018.08.01

操作过程

在物理机上新建一个文件夹,打开”设备/共享文件夹”,添加一个共享文件夹并设置为“自动挂载”,如图:

图 1 添加共享文件夹
图 1 添加共享文件夹

之后重启虚拟机系统。

在虚拟机系统的/media/sf_share 目录下可以看到共享文件夹中的内容:

图 2 在虚拟机系统中查看共享文件夹中的文件
图 2 在虚拟机系统中查看共享文件夹中的文件

解决 BlackArch 联网报错:Could not connect to wicd’s D-bus interface. Check the wicd log for error message.

操作环境

虚拟化软件:VirtualBox 5.2.22 r126460 (Qt5.6.2)

物理机操作系统:Windows 10 家庭版 64位

虚拟机操作系统:blackarch-linux-2018.08.01

虚拟机联网方式:桥接

报错产生的过程

启动 BlackArch 之后,右键”network/wicd-gtk”, 如图:

图 1 启动 wicd-gtk
图 1 启动 wicd-gtk

随后出现弹窗提示:

图 2 无法连接到 wicd 的 D-Bus 接口
图 2 无法连接到 wicd 的 D-Bus 接口

上述报错的文字内容即是:

Could not connect to wicd’s D-bus interface. Check the wicd log for error message.

问题解决过程

ip a  命令查看网卡和网络连接情况:

图 3 网卡 enp0s3 未获取到 IP 地址
图 3 网卡 enp0s3 未获取到 IP 地址

运行 dhcpcd enp0s3  命令自动获取 IP 地址:

图 4 自动获取 IP 地址
图 4 自动获取 IP 地址

之后,使用 ip a 命令即可看到系统已经获取到了 IP 地址等网络配置信息:

图 5 成功获取 IP 地址
图 5 成功获取 IP 地址

ping 测试发现可以正常连接互联网:

图 6 ping www.zhaokaifeng.com
图 6 ping www.zhaokaifeng.com

设置Windows防火墙以允许被ICMP Ping(两种配置方式)

背景与目的

Ping测试常被用于测试网络中两台主机之间是否互相连通,但是,大多数Windows操作系统(包括桌面版和服务器版)默认都是只允许ping其他主机而不允许其他主机ping自己。下面演示如何在Windows系统上开启基于ICMPv4协议的Ping.

继续阅读“设置Windows防火墙以允许被ICMP Ping(两种配置方式)”

详解CentOS中定时执行释放内存的Shell脚本及相关原理

本文总体结构:

第一部分:本文中释放系统内存的原理

第二部分:创建用于释放内存的Shell脚本并加入到系统定时任务

第三部分:详细分析Shell脚本中的每一条指令

第四部分:系统定时任务的工作方式

继续阅读“详解CentOS中定时执行释放内存的Shell脚本及相关原理”

CentOS-7修改主机名

方法一(修改静态主机名):

vi /etc/hostname

注:由于静态主机名是系统初始化时从/etc/hostname中读取的,所以修改其中的内容为自己想要的主机名即可实现对静态主机名的修改。

之后reboot以生效。

方法二(修改瞬态主机名):

hostname aaa

注:aaa为新主机名。

查看主机名:

hostname

上述命令查看主机名发现显示的主机名是aaa ,但是命令行提示符前面的主机名并没有改变。此时如果是在纯文本界面,使用Alt+Fn+F3 或Alt+F3 组合键即可以新的主机名(aaa)进行登陆,如果在图形化界面中,直接打开一个新的模拟终端就可以看到新的主机名(aaa)了。

注:reboot后,该方法所做的修改失效。

方法三(使用hostnamectl修改主机名):

hostnamectl是CentOS-7中新增的一个用于修改主机名的指令。在CentOS中有“static静态”、“transient瞬态”和“pretty灵活”三种主机名命名方式(在static和transient形式的主机名中不允许出现特殊字符和空格,而在pretty形式的主机名中则没有这些限制,pretty形式的主机名只是用于展示给终端用户。),使用hostnamectl可以很方便的修改这三种状态的主机名。

同时修改static, transient, pretty三种形式的主机名:

hostnamectl set-hostname aaa

仅修改静态形式主机名:

hostnamectl --static set-hostname aaa

仅修改瞬态形式主机名:

hostnamectl --transient set-hostname aaa

仅修改灵活形式主机名:

hostnamectl --pretty set-hostname aaa

注:使用方法三修改后需reboot以生效。

SSH免密码登录Linux服务器

操作环境

客户机操作系统:Ubuntu Linux
服务器操作系统:CentOS Linux

原理说明

免密登陆其实就是使用密钥文件代替密钥进行身份验证。这里的密钥文件就是公钥和对应的私钥,将公钥部署在远程服务器上,私钥部署在客户机上。在服务器和客户机上配置好密钥文件后,当客户机向服务器发起连接请求的时候,客户机会向服务器表达使用密钥文件进行身份验证的请求并向服务器发送公钥;随后,服务器会在客户机对应用户的主目录下找寻公钥文件并与收到的公钥文件进行对比;如果公钥文件的对比结果一致,服务器会使用公钥加密一个文件发送给客户机;客户机在收到公钥加密的文件后使用自己的私钥进行解密,然后将解密后的内容发送给服务器;如果服务器收到的解密内容与原内容一致则身份验证成功,两台计算机之间成功建立连接。

实现方法

使用ssh-keygen 生成公钥与私钥,将公钥部署在服务器上,私钥部署在客户机上。

具体步骤

1.生成密钥文件
命令:

ssh-keygen -t rsa -P "password"

之后弹出提示:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/yourname/.ssh/id_rsa):

此时如果不希望改变密钥文件的默认保存路径则直接回车即可。

注0:上述命令中的password是用于加密私钥的密码。为了尽可能保证私钥不被非授权使用,我建议在创建密钥文件时务必设置加密私钥的密码,不可省略。

这时,在/home/yourname/.ssh/id_rsa 目录下就可以看到id_rsa 、id_rsa.pub 和known_hosts 这三个文件。
其中,
id_rsa:私钥文件
id_rsa.pub:公钥文件
know_hosts:已知主机的公钥文件

2.复制公钥至服务器
命令:

scp -p ~/.ssh/id_rsa.pub root@<server ip>:/root/.ssh/authorized_keys

之后会要求输入远程服务器的登陆密码,输入密码后回车即可。

当然,也可以登录服务器后用 vim 编辑器打开 .ssh/ 目录下的 authorized_keys 文件,将本地 id_rsa.pub 文件中的内容复制进去,之后保存退出即可。若有多个公钥,则在 authorized_keys 文件中换行后继续输入公钥文件中的内容即可。

3.登录服务器
命令:

ssh root@<server ip>

回车后会要求输入 本地私钥的解密密码(即第一步中设置的“password”),解密私钥后就可以登录服务器了。

注1:上文路径中出现的“yourname”是指你登陆客户机时使用的用户名。

注2:在部署公钥的时候虽然使用了服务器相应登陆账户(如root账户)的密码,但是之前所生成的公钥与私钥和这个密码并没有联系,输入该密码仅仅是为了登陆远程服务器,将公钥文件部署到服务器上。

更新记录

2022 年 10 月 26 日第 02 次更新
2020 年 02 月 26 日第 01 次更新


荒原之梦网全部内容均为原创,提供了涵盖考研数学基础知识、考研数学真题、考研数学练习题和计算机科学等方面,大量精心研发的学习资源。

意见反馈 | 内容纠错 | 微信 | QQ | 公众号 | 知乎 | 微博 | 博客园 |CSDN | B 站 | 电子邮件
豫 ICP 备 17023611 号-1 | 公网安备 - 荒原之梦 豫公网安备 41142502000132 号 | SiteMap
Copyright © 2017-2024 ZhaoKaifeng.com 版权所有 All Rights Reserved.

Copyright © 2024   zhaokaifeng.com   All Rights Reserved.
豫ICP备17023611号-1
 豫公网安备41142502000132号

荒原之梦 自豪地采用WordPress