在Ubuntu 18.04上安装Caddy Web服务器和Let’s Encrypt SSL
在本文中,我们将介绍在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设置页面。