CentOS 服务器使用 Certbot 安装配置 Let’s Encrypt SSL证书


lets-encrypt

Let's Encrypt是一个于2015年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安装证书的复杂流程,并推广使万维网服务器的加密连接无所不在,为安全网站提供免费的SSL/TLS证书。

申请 Let's Encript 证书主要有以下三种方式:

这里我们以 Certbot 脚本的方式为例,介绍 CentOS 下 Nginx 安装配置 Let's Encrypt 的过程。

安装 Certbot

sudo yum install certbot

自动安装配置

执行:

sudo certbot --nginx

Certbot 会查找当前服务器上的 Nginx 里面的虚拟主机,为你签发 SSL 证书,并且会自动修改主机的 Nginx 配置,让它支持 HTTPS,根据提示一步一步操作即可。

手动安装配置

申请证书

# 使用方法:certbot certonly --webroot -w [Web站点目录] -d [站点域名] -m [联系人email地址] --agree-tos
# 例如:
certbot certonly --webroot -w /opt/www/mydomain.com -d mydomain.com -m myname@gmail.com --agree-tos

完成后,在 /etc/letsencrypt/live/ 会生成对应域名的文件夹,里面有指向证书的快捷方式。

配置 SSL 证书

server {
 server_name mydomain.com;
 listen 443;
 ssl on;
 ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
 ...

自动更新证书

Let's Encrypt 证书只有 90 天有效期,我们可以通过 cron 定期自动更新证书,(如果系统未安装 cronie,需先安装)执行:

crontab -e

如果我们希望每周一凌晨 2:30 自动执行证书更新操作,并自动重启nginx服务,添加一行:

30 2 * * 1 sudo /usr/bin/certbot renew --quiet && sudo /usr/bin/systemctl reload nginx

证书在到期前30天内才能更新,多余的更新会自动忽略掉的。

常用工具的安装


install-tools

本地开发环境搭建还成后,需要在服务器上安装一些常用的工具,如 Git,Composer,unzip,WP-CLI 等等。

Git

Git 可以为项目做版本控制。

安装 Git:

sudo yum install git2u

如果系统里已经包含了低版本的 Git,需要先将系统中的删除才能继续安装。

Git 的简单配置:

// 设置用户名
git config --global user.name "iiiRyan"

// 设置用户邮箱地址
git config --global user.email "85ryan.blue@gmail.com"

Composer

Composer 是 PHP 的包管理工具。

下载 Composer 安装:

curl -O https://getcomposer.org/installer

使用 Composer 安装器安装 Composer:

php installer

把 Composer 放在 /usr/local/bin 这个目录下,执行:

sudo mv composer.phar /usr/local/bin/composer

完成后,执行 composer 会返回一些帮助信息:

   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.4.2 2017-05-17 08:17:52

想让 composer 安装的东西在全局范围内使用,需要对配置文件进行修改:

vi ~/.bash_profile

PATH=$PATH:$HOME/.local/bin:$HOME/bin 的后面添加 :$HOME/.composer/vendor/bin

意思是在用户主目录下的 .composer/vendor/bin 里的东西,我们可以在任何地方执行。

让配置生效,执行:

source ~/.bash_profile

Composer 安装器现在没用了,可以删除掉:

rm -rf installer

设置中国镜像:

composer config -g repo.packagist composer https://packagist.phpcomposer.com

unzip

解压 zip 格式的压缩文件,需要用到 unzip。

安装:

sudo yum install unzip

使用:

unzip FILE_TO_UNZIP.zip

WP-CLI

如果我们使用的 WordPress,并且希望使用命令行去安装、升级以及管理网站上的用户、评论、内容等,可以使用 WP-CLI(官方网站:http://wp-cli.org)。

首先下载安装包:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

下载完成后,可以验证一下是否能够正常工作:

php wp-cli.phar --info

如果安装成功,返回信息:

PHP binary: /usr/bin/php
PHP version:    7.1.6
php.ini used:   /etc/php.ini
WP-CLI root dir:    phar://wp-cli.phar
WP-CLI vendor dir:  phar://wp-cli.phar/vendor
WP_CLI phar path:   /home/vagrant
WP-CLI packages dir:    
WP-CLI global config:   
WP-CLI project config:  
WP-CLI version: 1.2.1

我们要在系统任何地方都可以使用 wp 这个命令,需要将 wp-cli.phar 移动到系统的环境变量目录里。首先需要先添加一个可执行的权限:

chmod +x wp-cli.phar

然后使用 mv 命令把它移动到 /usr/local/bin 这个目录下面,并且重命名为 wp,这样在系统的任何地方,都可使用 wp 这个命令了:

mv wp-cli.phar /usr/local/bin/wp

完成后可以使用 wp --info 命令测试一下,如果一切正常,则会返回信息:

PHP binary: /usr/bin/php
PHP version:    7.1.6
php.ini used:   /etc/php.ini
WP-CLI root dir:    phar://wp-cli.phar
WP-CLI vendor dir:  phar://wp-cli.phar/vendor
WP_CLI phar path:   /home/vagrant
WP-CLI packages dir:    
WP-CLI global config:   
WP-CLI project config:  
WP-CLI version: 1.2.1

默认情况下,升级 WP-CLI 可以使用以下命令:

wp cli update

但因为我们将 WP-CLI 移动到了系统变量下,使用 wp cli update 会遇到权限问题,可以使用以下命令:

sudo /usr/local/bin/wp cli update

WP-CLI 查看其他命令可以参考官方命令列表:http://wp-cli.org/commands

CentOS 基础


centos-7

SSH 连接

要对服务器进行控制操作,首先需要使用 SSH 连接到服务器。

SSH 的基本使用形式:

ssh 用户@主机

用户 即为登录服务器使用的用户名,@符号右边是服务器的主机名或者 IP 地址。

使用 SSH 远程登录到 Linux 服务器主要有两种难用户身份的方法:

  • 用户名 + 密码
  • 密钥

在服务器端,可以通过配置 SSH 服务,让用户只能使用某种方法验证身份。相比用户名+密码登录,密钥登录是一种更为安全的做法,因此一些服务器会禁用用户名+密码登录,只允许使用密钥登录。

密钥 ssh-key

SSH 密钥,即在本机电脑上使用命令生成一对密钥,一个私钥(Private Key),一个公钥(Public Key),然后将公钥告诉服务器,以后在登录服务器的时候,服务器端的公钥会与本机电脑端的私钥进行匹配,如果匹配,则通过验证。

生成密钥

密钥一般只需要生成一次,最好也只生成一次。

生成密钥前,可以先检查一下之前是否有生成过密钥。一般密钥会放置在用户主目录下的 .ssh 这个目录下面,可使用 ls ~/.ssh 命令查看这个目录下是否存在密钥文件。如果是空白,或者显示没有这个目录,那就说明之前没有生成过 SSH-KEY,如果里面有两个文件,id_rsa 和 id_rsa.pub,说明已经有了 SSH-KEY。

如果没有,生成 SSH-KEY,执行命令:

ssh-keygen

命令会返回信息问将密钥放在哪里,输入密码等,可以不设置,直接回车即可。

需要注意的是,生成的密钥只对当前登录到系统的这个用户有效。

使用密钥

配置服务器使用 SSH-KEY 方式登录,需要将生成的公钥告诉服务器。

查看公钥文件里的内容,执行:

cat ~/.ssh/id_rsa.pub

复制返回密钥,然后登录的服务器,编辑当前登录用户主目录下面的 .ssh/authorized_keys,如果没这个文件,可以创建一个。然后把刚复制的公钥内容插入到 authorizes_keys 文件里面。这样下次再使用服务上的这个用户登录到服务器的时候,就不再需要输入密码。 继续阅读 “CentOS 基础”

使用 Vagrantfile 配置虚拟机


configuring-vagrant-virtual-machine

Vagrantflie

在项目的目录下面有个名为 Vagrantfile 的文件,它是执行 vagrant init 命令时创建的一个虚拟机配置文件,这个配置文件包含项目使用的虚拟机的相关配置。

Vagrantfile 文件里的内容大部分都是注释内容,里面介绍了可用的配置选项还有相关的解释。去掉注释内容,实际有效的代码只有三行:

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
end

中间一行代码就是配置的主体内容,上面的这行配置指定了虚拟机使用的 Box 是 centos/7,可以在这个代码块中添加其他自定义的配置:

Vagrant.configure("2") do |config|
  # 配置内容放在这里
end

虚拟机网络配置

把虚拟机作为一台服务器,就需要将主机(电脑)与虚拟机之间通过网络连接在一起,网络中的其他设备也可能要跟虚拟机相连,这就需要配置虚拟的网络,让虚拟机可以被访问。

可以通过 Vagrantfile 去配置虚拟机的网络,Vagrant 提供了以下三种方法:

  • 端口转发 forwarded_port
  • 公有网络 private_network
  • 私有网络 public_network

启动虚拟机后,虚拟机可以使用 nat 方式上网,即如果本机电脑能上网,虚拟机内部也可以上网。

在启动虚拟机返回的日志里,会有如下的相关配置:

==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)

上述配置意思是从主机使用 SSH 连接虚拟机的时候把主机(host)上的 2222 端口转发到虚拟机(guest)上的 22 端口。

可以通过 vagrant ssh 命令进入虚拟机内容,使用 ping 命令测试一下某个网站的连接。 继续阅读 “使用 Vagrantfile 配置虚拟机”

使用 Vagrant 管理虚拟机


vagrant-virtualbox-centos7

使用 Vagrant 可以很方便的管理虚拟机,只需要一行命令可以操作管理虚拟机,也可以重新打包成新的镜像,分享他人使用。

安装 Vagrant

可以通过 Homebrew 使用命令行安装,可以直接去 Vagrant 官网(https://www.vagrantup.com)下载安装包手动安装。

// 命令行安装 Vagrant
brew install Caskroom/cask/vagrant 

虚拟机需要用到虚拟机软件,比如 VirtualboxVMwareParallels Desktop 等等,因为 Virtualbox 开源且免费,所以此处使用 Virtualbox。安装 Virtualbox 同样可以通过命令行或者官网(https://www.virtualbox.org)下载安装包手动安装。

// 命令行安装 Virtualbox
brew install Caskroom/cask/virtualbox

Vagrant Box

Box 是 Vagrant 使用的一种包含虚拟机镜像、虚拟机配置和 Vagrant 配置的封装包文件。在 Vagrant 提供的云服务(https://vagrantcloud.com/)上可以下载到其他人制作好的 Box。

添加 Box

Vagrant 添加 Box 的命令为:

vagrant box add <name>

此处以 CentOS 7 为例,如果指定的 Box 在本地电脑上不存在,Vagrant 会到云上自动下载执行:

vagrant box add centos/7

安装成功后界面如下:

vagrant-add-box-virtualbox-centos7

完成以后,可以查看一下在本地上的 Box 列表:

vagrant box list

也可将 Box 手动下载到本地电脑上,再执行 vagrant box add 命令去手工添加 Box:

vagrant box add <name> <path>

升级 Box

检查是否有可用的升级,执行命令:

vagrant box outdated

返回:

Checking if box 'centos/7' is up to date...

执行升级:

vagrant box update

删除 Box

不再需要的镜像可以从电脑中删除掉,执行:

vagrant box remove <box name>

即使你删除了安装在电脑上的镜像,已经使用这个镜像创建的我虚拟机也仍然是可以正常使用的。不过为了更安全一些,你最好在删除镜像之前 ,先去销毁所有使用了这个镜像创建的虚拟机。 继续阅读 “使用 Vagrant 管理虚拟机”