CentOS/Debian/Ubuntu系统 TCP-BBR 一键安装脚本

其他BBR一键脚本:『逗比』Debian/Ubuntu系统 TCP拥塞控制技术 ——TCP-BBR 一键安装脚本

本脚本适用环境

系统支持:CentOS 6+,Debian 7+,Ubuntu 12+

虚拟技术:OpenVZ 以外的(KVM、Xen、VMware等)

内存要求:≥128M

日期  :2017 年 01 月 13 日

关于本脚本

  • 本脚本已在 Vultr 上的 VPS 全部测试通过。
  • 当脚本检测到 VPS 的虚拟方式为 OpenVZ 时,会提示错误,并自动退出安装。
  • 某些服务商(如 Linode、DigitalOcean)可能需要首先将 VPS 配置为可自定义内核,然后 grub2 的配置才会生效。
  • 脚本运行完重启发现开不了机的,打开 VPS 后台控制面板的 VNC, 开机卡在 grub 引导, 手动选择内核即可。
  • 由于是使用最新版系统内核,最好请勿在生产环境安装,以免产生不可预测之后果。

使用方法

使用root用户登录,运行以下命令:

wget -N --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && bash bbr.sh

安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。

重启完成后,进入 VPS,验证一下是否成功安装最新内核并开启 TCP BBR,输入以下命令:

uname -r
# 查看内核版本,含有 4.9.0 就表示 OK 了
# ————————————
sysctl net.ipv4.tcp_available_congestion_control
# 返回值一般为:
# net.ipv4.tcp_available_congestion_control = bbr cubic reno
# ————————————
sysctl net.ipv4.tcp_congestion_control
# 返回值一般为:
# net.ipv4.tcp_congestion_control = bbr
# ————————————
sysctl net.core.default_qdisc
# 返回值一般为:
# net.core.default_qdisc = fq
# ————————————
lsmod | grep bbr
# 返回值有 tcp_bbr 模块即说明bbr已启动。

参考链接

更新日志

2017 年 01 月 13 日

1.更新 内核为 4.9.3。

2017 年 01 月 09 日

1.更新 内核为 4.9.1。

centos和ubuntu安装卸载软件(rpm/dpkg)

使用Linux系统,无论是Centos/RHEL/Fedoar系列还是Ubuntu/debian系列,都有独立的包管理体系,在Centos系列,使用rpm包进行软件安装配置管理,在Ubuntu系列,使用deb包进行软件安装配置管理

CentOS:

centos使用yum做自动化包管理,包格式为rpm包,常用命令有:

yum search xxx
yum install xxx
yum groupinstall  "xxx" //以组形式安装软件包组合

直接安装rpm

rpm -ivh xxx.rpm --force (--force表示强制安装)

直接卸载rpm

rpm -e xxx.rpm

查看包内容:

rpm -l xxx.rpm

查看一个文件在哪个rpm包:

rpm -f 文件名

查看系统安装哪些rpm

rpm -qa

Ubuntu:

Ubuntu使用apt做自动化包管理,包格式为deb,常用命令有:

apt-cache search xxx
apt-get install xxx
apt-get remote xxx

直接安装deb包:

dpkg -i xxx.deb

列出包关联:

dpkg -L xxx.deb

显示包版本

dpkg -l xxx.deb

查看系统安装哪些deb包

dpkg -l

卸载包

dpkg -P xxx   //全部卸载,  dpkg -r xxx 只卸载软件,保留配置

显示包信息

dpkg -s xxx

显示包文件

dpkg -L ovmf 
dpkg -c xxx.deb
dpkg-deb -c xxx.deb

查看一个文件在哪个deb包:

dpkg -S 文件

Ubuntu 18.04 手动安装最新版 Redis

Redis ,全称 REmote DIctionary Server ,是一个由 Salvatore Sanfilippo 编写的开源高性能 key-value 存储系统。Redis 是基于内存的 Key-Value 数据库,比 Memcache 更先进,支持多种数据结构,高效,快速。用 Redis 可以很轻松解决高并发的数据访问问题,做为时时监控信号处理也非常不错。本文详细介绍如何在 Ubuntu 18.04 上手动安装最新版 Redis 。以下操作是在 root 账号下进行的,非 root 账号需提升到 root 权限。

安装 Redis

Ubuntu 18.04 默认源中的 Redis 版本不是最新版,要想通过 apt-get install 的方式安装最新版,首先添加 Redis 源。

添加 Redis 源

首先安装依赖:

apt-get install software-properties-common -y

使用如下命令添加 Redis 源:

add-apt-repository ppa:chris-lea/redis-server -y

安装 Redis

使用如下命令安装 Redis:

apt-get update && apt-get install redis-server -y

通过以上命令便可安装最新版 Redis ,终端中输入以下命令查询 Redis 版本:

redis-server -v

命令执行后返回 Redis 版本如下,已经是最新版本:

Redis server v=5.0.3 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=45d60903d31a0894

Redis 安装完成后服务已经自动启动,通过以下命令查看 Redis 服务状态:

systemctl status redis

命令执行后会返回类似下面的信息,可以看到 Redis 服务已经启动,而且重启系统服务也会自动运行:

redis-server.service - Advanced key-value store
   Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-01-19 10:48:52 UTC; 12s ago
     Docs: http://redis.io/documentation,
           man:redis-server(1)
  Process: 2421 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 2424 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
 Main PID: 2445 (redis-server)
    Tasks: 4 (limit: 4704)
   CGroup: /system.slice/redis-server.service
           └─2445 /usr/bin/redis-server 127.0.0.1:6379

配置 Redis 密码

修改配置文件,设置 Redis 密码

配置 Redis 密码将启用 auth 命令,该命令需要客户端进行身份验证才能访问数据库,大大提高安全性。配置 Redis 密码是通过修改 Redis 配置文件完成的。Redis 配置文件为 /etc/redis/redis.conf 。在 redis.conf 文件中有一条对 requirepass 的注释警告:

# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.

因此,指定一个非常强大和非常长的值作为密码很重要,可以使用 openssl 命令生成一个随机密码:

printf "$(openssl rand 60 | openssl base64 -A) n" 

命令执行后终端返回一串随机字符串,例如:

EDyHgJqw1maAYr+bbjmIKF+1lm9EnGegFrzdy2zNfAdgvCCi1Wz+Xezs1YzVpHPpDZqyl2uNSwRIKSFn

将该随机字符串做为 Redis 密码(注意,以下命令执行时请将随机字符串修改为自己获取的真实随机字符串):

sed -i 's/# requirepass foobared/requirepass EDyHgJqw1maAYr+bbjmIKF+1lm9EnGegFrzdy2zNfAdgvCCi1Wz+Xezs1YzVpHPpDZqyl2uNSwRIKSFn/' /etc/redis/redis.conf

重启 Redis 服务,使密码生效:

systemctl restart redis.service

测试 Redis 密码

终端中输入执行以下命令进入 Redis 客户端:

redis-cli

终端中返回结果如下:

root@timelate:~# redis-cli
127.0.0.1:6379> 

输入 ping 并回车,终端中返回结果如下:

127.0.0.1:6379> ping
(error) NOAUTH Authentication required.

提示需要认证,说明密码已经生效。继续在终端中输入以下命令,进行密码认证:

auth EDyHgJqw1maAYr+bbjmIKF+1lm9EnGegFrzdy2zNfAdgvCCi1Wz+Xezs1YzVpHPpDZqyl2uNSwRIKSFn

命令执行后终端返回结果如下,提示认证成功:

127.0.0.1:6379> auth EDyHgJqw1maAYr+bbjmIKF+1lm9EnGegFrzdy2zNfAdgvCCi1Wz+Xezs1YzVpHPpDZqyl2uNSwRIKSFn
OK

终端中输入 exit 并回车,退出 Redis 客户端。

通过以上步骤便可在 Ubuntu 18.04 上手动安装最新版 Redis ,本文结束。

解决ssh无法连接远程Ubuntu,Uuntu安装ssh-server

ssh无法连接Ubuntu原因:

Ubuntu安装完成默认情况下,只安装了ssh-client,也就是说你可以在该Ubuntu下用ssh连接其它服务器,但是没有安装ssh-server,因此你无法连接到此Ubuntu上,解决办法就是安装ssh-server。

一、安装ssh

命令:

sudo apt-get install openssh-server -y

二、查看ssh服务是否启动

命令:

sudo ps -e |grep ssh

#如果显示有sshd 这一项说明,说明ssh已经启动成功,到此结束。那么你可以远程连接ssh了。

#如果没有sshd、只有ssh-agent,说明ssh启动失败,需要配置,继续完成后续步骤。

三、启动ssh服务

sudo service ssh start  或 /etc/init.d/ssh restart

命令执行完成后,重复一次第二步,看看ssh是否启动成功。如果依旧没有启动成功,那么继续完成后续步骤。

四、修改ssh配置文件

命令:

vi /etc/ssh/ssh_config

#编辑配置文件,大约在39,40行,将这两句代码前的#取消掉保存退出。

Port 22

Protocol 2,1

五、重启Ubuntu

到这一步本人试过多次,启动、重启ssh服务依然失败,但重启一下Ubuntu就好了,。不知道这是什么鬼,但是屡试不爽,不妨试一下。

ssh还不能登录上,就修改sshd的默认配置

ssh出现permission denied (publickey)问题:

修改/etc/ssh/sshd-config文件.

PubkeyAuthentication yes修改为no

如何在Ubuntu 18.04上使用MySQL设置远程数据库以优化站点性能

介绍

随着您的应用程序或网站的增长,可能会出现您已经超出当前服务器设置的程度。 如果您在同一台计算机上托管Web服务器和数据库后端,最好将这两个功能分开,以便每个功能可以在自己的硬件上运行,并分担响应访问者请求的负载。

在本指南中,我们将介绍如何配置Web应用程序可以连接的远程MySQL数据库服务器。 我们将使用WordPress作为示例,以便有一些工作,但该技术广泛适用于MySQL支持的任何应用程序。

先决条件

在开始本教程之前,您将需要:

  • 两台Ubuntu 18.04服务器。 每个应该有一个具有sudo权限和启用UFW防火墙的非root用户,如我们的初始服务器设置与Ubuntu 18.04教程中所述。 其中一个服务器将托管您的MySQL后端,在本指南中,我们将其称为数据库服务器 。 另一个将远程连接到您的数据库服务器并充当您的Web服务器; 同样,我们将在本指南的过程中将其称为Web服务器 。

  • Nginx和PHP安装在您的Web服务器上 。 我们的教程如何在Ubuntu 18.04中安装Linux,Nginx,MySQL,PHP(LEMP)将指导您完成整个过程,但请注意,您应该跳过本教程的第2步,重点是安装MySQL,因为您将安装MySQL数据库服务器。

  • MySQL安装在您的数据库服务器上 。 按照“ 如何在Ubuntu 18.04上安装MySQL ”进行设置。

  • (可选)(但强烈推荐), Web服务器上安装的Let’s Encrypt的TLS / SSL证书。 您需要购买域名并为您的服务器设置DNS记录 ,但证书本身是免费的。 我们的指南如何使用Ubuntu 18.04上的Let加密来保护Nginx将向您展示如何获取这些证书。

第1步 – 配置MySQL以监听远程连接

将一个数据存储在单独的服务器上是一种在达到单机配置的性能上限后优雅扩展的好方法。 它还提供了以后负载平衡和扩展基础架构所需的基本结构。 按照先决条件教程安装MySQL后,您需要更改一些配置值以允许来自其他计算机的连接。

大多数MySQL服务器的配置更改都可以在mysqld.cnf文件中进行,该文件默认存储在/etc/mysql/mysql.conf.d/目录中。 在首选编辑器中使用root权限打开此文件。 在这里,我们将使用nano :

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

此文件分为由方括号( [和] )中的标签表示的部分。 找到标记为mysqld的部分:

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
[mysqld]
. . .

在此部分中,查找名为bind-address的参数。 这告诉数据库软件监听连接的网络地址。

默认情况下,它设置为127.0.0.1 ,这意味着MySQL配置为仅查找本地连接。 您需要将其更改为引用可以访问服务器的外部 IP地址。

如果两台服务器都位于具有专用网络功能的数据中心,请使用数据库服务器的专用网络IP。 否则,您可以使用其公共IP地址:

/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
. . .
bind-address = db_server_ip

由于您将通过Internet连接到数据库,因此建议您需要加密连接以确保数据安全。 如果不加密MySQL连接,网络上的任何人都可能在Web和数据库服务器之间嗅探敏感信息。 要加密MySQL连接,请在刚刚更新的bind-address行之后添加以下行:

/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
. . .
require_secure_transport = on
. . .

完成后保存并关闭文件。 如果您使用的是nano ,请按CTRL+X , Y ,然后按ENTER 。

要使SSL连接起作用,您需要创建一些密钥和证书。 MySQL附带了一个自动设置它们的命令。 运行以下命令,该命令将创建必要的文件。 它还通过指定mysql用户的UID使MySQL服务器可以读取它们:

sudo mysql_ssl_rsa_setup --uid=mysql

要强制MySQL更新其配置并读取新的SSL信息,请重新启动数据库:

sudo systemctl restart mysql

要确认服务器正在监听外部接口,请运行以下netstat命令:

sudo netstat -plunt | grep mysqld
tcp        0      0 db_server_ip:3306     0.0.0.0:*               LISTEN      27328/mysqld

netstat打印有关服务器网络系统的统计信息。 此输出向我们显示一个名为mysqld的进程附加到端口3306 (标准MySQL端口)的db_server_ip ,确认服务器正在监听相应的接口。

接下来,打开防火墙上的端口以允许流量通过:

sudo ufw allow mysql

这些是您需要对MySQL进行的所有配置更改。 接下来,我们将介绍如何设置数据库和一些用户配置文件,其中一个用于远程访问服务器。

第2步 – 设置WordPress数据库和远程凭据

即使MySQL本身正在监听外部IP地址,但目前还没有配置启用远程的用户或数据库。 让我们为WordPress和一对可以访问它的用户创建一个数据库。

首先以root用户身份连接到MySQL:

sudo mysql

注意:如果启用了密码身份验证,如前提条件MySQL教程的第3步中所述 ,则需要使用以下命令来访问MySQL shell:

mysql -u root -p

运行此命令后,将询问您的MySQL root密码,输入后,您将收到一个新的mysql>提示符。

在MySQL提示符下,创建一个WordPress将使用的数据库。 为此数据库提供可识别的名称可能会有所帮助,以便您以后可以轻松识别它。 在这里,我们将其命名为wordpress :

CREATE DATABASE wordpress;

现在您已经创建了数据库,接下来需要创建一对用户。 我们将创建一个仅限本地的用户以及与Web服务器的IP地址绑定的远程用户。

首先,创建本地用户wordpressuser ,并通过在声明中使用localhost使此帐户仅匹配本地连接尝试:

CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'password';

然后授予此帐户对wordpress数据库的完全访问权限:

GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost';

此用户现在可以对WordPress的数据库执行任何操作,但此帐户不能远程使用,因为它只匹配来自本地计算机的连接。 考虑到这一点,创建一个配对帐户,该帐户将仅与您的Web服务器上的连接匹配。 为此,您需要Web服务器的IP地址。

请注意,您必须使用与您在mysqld.cnf文件中配置的网络相同的IP地址。 这意味着如果您在mysqld.cnf文件中指定了专用网络IP,则需要在以下两个命令中包含Web服务器的专用IP。 如果您将MySQL配置为使用公共Internet,则应将其与Web服务器的公共IP地址进行匹配。

CREATE USER 'wordpressuser'@'web-server_ip' IDENTIFIED BY 'password';

创建远程帐户后,为其授予与本地用户相同的权限:

GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'web_server_ip';

最后,刷新权限,以便MySQL知道开始使用它们:

FLUSH PRIVILEGES;

然后输入以下命令退出MySQL提示符:

exit

现在您已经设置了新数据库和启用远程的用户,您可以继续测试是否能够从Web服务器连接到数据库。

第3步 – 测试远程和本地连接

在继续之前,最好验证您是否可以从本地计算机(数据库服务器)和每个wordpressuser帐户的Web服务器连接到数据库。

首先,尝试使用新帐户登录,从数据库服务器测试本地连接:

mysql -u wordpressuser -p

出现提示时,输入您为此帐户设置的密码。

如果给出MySQL提示,则本地连接成功。 您可以输入以下命令再次退出:

exit

接下来,登录Web服务器以测试远程连接:

ssh sammy@web_server_ip

您需要在Web服务器上安装一些MySQL客户端工具才能访问远程数据库。 首先,如果您最近没有这样做,请更新本地包缓存:

sudo apt update

然后安装MySQL客户端实用程序:

sudo apt install mysql-client

在此之后,使用以下语法连接到数据库服务器:

mysql -u wordpressuser -h db_server_ip -p

同样,您必须确保使用正确的数据库服务器IP地址。 如果您将MySQL配置为在专用网络上监听,请输入数据库的专用网络IP。 否则,请输入数据库服务器的公共IP地址。

系统将要求您输入wordpressuser帐户的密码。 输入后,如果一切正常,您将看到My​​SQL提示符。 使用以下命令验证连接是否正在使用SSL:

status

如果连接确实使用SSL,则SSL:行将指示此信息,如下所示:

--------------
mysql  Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using  EditLine wrapper

Connection id:      52
Current database:
Current user:       [email protected]
SSL:         Cipher in use is DHE-RSA-AES256-SHA
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     5.7.18-0ubuntu0.16.04.1 (Ubuntu)
Protocol version:   10
Connection:     203.0.113.111 via TCP/IP
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:       3306
Uptime:         3 hours 43 min 40 sec

Threads: 1  Questions: 1858  Slow queries: 0  Opens: 276  Flush tables: 1  Open tables: 184  Queries per second avg: 0.138
--------------

验证可以远程连接后,继续并退出提示:

exit

有了这个,您已经验证了从Web服务器的本地访问和访问,但您尚未验证其他连接将被拒绝。 要进行额外检查,请尝试从未配置特定用户帐户的第三台服务器执行相同操作,以确保未授予此其他服务器访问权限。

请注意,在运行以下命令以尝试连接之前,您可能必须像上面那样安装MySQL客户端实用程序:

mysql -u wordpressuser -h db_server_ip -p

这不应该成功完成,并应该抛出一个看起来类似于此的错误:

ERROR 1130 (HY000): Host '203.0.113.12' is not allowed to connect to this MySQL server

这是预期的,因为您还没有创建允许从此服务器连接的MySQL用户,并且还希望,因为您要确保您的数据库服务器将拒绝未经授权的用户访问您的MySQL服务器。

成功测试远程连接后,您可以继续在Web服务器上安装WordPress。

第4步 – 安装WordPress

为了演示新的支持远程的MySQL服务器的功能,我们将在您的Web服务器上完成安装和配置WordPress(流行的内容管理系统)的过程。 这将要求您下载并解压缩软件,配置连接信息,然后运行WordPress的基于Web的安装。

在您的Web服务器上 ,将最新版本的WordPress下载到您的主目录:

cd ~
curl -O https://wordpress.org/latest.tar.gz

解压缩文件,这将在您的主目录中创建一个名为wordpress的目录:

tar xzvf latest.tar.gz

WordPress包含一个示例配置文件,我们将其用作起点。 制作此文件的副本,从文件名中删除-sample ,以便WordPress加载:

cp ~/wordpress/wp-config-sample.php ~/wordpress/wp-config.php

当您打开文件时,您的第一个业务订单将是调整一些密钥以为您的安装提供更高的安全性。 WordPress为这些值提供了一个安全的生成器,因此您不必尝试自己提供好的值。 这些仅在内部使用,因此在这里使用复杂,安全的值不会影响可用性。

要从WordPress密钥生成器中获取安全值,请键入:

curl -s https://api.wordpress.org/secret-key/1.1/salt/

这将为您的输出打印一些键。 您将立即将这些添加到您的wp-config.php文件中:

警告!

每次请求您自己的唯一值非常重要。

不要复制此处显示的值!

define('AUTH_KEY',         'L4|2Yh(giOtMLHg3#] DO NOT COPY THESE VALUES %G00o|te^5YG@)');
define('SECURE_AUTH_KEY',  'DCs-k+MwB90/-E(=!/ DO NOT COPY THESE VALUES +WBzDq:7U[#Wn9');
define('LOGGED_IN_KEY',    '*0kP!|VS.K=;#fPMlO DO NOT COPY THESE VALUES +&[%8xF*,18c @');
define('NONCE_KEY',        'fmFPF?UJi&(j-{8=$- DO NOT COPY THESE VALUES CCZ?Q+_~1ZU~;G');
define('AUTH_SALT',        '@qA7f}2utTEFNdnbEa DO NOT COPY THESE VALUES t}Vw+8=K%20s=a');
define('SECURE_AUTH_SALT', '%BW6s+d:7K?-`C%zw4 DO NOT COPY THESE VALUES 70U}PO1ejW+7|8');
define('LOGGED_IN_SALT',   '-l>F:-dbcWof%4kKmj DO NOT COPY THESE VALUES 8Ypslin3~d|wLD');
define('NONCE_SALT',       '4J(<`4&&F (WiK9K#] DO NOT COPY THESE VALUES ^ZikS`es#Fo:V6');

将收到的输出复制到剪贴板,然后在文本编辑器中打开配置文件:

nano ~/wordpress/wp-config.php

找到包含这些设置的虚拟值的部分。 它看起来像这样:

/wordpress/wp-config.php

. . .
define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');
. . .

删除这些行并粘贴从命令行复制的值。

接下来,输入远程数据库的连接信息。 这些配置行位于文件的顶部,就在您粘贴到键中的位置上方。 请记住使用先前在远程数据库测试中使用的相同IP地址:

/wordpress/wp-config.php

. . .
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', 'password');

/** MySQL hostname */
define('DB_HOST', 'db_server_ip');
. . .

最后,在文件中的任何位置添加以下行,告诉WordPress使用与MySQL数据库的SSL连接:

/wordpress/wp-config.php

define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL);

保存并关闭文件。

接下来,将~/wordpress目录中的文件和目录复制到Nginx的文档根目录。 请注意,此命令包含-a标志以确保所有现有权限都被转移:

sudo cp -a ~/wordpress/* /var/www/html

在此之后,剩下要做的就是修改文件所有权。 将文档根目录中所有文件的所有权更改为WW-data ,Ubuntu的默认Web服务器用户:

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

有了这个,就安装了WordPress,并且您已准备好运行其基于Web的安装程序。

第5步 – 通过Web界面设置Wordpress

WordPress有一个基于Web的设置过程。 当您浏览它时,它会询问几个问题并在数据库中安装所需的所有表。 在这里,我们将介绍设置WordPress的初始步骤,您可以将其用作构建使用远程数据库后端的自定义网站的起点。

导航到与您的Web服务器关联的域名(或公共IP地址):

http://example.com

您将看到WordPress安装程序的语言选择屏幕。 选择适当的语言,然后单击进入主安装屏幕:

未分类

提交信息后,您需要使用刚刚创建的帐户登录WordPress管理界面。 然后,您将进入仪表板,您可以在其中自定义新的WordPress站点。

结论

按照本教程,您已设置MySQL数据库以接受来自远程Wordpress安装的受SSL保护的连接。 本指南中使用的命令和技术适用于以任何编程语言编写的任何Web应用程序,但具体的实现细节将有所不同。 有关更多信息,请参阅您的应用程序或语言的数据库文档。

Ubuntu 18.04安装Samba服务器及配置

局域网下使用samba服务在Linux系统与Windows系统直接共享文件是一项很方便的操作。以Ubuntu为例配置samba服务,Linux服务器的版本是Ubuntu 18.04.1 LTS。

未分类

在终端中执行下列指令:cat /etc/issue查看当前正在运行的 Ubuntu 的版本号。

未分类

以下是我的安装配置步骤:

(1)更新当前软件

sudo apt-get upgrade  
sudo apt-get update  
sudo apt-get dist-upgrade

(2)安装samba服务器

sudo apt-get install samba samba-common

未分类

(3)创建一个用于分享的samba目录

sudo mkdir /home/linuxidc/linuxidc.com/share

(4)给创建的这个目录设置权限

sudo chmod 777 /home/linuxidc/linuxidc.com/share

未分类

(5)添加用户(下面的linuxidc是我的用户名,之后会需要设置samba的密码)

sudo smbpasswd -a linuxidc

未分类

(6)配置samba的配置文件

sudo nano /etc/samba/smb.conf

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

[share]
comment = share folder
browseable = yes
path = /home/linuxidc/linuxidc.com/share
create mask = 0700
directory mask = 0700
valid users = linuxidc
force user = linuxidc
force group = linuxidc
public = yes 
available = yes 
writable = yes

未分类

在上面valid users = linuxidc中的linuxidc为我的用户名。

(7)重启samba服务器

sudo service smbd restart

(8)Windows徽标+R 在弹出的运行窗口中输入 \ip即可访问。如\192.168.182.188,输入samba用户名及密码访问即可看到共享,然后就可以在Linux系统与Windows系统直接进行文件共享了

Win+R:在弹出的运行窗口中输入ip(在ubuntu中用ifconfig查看ip)即可访问。

未分类

如果提示:提示你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问。这些策略可帮助保护你的电脑免受网络上不安全设备或恶意设备的威胁。

解决方法见:https://www.linuxidc.com/Linux/2018-11/155467.htm

(9)输入samba用户名及密码访问即可看到共享文件夹shar

未分类

上传创建文件

未分类

(10)选中share,点击右键,选择映射网络驱动器

未分类

未分类

(11)最终结果如下图

未分类

Ubuntu16.04安装MongoDB

最近需要用到MongoDB,我在这里记录一下安装步骤。

首先说下什么是MongoDB,摘至维基百科:

MongoDB是一种面向文档的数据库管理系统,由C++撰写而成,以此来解决应用程序开发社区中的大量现实问题;
MongoDB使用内存映射文件, 32位系统上限制大小为2GB的数据(64位支持更大的数据)。 MongoDB服务器只能用在小端序系统,虽然大部分公司会同时准备小端序和大端序系统;

1、安装开始
  
选择需要的版本
      
未分类

2、导入公钥

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

3、创建MongoDB列表文件

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

4、重新加载本地包数据库

sudo apt-get update

5、安装MongoDB包,我这里选择稳定版

sudo apt-get install -y mongodb-org

为防止意外升级,可以将软件包固定在当前安装的版本中:

echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-org-shell hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections

注:如果通过软件包管理器安装,则在安装期间会创建数据目录 /var/lib/mongodb和日志目录/var/log/mongodb

6、启动MongoDB

sudo service mongod start

检查日志文件的内容以/var/log/mongodb/mongod.log 获取行读数,验证进程是否已成功启动,27017是独立mongod 侦听的默认端

[initandlisten] waiting for connections on port 27017

停止MongoDB的命令

sudo service mongod stop

重启MongoDB命令

sudo service mongod restart

7、mongo在与主机相同的主机上启动shell mongod,以mongod使用默认端口27017 连接到localhost上运行的shell

mongo

注:MongoDB安装完“admin”库中默认没有用户,此时用mongo命令登录是超级管理员用户

在 Ubuntu 18.04 LTS 上使用 KVM 配置无头虚拟化服务器

我们已经讲解了 在 Ubuntu 18.04 无头服务器上配置 Oracle VirtualBox (https://www.ostechnix.com/install-oracle-virtualbox-ubuntu-16-04-headless-server/)。在本教程中,我们将讨论如何使用 KVM 去配置无头虚拟化服务器,以及如何从一个远程客户端去管理访客系统。正如你所知道的,KVM(Kernel-based virtual machine)是开源的,是 Linux 上的全虚拟化。使用 KVM,我们可以在几分钟之内,很轻松地将任意 Linux 服务器转换到一个完全的虚拟化环境中,以及部署不同种类的虚拟机,比如 GNU/Linux、*BSD、Windows 等等。

使用 KVM 配置无头虚拟化服务器

我在 Ubuntu 18.04 LTS 服务器上测试了本指南,但是它在其它的 Linux 发行版上也可以使用,比如,Debian、CentOS、RHEL 以及 Scientific Linux。这个方法完全适合哪些希望在没有任何图形环境的 Linux 服务器上,去配置一个简单的虚拟化环境。

基于本指南的目的,我将使用两个系统。

KVM 虚拟化服务器:

  • 宿主机操作系统 – 最小化安装的 Ubuntu 18.04 LTS(没有 GUI)
  • 宿主机操作系统的 IP 地址:192.168.225.22/24
  • 访客操作系统(它将运行在 Ubuntu 18.04 的宿主机上):Ubuntu 16.04 LTS server

远程桌面客户端:

  • 操作系统 – Arch Linux

安装 KVM

首先,我们先检查一下我们的系统是否支持硬件虚拟化。为此,需要在终端中运行如下的命令:

$ egrep -c '(vmx|svm)' /proc/cpuinfo

假如结果是 zero (0),说明系统不支持硬件虚拟化,或者在 BIOS 中禁用了虚拟化。进入你的系统 BIOS 并检查虚拟化选项,然后启用它。

假如结果是 1 或者 更大的数,说明系统将支持硬件虚拟化。然而,在你运行上面的命令之前,你需要始终保持 BIOS 中的虚拟化选项是启用的。

或者,你也可以使用如下的命令去验证它。但是为了使用这个命令你需要先安装 KVM。

$ kvm-ok

示例输出:

INFO: /dev/kvm exists
KVM acceleration can be used

如果输出的是如下这样的错误,你仍然可以在 KVM 中运行访客虚拟机,但是它的性能将非常差。

INFO: Your CPU does not support KVM extensions
INFO: For more detailed results, you should run this as root
HINT: sudo /usr/sbin/kvm-ok

当然,还有其它的方法来检查你的 CPU 是否支持虚拟化。更多信息参考接下来的指南。

  • 如何知道 CPU 是否支持虚拟技术(VT)https://www.ostechnix.com/how-to-find-if-a-cpu-supports-virtualization-technology-vt/

接下来,安装 KVM 和在 Linux 中配置虚拟化环境所需要的其它包。

在 Ubuntu 和其它基于 DEB 的系统上,运行如下命令:

$ sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils cpu-checker

KVM 安装完成后,启动 libvertd 服务(如果它没有启动的话):

$ sudo systemctl enable libvirtd
$ sudo systemctl start libvirtd

创建虚拟机

所有的虚拟机文件和其它的相关文件都保存在 /var/lib/libvirt/ 下。ISO 镜像的默认路径是 /var/lib/libvirt/boot/。

首先,我们先检查一下是否有虚拟机。查看可用的虚拟机列表,运行如下的命令:

$ sudo virsh list --all

示例输出:

Id Name State
----------------------------------------------------

未分类

正如上面的截屏,现在没有可用的虚拟机。

现在,我们来创建一个。

例如,我们来创建一个有 512 MB 内存、1 个 CPU 核心、8 GB 硬盘的 Ubuntu 16.04 虚拟机。

$ sudo virt-install --name Ubuntu-16.04 --ram=512 --vcpus=1 --cpu host --hvm --disk path=/var/lib/libvirt/images/ubuntu-16.04-vm1,size=8 --cdrom /var/lib/libvirt/boot/ubuntu-16.04-server-amd64.iso --graphics vnc

请确保在路径 /var/lib/libvirt/boot/ 中有一个 Ubuntu 16.04 的 ISO 镜像文件,或者在上面命令中给定的其它路径中有相应的镜像文件。

示例输出:

WARNING Graphics requested but DISPLAY is not set. Not running virt-viewer.
WARNING No console to launch for the guest, defaulting to --wait -1

Starting install...
Creating domain... | 0 B 00:00:01
Domain installation still in progress. Waiting for installation to complete.
Domain has shutdown. Continuing.
Domain creation completed.
Restarting guest.

未分类

我们来分别讲解以上的命令和看到的每个选项的作用。

  • –name:这个选项定义虚拟机名字。在我们的案例中,这个虚拟机的名字是 Ubuntu-16.04。
  • –ram=512:给虚拟机分配 512MB 内存。
  • –vcpus=1:指明虚拟机中 CPU 核心的数量。
  • –cpu host:通过暴露宿主机 CPU 的配置给访客系统来优化 CPU 属性。
  • –hvm:要求完整的硬件虚拟化。
  • –disk path:虚拟机硬盘的位置和大小。在我们的示例中,我分配了 8GB 的硬盘。
  • –cdrom:安装 ISO 镜像的位置。请注意你必须在这个位置真的有一个 ISO 镜像。
  • –graphics vnc:允许 VNC 从远程客户端访问虚拟机。

使用 VNC 客户端访问虚拟机

现在,我们在远程桌面系统上使用 SSH 登入到 Ubuntu 服务器上(虚拟化服务器),如下所示。

$ ssh [email protected]

在这里,sk 是我的 Ubuntu 服务器的用户名,而 192.168.225.22 是它的 IP 地址。

运行如下的命令找出 VNC 的端口号。我们从一个远程系统上访问虚拟机需要它。

$ sudo virsh dumpxml Ubuntu-16.04 | grep vnc

示例输出:

<graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'>

未分类

记下那个端口号 5900。安装任意的 VNC 客户端应用程序。在本指南中,我们将使用 TigerVnc。TigerVNC 是 Arch Linux 默认仓库中可用的客户端。在 Arch 上安装它,运行如下命令:

$ sudo pacman -S tigervnc

在安装有 VNC 客户端的远程客户端系统上输入如下的 SSH 端口转发命令。

$ ssh [email protected] -L 5900:127.0.0.1:5900

再强调一次,192.168.225.22 是我的 Ubuntu 服务器(虚拟化服务器)的 IP 地址。

然后,从你的 Arch Linux(客户端)打开 VNC 客户端。

在 VNC 服务器框中输入 localhost:5900,然后点击 “Connect” 按钮。

未分类

然后就像你在物理机上安装系统一样的方法开始安装 Ubuntu 虚拟机。

未分类

未分类

同样的,你可以根据你的服务器的硬件情况配置多个虚拟机。

或者,你可以使用 virt-viewer 实用程序在访客机器中安装操作系统。virt-viewer 在大多数 Linux 发行版的默认仓库中都可以找到。安装完 virt-viewer 之后,运行下列的命令去建立到虚拟机的访问连接。

$ sudo virt-viewer --connect=qemu+ssh://192.168.225.22/system --name Ubuntu-16.04

管理虚拟机

使用管理用户接口 virsh 从命令行去管理虚拟机是非常有趣的。命令非常容易记。我们来看一些例子。

查看运行的虚拟机,运行如下命令:

$ sudo virsh list

或者,

$ sudo virsh list --all

示例输出:

Id Name State
----------------------------------------------------
 2 Ubuntu-16.04 running

未分类

启动一个虚拟机,运行如下命令:

$ sudo virsh start Ubuntu-16.04

或者,也可以使用虚拟机 id 去启动它。

未分类

正如在上面的截图所看到的,Ubuntu 16.04 虚拟机的 Id 是 2。因此,启动它时,你也可以像下面一样只指定它的 ID。

$ sudo virsh start 2

重启动一个虚拟机,运行如下命令:

$ sudo virsh reboot Ubuntu-16.04

示例输出:

Domain Ubuntu-16.04 is being rebooted

未分类

暂停一个运行中的虚拟机,运行如下命令:

$ sudo virsh suspend Ubuntu-16.04

示例输出:

Domain Ubuntu-16.04 suspended

让一个暂停的虚拟机重新运行,运行如下命令:

$ sudo virsh resume Ubuntu-16.04

示例输出:

Domain Ubuntu-16.04 resumed

关闭一个虚拟机,运行如下命令:

$ sudo virsh shutdown Ubuntu-16.04

示例输出:

Domain Ubuntu-16.04 is being shutdown

完全移除一个虚拟机,运行如下的命令:

$ sudo virsh undefine Ubuntu-16.04
$ sudo virsh destroy Ubuntu-16.04

示例输出:

Domain Ubuntu-16.04 destroyed

未分类

关于它的更多选项,建议你去查看 man 手册页:

$ man virsh

今天就到这里吧。开始在你的新的虚拟化环境中玩吧。对于研究和开发者、以及测试目的,KVM 虚拟化将是很好的选择,但它能做的远不止这些。如果你有充足的硬件资源,你可以将它用于大型的生产环境中。如果你还有其它好玩的发现,不要忘记在下面的评论区留下你的高见。

Ubuntu Server下Docker实战 02: Docker进阶配置

在上一篇文章里《Ubuntu Server下Docker实战 01: 安装Docker,见 https://www.linuxidc.com/Linux/2018-10/154873.htm》,我们已经把docker安装起来了,并运行了一个hello-world

这一篇,我们继续讲进阶配置。

1. 配置docker在系统启动时候自动启动

sudo /lib/systemd/systemd-sysv-install enable docker
sudo systemctl enable docker
sudo systemctl restart docker.service

这样我们重启服务器后,docker服务也自动启动了

2. 转移docker数据文件路径

修改配置文件

vi /etc/default/docker

我们假设要把数据移动到 /data/docker下,那么在配置文件中添加如下内容,保存退出

OPTIONS=--graph="/data/docker" -H fd://

停止docker

service docker stop

确认不存在 /data/docker 目录

rm -rf /data/docker

转移文件,将docker数据从/var/lib/docker 移到 /data/docker,并创建连接

sudo mv /var/lib/docker /data/docker
sudo ln -s /data/docker /var/lib

启动docker

service docker start

3. 创建docker子网,docker默认使用 172.17.0.0/24 子网,但我们可能有自己的需要,那么可以通过下面方法创建子网

显示已有子网

docker network ls

创建一个172.18.0.0/24的子网

docker network create --subnet=172.18.0.0/24 dockernetwork

我们看下现在的子网列表

docker network ls

NETWORK ID          NAME                DRIVER              SCOPE
b295fdf8279f        bridge              bridge              local
b338774b3d02        dockernetwork      bridge              local
88b7535d052a        host                host                local
79814a08c6d1        none                null                local

如何在 Ubuntu Linux 中使用 RAR 文件

RAR 是一种非常好的归档文件格式。但相比之下 7-zip 能提供了更好的压缩率,并且默认情况下还可以在多个平台上轻松支持 Zip 文件。不过 RAR 仍然是最流行的归档格式之一。然而 Ubuntu 自带的归档管理器却不支持提取 RAR 文件,也不允许创建 RAR 文件。

办法总比问题多。只要安装 unrar 这款由 RARLAB 提供的免费软件,就能在 Ubuntu 上支持提取 RAR 文件了。你也可以安装 rar 试用版来创建和管理 RAR 文件。

提取 RAR 文件

在未安装 unrar 的情况下,提取 RAR 文件会报出“未能提取”错误,就像下面这样(以 Ubuntu 18.04为例):

未分类

Error in RAR extraction in Ubuntu

如果要解决这个错误并提取 RAR 文件,请按照以下步骤安装 unrar:

打开终端并输入:

sudo apt-get install unrar

安装 unrar 后,直接输入 unrar 就可以看到它的用法以及如何使用这个工具处理 RAR 文件。

最常用到的功能是提取 RAR 文件。因此,可以通过右键单击 RAR 文件并执行提取,也可以借助此以下命令通过终端执行操作:

unrar x FileName.rar

结果类似以下这样:

未分类

Using unrar in Ubuntu

如果压缩文件没放在家目录中,就必须使用 cd 命令移动到目标目录下。例如 RAR 文件如果在 Music目录下,只需要使用 cd Music 就可以移动到相应的目录,然后提取 RAR 文件。

创建和管理 RAR 文件

未分类

Using rar archive in Ubuntu Linux

unrar 不允许创建 RAR 文件。因此还需要安装 rar 命令行工具才能创建 RAR 文件。

要创建 RAR 文件,首先需要通过以下命令安装 rar:

sudo apt-get install rar

按照下面的命令语法创建 RAR 文件:

rar a ArchiveName File_1 File_2 Dir_1 Dir_2

按照这个格式输入命令时,它会将目录中的每个文件添加到 RAR 文件中。如果需要某一个特定的文件,就要指定文件确切的名称或路径。

默认情况下,RAR 文件会放置在家目录中。

以类似的方式,可以更新或管理 RAR 文件。同样是使用以下的命令语法:

rar u ArchiveName Filename

在终端输入 rar 就可以列出 RAR 工具的相关命令。

总结

现在你已经知道如何在 Ubuntu 上管理 RAR 文件了,你会更喜欢使用 7-zip、Zip 或 Tar.xz 吗?