接上文,本篇主要是服务器的搭建🧩
服务器搭建
在阿里云购买了服务器后,把自己的博客放了上去(已过期未续费)。系统为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 "你的用户名"
- 第一次提示你想将
key
保存到哪里,直接回车代表使用默认的/.ssh/id_rsa
- 第二次提示你设置一个口令密码,直接回车代表设为空
- 第三次重复第二次的密码
进入 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 模块加载:
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 端口:
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 文件:
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.* https://%{SERVER_NAME}%{REQUEST_URI} [L,R]