关于这个网站是怎么来的


作为第一篇文章,我想记录一下这个网站是怎么搭建的。

本人对于网络,云的知识可以说是一窍不通。所以我的搭建过程就从搜索一个傻子都能看懂的视频开始。

以下视频作为我的主要参考。

关于云

首先,作为一个抠门的人,肯定是要找一个提供免费能用的云服务商。之前用甲骨文的服务搭过一次网站。个人觉得那边的console用着不太顺手,这次就想换个新的用用看,顺便多接触一下。所以这次选了AWS的EC2作为虚拟服务器,它可以免费用一年。所以说不定这个网站要是利用率不高,明年的今天这个网站就会消失。。

关于域名

域名其实从哪里申请都差不多,这里就不多赘述了。我使用的应该是日本这边比较有名的onamae.com。感叹一下,这个网站的UI设计太土了。

开始吧

AWS

首先,比较简单的部分就是在AWS中建立一个实例。这个实例使用的是免费的ubuntu,和t2.micro处理器。

vCPU: 1RAM (GiB): 1.0CPU クレジット/時間: 6

顺带一提,还有一个同样单线程,但只有0.5G内存的低配版。但不知道出于什么考虑反而要收费。(虽然这边也只是免费12个月)

实例需要一个秘钥对。一般的,一个实例只会配对一个秘钥。是一个pem文件,用SSH远程登录的时候会用到。

下面的网络设置就比较重要了。这会决定外部能通过什么协议,什么端口访问到这个网站。为了对网站进行内部设置,自然要允许SSH的链接(port22)。并且,之后通过域名访问也需要HTTP(port80)及HTTPS(port443)的访问。

之后可以配置一个存储用的卷。默认是8Gb,但最高可以拉到30Gb免费。

大功告成,这个实例就搭建起来了

DNS

然后我们要做的就是在域名申请的地方设置DNS,以确保访问目标域名的时候跳转的是刚刚搭建好的实例。以这个网站举例,我设置了jiannanzhao.com,www.jiannanzhao.com,确保它们关联到这个实例的公网IP。

LNMP

我们需要向这个服务器导入 。所以我们需要先通过ssh链接到服务器,之后

sudo apt update
sudo apt upgrade

来确保使用的apt是最新的。

之后,重头戏来了。接下来我们需要LNMP。什么是LNMP?就是Linux,Nginx,Mysql(这里用的mariadb),PHP。我们通过apt这个管理器来安装这些包

sudo apt install nginx mariadb-server php-fpm php-mysql

安装wordpress

感谢wordpress,让我这个腊鸡也能拥有这么炫酷的前端(话说这不就是qq空间吗)

使用以下命令来安装wordpress

cd /var/www
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzvf latest.tar.gz
#下载并解压wordpress到/var/www路径
sudo rm latest.tar.gz
sudo chown -R www-data:www-data wordpress
sudo find wordpress/ -type d -exec chmod 755 {} \;
sudo find wordpress/ -type f -exec chmod 644 {} \;
# 建立一个用户组www-data并赋予权限

DB

用下面的指令来设置Database

sudo mysql_secure_installation
sudo mysql -u root -p
create database example_db default character set utf8 collate utf8_unicode_ci;
create user 'example_user'@'localhost' identified by 'example_pw';
grant all privileges on example_db.* TO 'example_user'@'localhost';
flush privileges;
exit

Nginx设定

nginx会将网站设置保存在sites-available中的.conf文件中。

cd /etc/nginx/sites-available/
/etc/nginx$ ls
conf.d        fastcgi_params  koi-win     modules-available  nginx.conf    scgi_params      sites-enabled  uwsgi_params
fastcgi.conf  koi-utf         mime.types  modules-enabled    proxy_params  sites-available  snippets       win-utf

所以我们打开这个文件进行设置

sudo vim wordpress.conf

这个文件的初始状态我忘了。改好后大概是这样子。

确保网站对端口80进行侦听。

upstream php-handler {
        server unix:/var/run/php/php{php的版本}-fpm.sock;
}
server {
        listen 80;
        server_name example.com example.io;
        root /var/www/wordpress;
        index index.php;

        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass php-handler;
        }
}
sudo ln -s /etc/nginx/sites-available/wordpress.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

把这个文件拷贝到/nginx/sites-enabled/,这样就启用了nginx

用nginx -t检查一下,重启。

好了,现在我们理论上可以通过域名对网站进行http访问了!

WordPress网页设置

这个略过了,没啥好说的。访问自己的域名然后照着点而已

完善php

在wp后台的工具>站点健康中可以看到推荐安装的php包。也没什么好说的,apt就完事了

HTTPS接续

在这里卡了一下下。简单来说,HTTPS相较HTTP是一种更安全的访问方式。要实现HTTPS访问,我们需要集齐几颗龙珠。

  • 确保EC2安全组设置中侦听443端口
  • 使用Let’s Encrypt的certbot为域名发行SSL证书,免费的
  • 回到wordpress,在设置中为WordPress 地址和站点地址加上https
  • 没了
sudo apt install snapd
sudo snap install core; snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --nginx

好了,域名左边的小锁头已经锁上了。certbot会按时检查证书的期限并进行更新。

(顺带一提,刚才的conf文件会加上以下的内容

listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/jiannanzhao.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/jiannanzhao.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

好了,完事。

# 碎碎念

好久没有手打这么多字了,手腕好痛。。


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注