接上文,本篇主要是服务器的搭建🧩

服务器搭建

在阿里云购买了服务器后,把自己的博客放了上去(已过期未续费)。系统为Ubuntu 16.4,需要安装基础环境

# 阿里云已配置好了源,直接更新就行
sudo apt-get update
# 安装Web服务器
sudo apt-get install nginx
sudo apt-get install apache2

根据提示符,输入 Y 确认后,开始安装软件,直至软件安装完成

软件安装完成后,通过通过 dpkg -L 列出软件包所在的目录,及该软件包中的所有文件

sudo /etc/init.d/apache2 start
# 安装Git
sudo apt-get install git
# 生成 SSH key
ssh-keygen -t rsa -C "你的用户名"
  1. 第一次提示你想将 key 保存到哪里,直接回车代表使用默认的 /.ssh/id_rsa
  2. 第二次提示你设置一个口令密码,直接回车代表设为空
  3. 第三次重复第二次的密码

进入 key 保存位置,打开 id_rsa.pub ,全部复制后大写模式两下 Z 退出编辑

  • 进入 GitHub,打开 Settings
  • 点击 SSH and GPG keys 选项卡
  • 点击 New SSH key 按钮,将复制的 key 粘贴进去
  • 取个能识别用途的名字,保存

回到命令行,测试 SSH key 是否配置成功:

ssh -T git@github.com
# 出现如下信息则说明成功与 GitHub 连接
Hi username! You've successfully authenticated, but GitHub does not provide shell access
# 配置 Git 的用户名和邮箱
git config --global user.name "用户名"
git config --global user.email "邮箱"
# 查看已有配置
git config user.name
git config user.email

Apache 配置 SSL

现在浏览器不再建议使用 HTTP,会提示网站不安全,需要把网站更换为 HTTPS,并将 HTTP 访问的自动转发到 HTTPS 端口上

开启SSL模块

sudo a2enmod ssl

这条命令相当于下面 2 条:

sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled
sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled

如果没有 a2enmod 指令,也可以直接在配置中设置 SSL 模块加载:

apache2.conf
LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so

证书

证书有两种:一种是自签名证书,另外一种是第三方 CA 机构签名证书

第一种随便使用,没有经过官方认可的机构认证。后一种则是正规的签名证书,有发证机构签名

阿里云提供了免费的自签名证书,也可以自己创建自签名证书

使用 apache 内置的工具创建默认的自签名证书,通过 -days 参数指定有效期:

sudo apache2-ssl-certificate

创建完成后,当前目录下有个 apache.pem 文件,已经包含密钥和证书。可以把这个证书拷贝到 /etc/apache2/

修改配置

安装完后,会在 /etc/apache2/sites-available/ 目录下生成一个 default-ssl 文件

我们可以创建一个链接到 site-enabled 目录

ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl

编辑 Apache 端口配置,加入 443 端口:

/etc/apache2/ports.conf
Listen 80 Listen 443

把端口改为 443,在 <Virtualhost> 下加入 SSL 认证配置,其它的根据需要定制:

<VirtualHost *:443>
    ServerAdmin liluoao@qq.com
    ServerName liluoao.com
    DocumentRoot /var/www/html
    SSLEngine on
    # 添加 SSL 协议
    SSLProtocol all -SSLv2 -SSLv3
    # 修改加密套件
    SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
    SSLHonorCipherOrder on
    # 公钥
    SSLCertificateFile /etc/apache2/cert/public.pem
    # 私钥
    SSLCertificateKeyFile /etc/apache2/cert/1523613072453.key
    # 链配置
    SSLCertificateChainFile /etc/apache2/cert/chain.pem
</VirtualHost>

开启重定向需要加载 rewrite 模块

a2enmod rewrite
#或者用下面这句
ln -s /etc/apache2/mods-available/rewrite.load  /etc/apache2/mods-enabled/rewrite.load

编辑你的 HTTP 配置:

<VirtualHost *:80>
    ServerName www.liluoao.com
    ServerAdmin liluoao@qq.com
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    RewriteEngine on
    RewriteCond   %{HTTPS} !=on
    RewriteRule   ^(.*)  https://%{SERVER_NAME}$1 [L,R]
</VirtualHost>

或者是在根目录编辑 .htaccess 文件:

.htaccess
RewriteEngine on RewriteBase / RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^.* https://%{SERVER_NAME}%{REQUEST_URI} [L,R]