帮酷LOGO
0 0 评论
文章标签:CAD  WEB  COM  Server  Ubuntu  Source  license  Compliance  

本教程帮助希望安装Caddy服务器的客户符合新的EULA ,在撰写本文时,从源代码编译Caddy,并且创建自己的二进制文件时,无论你是个人网站还是商业行为,都不需要付费许可。遵循本教程中的步骤之前,检查最新的EULA是很重要的。

功能:

  • 简短,易于理解的配置
  • 用go构建
  • 可扩展日志记录
  • 非常快速的静态文件交付
  • 动态网站代理支持
  • 内部配置检查器
  • 静态二进制
  • 默认情况下使用推荐的Mozilla现代密码
  • MITM (中间的人)检测
  • SNI (服务器名称指示器)支持
  • 自动 Let's Encrypt generation/retrieval/renewal
  • OCSP支持
  • 虚拟主机支持
  • Markdown2html呈现支持
  • 内置HTTP 2QUIC & web socket支持
  • 负载均衡,反向代理& SSL终端支持

前提条件

系统更新

按照如下方式更新系统。


sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y

从源安装Caddy

下载Caddy服务器源代码的最新版本,它不包含Caddy的第三方插件。


go get -u github.com/mholt/caddy/caddy && go get -u github.com/caddyserver/builds && cd go/src/github.com/mholt/caddy/caddy

可选:如果你需要第三方tls.dns.vultr dnsproviders插件,请复制以下内容。这会同时下载Caddy源代码和第三方插件(如果你希望使用它。


go get -u github.com/mholt/caddy/caddy && go get -u github.com/caddyserver/builds && go get -u github.com/caddyserver/dnsproviders/vultr && cd go/src/github.com/mholt/caddy/caddy && sed -i '38it_"github.com/caddyserver/dnsproviders/vultr"' caddymain/run.go

编译caddy二进制文件,编译时需要不到一分钟。

 
go run build.go

 

检查caddy二进制文件的版本和插件列表。


./caddy -version && ./caddy -plugins

复制位于的Caddy二进制文件~/go/src/github.com/mholt/caddy/caddy//usr/bin目录并将目录更改为用户目录的root 。


sudo cp caddy /usr/bin/ && cd

使用echo command创建caddy,service systemd文件,


sudo su -c"echo -e '[Unit]nAfter=network-online.targetnDescription=Caddy HTTP/2 web servernDocumentation=https://caddyserver.com/docsnWants=network.targetnn[Service]nAmbientCapabilities=CAP_NET_BIND_SERVICEnCapabilityBoundingSet=CAP_NET_BIND_SERVICEnEnvironment=CADDYPATH=/etc/ssl/caddyn## Environment=VULTR_API_KEY=XXXXXXXX ##Uncomment and add your API (API tab on the Settings page) if using the DNS Manager to handle DNS for your VPS instance.nExecReload=/bin/kill -USR1 $MAINPIDnExecStart=/usr/bin/caddy -agree=true -conf=/etc/caddy/caddy.conf -quic -root=/var/tmpnGroup=www-datanKillMode=mixednKillSignal=SIGQUITnLimitNOFILE=1048576nLimitNPROC=512nNoNewPrivileges=truenPrivateDevices=truenPrivateTmp=truenProtectHome=truenProtectSystem=fullnReadWriteDirectories=/etc/ssl/caddynRestart=on-abnormalnTimeoutStopSec=5snUser=www-datann[Install]nWantedBy=multi-user.target' > /etc/systemd/system/caddy.service"

创建/etc/caddy/目录,它会包含Caddy服务器配置文件; 包含Let's Encrypt证书的/etc/ssl/caddy/目录; 包含样例html文件的/usr/share/caddy/目录; 和/var/log/caddy/目录,它会使用mkdir命令包含Caddy服务器日志,使用chown命令将组所有权更改为/etc/ssl/caddy//var/log/caddy/目录中的www-data组,使用chmod命令保护/etc/ssl/caddy/目录,删除世界可执行的,可读的和可写的权限。


sudo mkdir -p {/etc/{caddy/conf.d,ssl/caddy},/usr/share/caddy,/var/log/caddy} && sudo chown www-data /etc/ssl/caddy/ /var/log/caddy/ && sudo chmod 750 /etc/ssl/caddy/

启用Caddy服务器。


sudo systemctl daemon-reload && sudo systemctl enable caddy

配置Caddy服务器

下面的每个部分都介绍了如何为不同的场景配置Caddy。你可以使用这些引用,并跳到满足你要求的部分。

设置Caddy以显示静态HTML页面(非ssl )


sudo su -c 'echo -e"import conf.d/*.conf" > /etc/caddy/caddy.conf' && sudo su -c 'echo -e"example.com:80 {ntredir http://www.example.com{url}n}nwww.example.com:80 {nterrors /var/log/caddy/example.com-error.logntimport header.protectionntlog /var/log/caddy/example.com-access.logntroot /var/www/html/n}" > /etc/caddy/conf.d/example.com.conf' && sudo su -c 'echo -e"header / {ntX-XSS-Protection"1; mode=block"ntX-Content-Type-Options"nosniff"ntX-Frame-Options"SAMEORIGIN"n}" > /etc/caddy/conf.d/header.protection'

创建/var/www/html目录,并且使用echo命令创建一个简单的index.html


sudo mkdir -p /var/www/html && sudo su -c 'echo -e"<!DOCTYPE html>"n"<head>"nt"<meta charset="utf-8">"nt"<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">"nt"<title>Static HTML Page"nt"</title>"nt"<meta name="description" content="">"nt"<meta name="viewport" content="width=device-width, initial-scale=1">"n"</head>"n"<body>"nt"<p>Caddy is working."nt"</p>"n"</body>"n"</html>" > /var/www/html/index.html'

启动Caddy服务器。


sudo systemctl start caddy

打开你的网络浏览器访问你的VPS实例的域名(example.com )。

设置Caddy以显示静态HTML页面(SSL )


sudo su -c 'echo -e"import conf.d/*.conf" > /etc/caddy/caddy.conf' && sudo su -c 'echo -e"example.com {ntredir https://www.example.com{url}n}nwww.example.com {nterrors /var/log/caddy/example.com-error.logntimport header.protectionntlog /var/log/caddy/example.com-access.logntroot /var/www/html/nttls joe.q.public@example.comn}" > /etc/caddy/conf.d/example.com.conf' && sudo su -c 'echo -e"header / {ntX-XSS-Protection"1; mode=block"ntX-Content-Type-Options"nosniff"ntX-Frame-Options"SAMEORIGIN"n}" > /etc/caddy/conf.d/header.protection'

创建/var/www/html目录,并且使用echo命令创建一个简单的index.html


sudo mkdir -p /var/www/html && sudo su -c 'echo -e"<!DOCTYPE html>"n"<head>"nt"<meta charset="utf-8">"nt"<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">"nt"<title>Static HTML Page"nt"</title>"nt"<meta name="description" content="">"nt"<meta name="viewport" content="width=device-width, initial-scale=1">"n"</head>"n"<body>"nt"<p>Caddy is working."nt"</p>"n"</body>"n"</html>" > /var/www/html/index.html'

启动Caddy服务器。


sudo systemctl start caddy

打开你的网络浏览器到你的VPS实例的域名 (example.com )。

通过代理PHP fpm服务器来处理PHP页面(非ssl )


sudo su -c 'echo -e"import conf.d/*.conf" > /etc/caddy/caddy.conf' && sudo su -c 'echo -e"example.com:80 {ntredir http://www.example.com{url}n}nwww.example.com:80 {nterrors /var/log/caddy/example.com-error.logntfastcgi / /var/run/php/php7.0-fpm.sock phpntimport header.protectionntlog /var/log/caddy/example.com-access.logntroot /var/www/html/n}" > /etc/caddy/conf.d/example.com.conf' && sudo su -c 'echo -e"header / {ntX-XSS-Protection"1; mode=block"ntX-Content-Type-Options"nosniff"ntX-Frame-Options"SAMEORIGIN"n}" > /etc/caddy/conf.d/header.protection'

使用echo命令在/var/www/html目录中创建一个简单的index.php


sudo su -c 'echo -e"<?phpnphpinfo();n?>" > /var/www/html/index.php'

安装PHP fpm服务器来处理PHP文件。


sudo apt install php-fpm -y

启动Caddy服务器。


sudo systemctl start caddy

打开你的网络浏览器到你的VPS实例的域名(example.com )。

通过代理PHP fpm服务器来处理PHP页面(SSL )


sudo su -c 'echo -e"import conf.d/*.conf" > /etc/caddy/caddy.conf' && sudo su -c 'echo -e"example.com {ntredir https://www.example.com{url}n}nwww.example.com {nterrors /var/log/caddy/example.com-error.logntfastcgi / /var/run/php/php7.0-fpm.sock phpntimport header.protectionntlog /var/log/caddy/example.com-access.logntroot /var/www/html/nttls joe.q.public@example.comn}" > /etc/caddy/conf.d/example.com.conf' && sudo su -c 'echo -e"header / {ntX-XSS-Protection"1; mode=block"ntX-Content-Type-Options"nosniff"ntX-Frame-Options"SAMEORIGIN"n}" > /etc/caddy/conf.d/header.protection'

使用echo命令在/var/www/html目录中创建一个简单的index.php


sudo su -c 'echo -e"<?phpnphpinfo();n?>" > /var/www/html/index.php'

安装PHP fpm服务器来处理PHP文件。


sudo apt install php-fpm -y

启动Caddy服务器。


sudo systemctl start caddy

打开你的网络浏览器到你的VPS实例的域名 (example.com )。

通过代理php fpm服务器(非ssl )运行Wordpress


sudo su -c 'echo -e"import conf.d/*.conf" > /etc/caddy/caddy.conf' && sudo su -c 'echo -e"example.com:80 {ntredir http://www.example.com{url}n}nwww.example.com:80 {nterrors /var/log/caddy/example.com-error.logntfastcgi / /var/run/php/php7.0-fpm.sock phpntimport header.protectionntlog /var/log/caddy/example.com-access.logntrewrite {nttif {path} not_starts_with /wp-adminnttif {path} not_starts_with /wp-contentnttif {path} not_starts_with /wp-includesnttto {path} {path}/ /index.phpnt}ntroot /var/www/html/n}" > /etc/caddy/conf.d/example.com.conf' && sudo su -c 'echo -e"header / {ntX-XSS-Protection"1; mode=block"ntX-Content-Type-Options"nosniff"ntX-Frame-Options"SAMEORIGIN"n}" > /etc/caddy/conf.d/header.protection'

安装unzip程序以解压缩压缩的文件(latest.tar.gz )。


sudo apt install unzip

latest.tar.gz文件下载到/tmp/目录,将/var/www/html目录的用户和组权限更改为用户www-data和组www-data,并将latest.tar.gz文件的内容解压缩到/var/www/html/目录。


sudo su - www-data -c"wget -N -P /tmp/ -q https://wordpress.org/latest.tar.gz" -s /bin/bash && sudo chown -R www-data.www-data /var/www/html && sudo su - www-data -c"tar -C /var/www/html/ -zxf /tmp/latest.tar.gz --strip-components=1" -s /bin/bash && sudo su - www-data -c"rm /tmp/latest.tar.gz" -s /bin/bash

安装PHP服务器来处理PHP文件和需要与Wordpress交互所需的PHP扩展。


sudo apt install php-curl php-fpm php-imagick php-mbstring php-mcrypt php-mysql php-pspell php-xmlrpc -y

安装MariaDB数据库服务器以存储Wordpress的数据。


sudo apt install mariadb-server -y

可选:禁用skip-name-resolve以避免客户端连接的DNS查找惩罚,关闭数据库TCP/IP监听器。


sudo sed -i '26iskip-name-resolvenskip-networking' /etc/mysql/mariadb.conf.d/50-server.cnf

将MariaDB数据库服务器重新启动到新配置更改。


sudo systemctl restart mysql

保护MariaDB数据库服务器,将第一个命令中的********占位符替换为新的root密码。


sudo mysql -e"UPDATE mysql.user SET Password=PASSWORD('********') WHERE User='root'" && sudo mysql -e"DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1')" && sudo mysql -e"DELETE FROM mysql.user WHERE User=''" && sudo mysql -e"DELETE FROM mysql.db WHERE Db='test' OR Db='test_%'" && sudo mysql -e"" && sudo mysql -e"FLUSH PRIVILEGES"

为Wordpress创建一个数据库wordpress_example_com ; 特定的数据库用户,wordpress_example_com_admin and minimal database permissions necessary,(altercreatedeletedropindexinsertselect,&;; UPDATE ),用于Wordpress内核和插件安装'功能和核心/插件更新,用你的实际域名替换example-com wordpress-example-com _管理员user,


sudo mysql -e"CREATE DATABASE wordpress_example_com DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci" && sudo mysql -e"CREATE USER 'wordpress_example_com_admin'@'localhost' IDENTIFIED BY '********'; GRANT USAGE ON *.* TO 'wordpress_example_com_admin'@'localhost';" && sudo mysql -e"GRANT ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT, UPDATE ON wordpress_example_com.* TO 'wordpress_example_com_admin'@'localhost';" && sudo mysql -e"FLUSH PRIVILEGES"

/var/www/html目录中创建Wordpress配置文件wp-config.php ,用你的实际域名替换example-com wordpress-example-com _管理员user,


sudo su - www-data -c 'echo -e"<?phpndefine(''DB_CHARSET'''', ''utf8'''');ndefine(''DB_COLLATE'''', '''''');ndefine(''DB_HOST'''', ''localhost'''');ndefine(''DB_NAME'''', ''wordpress_example_com'''');ndefine(''DB_PASSWORD'''', ''********'''');ndefine(''DB_USER'''', ''wordpress_example_com_admin'''');ndefine(''FS_METHOD'''', ''direct'''');ndefine(''WP_DEBUG'''', false);" > /var/www/html/wp-config.php' -s /bin/bash && sudo su -c www-data -c"curl -s https://api.wordpress.org/secret-key/1.1/salt/ >> /var/www/html/wp-config.php" && sudo su - www-data -c 'echo -e"$table_prefix = ''wp_'''';nif ( !defined(''ABSPATH'''') )ntdefine(''ABSPATH'''', dirname(__FILE__) . ''/'''');nrequire_once(ABSPATH . ''wp-settings.php'''');nfunction _remove_script_version( $src ){ if ( strpos( $src, ''ver='''' ) ) $src = remove_query_arg( ''ver'''', $src ); return $src; }nadd_filter( ''script_loader_src'''', ''_remove_script_version'''', 15, 1 );nadd_filter( ''style_loader_src'''', ''_remove_script_version'''', 15, 1 );" >> /var/www/html/wp-config.php' -s /bin/bash

启动Caddy服务器。


sudo systemctl start caddy

打开你的网络浏览器到你的VPS实例的域名 (example.com ),你将看到一个语言选择页面,选择该语言后,点击右下角的蓝色Continue按钮,转到Wordpress安装的下一步。

在下一页,在Site Title字段(1)中输入网站的标题,这是Username字段(2)中管理员的用户名,使用生成的密码或在Password字段(3)中输入你自己的密码,根据你的站点是否在构建阶段,在Your Email字段(4)中输入有效的电子邮件地址,并启用或离开Search Engine Visibility选项(5),

你将进入Wordpress管理区,Wordpress的初始安装现在完成了。

通过代理php fpm服务器(非ssl )运行Wordpress


sudo su -c 'echo -e"import conf.d/*.conf" > /etc/caddy/caddy.conf' && sudo su -c 'echo -e"example.com {ntredir https://www.example.com{url}n}nwww.example.com {nterrors /var/log/caddy/example.com-error.logntfastcgi / /var/run/php/php7.0-fpm.sock phpntimport header.protectionntlog /var/log/caddy/example.com-access.logntrewrite {nttif {path} not_starts_with /wp-adminnttif {path} not_starts_with /wp-contentnttif {path} not_starts_with /wp-includesnttto {path} {path}/ /index.phpnt}ntroot /var/www/html/nttls joe.q.public@example.comn}" > /etc/caddy/conf.d/example.com.conf' && sudo su -c 'echo -e"header / {ntX-XSS-Protection"1; mode=block"ntX-Content-Type-Options"nosniff"ntX-Frame-Options"SAMEORIGIN"n}" > /etc/caddy/conf.d/header.protection'

安装unzip程序以解压压缩的文件,(latest.tar.gz )。


sudo apt install unzip

latest.tar.gz文件下载到/tmp/目录,将/var/www/html目录的用户和组权限更改为用户www-data和组www-data,并将latest.tar.gz文件的内容解压缩到/var/www/html/目录。


sudo su - www-data -c"wget -N -P /tmp/ -q https://wordpress.org/latest.tar.gz" -s /bin/bash && sudo chown -R www-data.www-data /var/www/html && sudo su - www-data -c"tar -C /var/www/html/ -zxf /tmp/latest.tar.gz --strip-components=1" -s /bin/bash && sudo su - www-data -c"rm /tmp/latest.tar.gz" -s /bin/bash

安装PHP服务器来处理PHP文件和需要与Wordpress交互所需的PHP扩展。


sudo apt install php-curl php-fpm php-imagick php-mbstring php-mcrypt php-mysql php-pspell php-xmlrpc -y

安装MariaDB数据库服务器以存储Wordpress的数据。


sudo apt install mariadb-server -y

可选:禁用skip-name-resolve以避免客户端连接的DNS查找惩罚,关闭数据库tcp/ip监听器,并仅使用unix套接字。


sudo sed -i '26iskip-name-resolvenskip-networking' /etc/mysql/mariadb.conf.d/50-server.cnf

将MariaDB数据库服务器重新启动到新配置更改。


sudo systemctl restart mysql

保护MariaDB数据库服务器,将第一个命令中的********占位符替换为新的root密码。


sudo mysql -e"UPDATE mysql.user SET Password=PASSWORD('********') WHERE User='root'" && sudo mysql -e"DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1')" && sudo mysql -e"DELETE FROM mysql.user WHERE User=''" && sudo mysql -e"DELETE FROM mysql.db WHERE Db='test' OR Db='test_%'" && sudo mysql -e"" && sudo mysql -e"FLUSH PRIVILEGES"

为Wordpress创建一个数据库wordpress_example_com ; 特定的数据库用户,wordpress_example_com_admin and minimal database permissions necessary(alter,create,delete,drop,index,insert,select,,&;; UPDATE )用于Wordpress核心和插件安装"日常功能和核心/插件更新,用你的实际域名替换example-com wordpress-example-com _管理员user,


sudo mysql -e"CREATE DATABASE wordpress_example_com DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci" && sudo mysql -e"CREATE USER 'wordpress_example_com_admin'@'localhost' IDENTIFIED BY '********'; GRANT USAGE ON *.* TO 'wordpress_example_com_admin'@'localhost';" && sudo mysql -e"GRANT ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT, UPDATE ON wordpress_example_com.* TO 'wordpress_example_com_admin'@'localhost';" && sudo mysql -e"FLUSH PRIVILEGES"

/var/www/html目录中创建Wordpress配置文件wp-config.php ,用你的实际域名替换example-com wordpress-example-com _管理员user,


sudo su - www-data -c 'echo -e"<?phpndefine(''DB_CHARSET'''', ''utf8'''');ndefine(''DB_COLLATE'''', '''''');ndefine(''DB_HOST'''', ''localhost'''');ndefine(''DB_NAME'''', ''wordpress_example_com'''');ndefine(''DB_PASSWORD'''', ''********'''');ndefine(''DB_USER'''', ''wordpress_example_com_admin'''');ndefine(''FS_METHOD'''', ''direct'''');ndefine(''WP_DEBUG'''', false);" > /var/www/html/wp-config.php' -s /bin/bash && sudo su -c www-data -c"curl -s https://api.wordpress.org/secret-key/1.1/salt/ >> /var/www/html/wp-config.php" && sudo su - www-data -c 'echo -e"$table_prefix = ''wp_'''';nif ( !defined(''ABSPATH'''') )ntdefine(''ABSPATH'''', dirname(__FILE__) . ''/'''');nrequire_once(ABSPATH . ''wp-settings.php'''');nfunction _remove_script_version( $src ){ if ( strpos( $src, ''ver='''' ) ) $src = remove_query_arg( ''ver'''', $src ); return $src; }nadd_filter( ''script_loader_src'''', ''_remove_script_version'''', 15, 1 );nadd_filter( ''style_loader_src'''', ''_remove_script_version'''', 15, 1 );" >> /var/www/html/wp-config.php' -s /bin/bash

启动Caddy服务器。


sudo systemctl start caddy

打开你的网络浏览器到你的VPS实例的域名 (example.com ),选择该语言后,点击右下角的蓝色Continue按钮,转到Wordpress安装的下一步。

在下一页,在Site Title字段(1)中输入网站的标题,这是Username字段(2)中管理员的用户名,使用生成的密码或在Password字段(3)中输入你自己的密码,根据你的站点是否在构建阶段,在Your Email字段(4)中输入有效的电子邮件地址,并启用或离开Search Engine Visibility选项(5),当你满意的时候,点击灰色Install Wordpress按钮(6)来完成Wordpress设置。

你将进入Wordpress管理区,Wordpress的初始安装现在完成了。



文章标签:COM  WEB  Server  Source  Ubuntu  license  CAD  Compliance  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语