作为第一篇文章,我想记录一下这个网站是怎么搭建的。
本人对于网络,云的知识可以说是一窍不通。所以我的搭建过程就从搜索一个傻子都能看懂的视频开始。
以下视频作为我的主要参考。
关于云
首先,作为一个抠门的人,肯定是要找一个提供免费能用的云服务商。之前用甲骨文的服务搭过一次网站。个人觉得那边的console用着不太顺手,这次就想换个新的用用看,顺便多接触一下。所以这次选了AWS的EC2作为虚拟服务器,它可以免费用一年。所以说不定这个网站要是利用率不高,明年的今天这个网站就会消失。。
关于域名
域名其实从哪里申请都差不多,这里就不多赘述了。我使用的应该是日本这边比较有名的onamae.com。感叹一下,这个网站的UI设计太土了。
开始吧
AWS
首先,比较简单的部分就是在AWS中建立一个实例。这个实例使用的是免费的ubuntu,和t2.micro处理器。
vCPU: 1 | RAM (GiB): 1.0 | CPU クレジット/時間: 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
好了,完事。
# 碎碎念
好久没有手打这么多字了,手腕好痛。。
发表回复