一. 云服务器搭建博客网站

一、前言

哈咯大家好,这篇文章将讲述我在云服务器上搭建个人博客系统(也就是你访问的这个网站)的完整过程,分享其中的心路历程和宝贵经验,希望能为有类似需求的朋友提供一些参考和启发。话不多说!Let’s go!


二、云服务器

我这里选择的是阿里云的服务器,因为阿里云有一个优惠套餐,99元即可购买一台为期一年的云服务器,作为个人学习还是非常实惠的。

官网链接:https://www.aliyun.com

1. 购买云服务器

选择 “产品” -> “云服务器ECS”


下滑找到对应产品


根据需求可以选”地域”、”镜像”关键信息,其他默认即可


2. 登录实例

购买完成后,可在控制台搜索ECS跳转到”云服务器ECS”管理界面


记得切换地域(购买服务器选择的地域),依次点击”实例” -> 选择你的实例ID


重置密码后通过公网IP即可使用ssh工具远程连接。

Tips:记得保存用户名和密码,用于后续连接使用,用户名一般为”root”,尽量不要使用弱密码。


我ssh工具使用的是xshell,这里就用xshell为例

“名称” 自定义即可

“协议” 选择SSH

“主机” 填写你的公网IP

“端口” 一般默认都是22

填完这些信息后,选择 “用户身份验证” ,填写用户名和密码就可以远程连接服务器啦~


3. 优化服务器

下载常用软件

# yum -y install net-tools vim tree htop iftop \
    ntpdate bash-completion.noarch  bash-completion-ext \
    lrzsz netcat telnet

关闭Selinux

# sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config

调整单个进程最大能打开文件的数量

# echo '* - nofile 65535' >> /etc/security/limits.conf

时间同步

# crontab -e
*/15 * * * * ntpdate ntp.aliyun.com

PS1变量

# vim /etc/profile.d/ps1.sh
#!/bin/bash

export PS1="\[\e[35;1m\][\u@\h \W]#\[\e[0m\] "

# source /etc/profile.d/ps1.sh

修改主机名。根据需求修改云服务器的主机名

# hostnamectl set-hostname hostnamectl

创建特权账户

# groupadd techsphere

# useradd -g techsphere techsphere

# passwd techsphere
# vim /etc/sudoers.d/techsphere
techsphere ALL=(ALL:ALL) ALL

修改SSH端口,大概在17行,取消”Port 22″的注释,并将”22″改为”9999″

# vim /etc/ssh/sshd_config
Port 9999

修改连接端口、用户和密码


三、部署Docker

创建docker下载目录

# mkdir -p /data/docker-download/ 

下载软件包

# cd /data/docker-download/ && wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.24.tgz

创建安装目录

# mkdir -p /jiang/softwares/

解压软件包到安装目录

# tar xf /data/docker-download/docker-20.10.24.tgz -C /jiang/softwares

创建软连接

# ln -svf /jiang/softwares/docker/* /usr/bin/

配置镜像加速

# vim /etc/docker/daemon.json
{
   "registry-mirrors": [
      "https://<changme>.mirror.aliyuncs.com",
      "https://dockerproxy.com",
      "https://mirror.baidubce.com",
      "https://docker.m.daocloud.io",
      "https://docker.nju.edu.cn",
      "https://docker.mirrors.sjtug.sjtu.edu.cn"
   ],
  "data-root":"/data/docker",
  "exec-opts": ["native.cgroupdriver=systemd"]
}

创建数据目录

# mkdir /data/docker

配置开机自启

# vim /usr/lib/systemd/system/docker.service
[Unit]
Description=JiangYang linux CentOS Docke Engine
Documentation=https://docs.docker.com
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
[Install]
WantedBy=multi-user.target

启动docker

# systemctl daemon-reload
# systemctl enable --now docker

查看版本以验证是否安装成功

# docker --version
Docker version 20.10.24, build 297e128

四、部署WordPress

创建网络

# docker network create wordpress

运行MySQL

#  docker run --name wordpress-db \
      --restart=always --network=wordpress  \
      -v /data/mysql-3306/data:/var/lib/mysql   \
      -v /data/mysql-3306/conf.d:/etc/mysql/conf.d   \
      -e MYSQL_ROOT_PASSWORD=2025@mysql   \
      -e MYSQL_DATABASE=wordpress   \
      -e MYSQL_TCP_PORT=3306   \
      -e TZ=Asia/Shanghai   -p 3306:3306   \
      -e LANG=C.UTF-8 \
      -d registry.cn-shanghai.aliyuncs.com/jiangyang-docker/mysql:8.0.35   \
      --character-set-server=utf8mb4   \
      --collation-server=utf8mb4_unicode_ci   \
      --default-authentication-plugin=mysql_native_password   \
      --bind-address=0.0.0.0

创建数据库

# docker exec -it wordpress-db bash

# mysql -uroot -p2025@mysql

> create database wordpress_prod;

> create user 'wordpress_prod'@'%' identified by '2025@wordpress';

> grant all on *.* to 'wordpress_prod'@'%';

> flush privileges;

> exit;

> exit;

运行WordPress

docker run --name wordpress \
   --restart=always \
   -v /data/wordpress:/var/www/html \
   -p 8080:80 --network=wordpress \
   -v /etc/localtime:/etc/localtime:ro \
    -v /etc/localtime:/etc/localtime:ro \
   -d wordpress:6.7.2-php8.3-apache

修改连接数据库信息

# cd /data/wordpress

# cp wp-config-sample.php wp-config.php

# vim wp-config.php
......
define( 'DB_NAME', getenv_docker('WORDPRESS_DB_NAME', 'wordpress_prod') );
define( 'DB_USER', getenv_docker('WORDPRESS_DB_USER', 'wordpress_prod') );
define( 'DB_PASSWORD', getenv_docker('WORDPRESS_DB_PASSWORD', '2025@wordpress') );
define( 'DB_HOST', getenv_docker('WORDPRESS_DB_HOST', 'wordpress-db:3306') );
......

修改以上信息后保存退出


查看公网IP


配置安全组

配置如图所示
“端口范围” 根据你Wordpress的端口而定,如果你映射的端口为8080则这里也填写8080
“授权对象” 这里填写的是你的公网IP


页面访问
http://<ECS实例公网IP:WordPress宿主机端口>/wp-admin

安装完成后,单击”登录”,在登录界面输入用户名和密码登录即可


发布文章
在左侧菜单栏单击”文章“,并在”文章”页面单击”写文章”,开始编写你的第一篇博客

编写完成后单击发布


五、监控告警

我这里列举了两种方式,一种是通过部署PrometheusGrafananode-exportermysql-exporter的方式监控我们的服务;也可以通过阿里云的方式来实现,阿里云的监控告警相对简单些。

1. 部署node-exporter数据采集

启动node-exporter容器

docker run -d --name=node-exporter \
   --restart=always \
    -p 9100:9100 \
    -v "/proc:/host/proc:ro" \
    -v "/sys:/host/sys:ro" \
    -v "/:/rootfs:ro" \
    -v /etc/localtime:/etc/localtime:ro \
   prom/node-exporter

访问

curl http://192.168.4.12:9100/metrics

2. 部署mysql-exporter

启动mysql-exporter容器

docker run -d --name mysql-exporter  \
    --restart=always -p 9104:9104    \
    -v /data/prometheus/mysql-exporter/.my.cnf:/.my.cnf \
    -e DATA_SOURCE_NAME="root:s6kL#cf9MeI5E@ssOKZSqg@(172.23.31.173:3306)/"  \
    -v /etc/localtime:/etc/localtime:ro  \
    registry.cn-shanghai.aliyuncs.com/jiangyang-docker/mysqld-exporter:latest

访问

curl http://192.168.4.12:9104/metrics

二、部署Prometheus 监控

1、编写配置文件

#  vim /data/prometheus/config/prometheus.yml
global:
  scrape_interval:     60s
  evaluation_interval: 60s

scrape_configs:

  - job_name: prometheus
    static_configs:
      - targets: ['172.23.31.173:9090']
        labels:
          instance: 172.23.31.173

  - job_name: node_exporter
    static_configs:
      - targets: ['172.23.31.173:9100']
        labels:
          instance: 172.23.31.173

  - job_name: mysqld
    static_configs:
      - targets: ['172.23.31.173:9104']
        labels:
          instance: 172.23.31.173

2、启动容器

docker run -d --name=prometheus \
    -v /data/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml \
     --restart=always  \
     -p 9090:9090  \
     -v /etc/localtime:/etc/localtime:ro \
     prom/prometheus

3、访问

http://192.168.4.12:9090
http://192.168.4.12:9090/graph
http://192.168.4.12:9090/targets

三、部署Grafana可视化工具

1、创建数据目录

#  mkdir  /data/grafana
#  chmod 777  /data/grafana

2、启动容器

docker run -d --name=grafana \
   -v /data/grafana:/var/lib/grafana \
   --restart=always \
   -p 3000:3000 \
    -v /etc/localtime:/etc/localtime:ro \
   grafana/grafana

3、页面访问

http://123.57.244.133:3030
admin
admin

4、汉化

5、添加数据源

6、创建node-exporter dashboard

7、创建mysql dashboard

Comments

No comments yet. Why don’t you start the discussion?

发表回复

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