在Ubuntu 18.04上安装Caddy Web服务器和Let’s Encrypt SSL

时间:2020-02-23 14:31:08  来源:igfitidea点击:

在本文中,我们将介绍在Ubuntu 18.04上安装Caddy Web服务器的步骤,以及如何使用Let's Encrypt SSL证书保护它的安全。
Caddy是开源的,可立即投入生产的产品,旨在快速,易用且使工作效率更高。
Caddy可用于Windows,Mac,Linux,BSD,Solaris和Android。

Caddy Web服务器的功能

使用Caddyfile轻松配置和管理它是安全的–默认情况下已启用自动HTTPS(通过Let's Encrypt)。
默认情况下,Cady使用HTTP/2.
通过使用虚拟主机支持多个站点托管TLS会话票证密钥旋转以获得更安全的连接。
动态站点和静态站点的Caddy都具有零宕机时间重载Caddy是用Go编写的,并且没有外部依赖关系–该二进制文件完全独立,可以在包括容器在内的每个平台上运行。

在Ubuntu 18.04 LTS上安装Caddy Web服务器

我们有两个选择可在Ubuntu 18.04服务器上安装Caddy Web服务器。
从源代码下载预构建的binaryBuild Caddy

从二进制文件在Ubuntu 18.04上安装Caddy Web服务器

在Ubuntu 18.04上安装Caddy Web服务器的最简单方法是下载一个就绪的二进制文件。
通过运行以下命令在Ubuntu 18,04上轻松安装caddy

curl https://getcaddy.com | sudo bash -s personal

-s personal用于指定我们使用的是个人许可证,用于商业用途的商业AD。
示例输出:

Downloading Caddy for linux/amd64 (personal license)...
Download verification OK
Extracting...
Putting caddy in /usr/local/bin (Jan require password)
Caddy 0.11.0 (non-commercial use only)
Successfully installed

检查二进制文件的位置和版本

# which caddy
/usr/local/bin/caddy
# caddy -version
Caddy 0.11.0 (non-commercial use only)

使用插件安装Caddy

我们还可以使用所需的插件安装Caddy,例如,安装插件:http.cachedns.cloudflarehttp.ratelimithttp.githttp.hugohttp.uploadhttp.prometheushttp.filemanagerhttp.geoiphttp.expires

我们将运行:

curl https://getcaddy.com | bash -s personal http.cache,http.expires,http.filemanager,http.geoip,http.git,http.hugo,http.prometheus,http.ratelimit,http.upload,http.webdav,net,tls.dns.cloudflare

我们可以查看Caddy插件的完整列表,为caddy二进制文件提供以非root用户身份绑定到特权端口(例如80、443)的功能:

sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/caddy

设置所需的用户,组和目录:

sudo groupadd -g 33 www-data
sudo useradd \
  -g www-data --no-user-group \
  --home-dir /var/www --no-create-home \
  --shell /usr/sbin/nologin \
  --system --uid 33 www-data
sudo mkdir /etc/caddy
sudo chown -R root:root /etc/caddy
sudo mkdir /etc/ssl/caddy
sudo chown -R root:www-data /etc/ssl/caddy
sudo chmod 0770 /etc/ssl/caddy

创建Caddy Systemd服务单元

安装systemd服务单元配置文件,重新加载systemd守护程序。

wget https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service
sudo cp caddy.service /etc/systemd/system/
sudo chown root:root /etc/systemd/system/caddy.service
sudo chmod 644 /etc/systemd/system/caddy.service
sudo systemctl daemon-reload

使用Caddy Web Server –托管WordPress

我们将考虑一个在Ubuntu 18.04上使用Caddy Web服务器托管由WordPress驱动的的示例。
要运行WordPress,我们需要PHP,Web服务器和数据库服务器

sudo apt -y update
sudo apt -y install php-fpm php-mysql php-curl php-gd php-mbstring php-common php-xml php-xmlrpc

安装和配置MariaDB数据库服务器

使用以下命令安装和配置MariaDB数据库服务器:在Ubuntu 18.04和CentOS 7上安装MariaDB 10.x完成后,以root用户身份登录并为WordPress创建数据库

$mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 520
Server version: 10.3.9-MariaDB-1:10.3.9+maria~bionic-log mariadb.org binary distribution
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE wp_site;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON wp_site.* to 'wp_user'@'localhost' IDENTIFIED BY 'StrongPassword';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> quit
Bye

下载WordPress并安装

现在下载WordPress并解压缩存档

wget http://wordpress.org/latest.tar.gz
tar xvf latest.tar.gz

这会将压缩包的所有内容提取到工作目录上名为wordpress的文件夹中。 wordpress文件夹到 /var/www目录

sudo mv wordpress /var/www

更改用户的所有权权限 www-data和组。

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

配置WordPress数据库连接

mv /var/www/wordpress/wp-config-sample.php /var/www/wordpress/wp-config.php

编辑文件进行配置

sudo vim /var/www/wordpress/wp-config.php

设置以下变量

//** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wp_site');
/** MySQL database username */
define('DB_USER', 'wp_user');
/** MySQL database password */
define('DB_PASSWORD', 'StrongPassword');
/** MySQL hostname */
define('DB_HOST', 'localhost');
/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');
/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

配置Caddy服务于WordPress

我们已经准备好安装WordPress,现在我们需要配置Caddy Web服务器来为我们的WordPress提供服务。
首先在以下位置创建Caddy配置文件 /etc/caddy/Caddyfile

sudo vim /etc/caddy/Caddyfile

添加内容

example.com {
    tls Hyman@theitroad
    root /var/www/wordpress
    gzip
    fastcgi//run/php/php7.2-fpm.sock php
    rewrite {
        if {path} not_match ^\/wp-admin
        to {path} {path}//index.php?{query}
    }
}

代替 example.com与WordPress的实际域名和 Hyman@theitroad带有用于请求"让我们加密"证书的实际电子邮件地址。
我们正在使用 php-fpm通过fastcgi支持php.

启动caddy服务

sudo systemctl start caddy.service

如果启动成功,我们应该会收到一条成功消息:

# systemctl status caddy
● caddy.service - Caddy HTTP/2 web server
   Loaded: loaded (/etc/systemd/system/caddy.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2016-09-02 14:34:26 EAT; 7s ago
     Docs: https://caddyserver.com/docs
 Main PID: 32443 (caddy)
    Tasks: 12 (limit: 4704)
   CGroup: /system.slice/caddy.service
           └─32443 /usr/local/bin/caddy -log /var/log/caddy.log -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp
Sep 02 14:34:26 wp.theitroad.com systemd[1]: Started Caddy HTTP/2 web server.
Sep 02 14:34:34 wp.theitroad.com caddy[32443]: Activating privacy features... done.
Sep 02 14:34:34 wp.theitroad.com caddy[32443]: https://wp.theitroad.com
Sep 02 14:34:34 wp.theitroad.com caddy[32443]: //wp.theitroad.com

通过访问访问WordPress仪表板。 https://example.com我们应该会获得最初的wordpress设置页面。