一、前言
作为一名程序员,不断学习是这个行业的生存法则,很多程序员在完成一个阶段的学习后,都有写博客的习惯,把自己的心得与收获分享出去。或者在日常工作中解决掉一个棘手的问题后,会通过写一篇博客记录下来,在沉淀自己的同时也将知识分享给更多人知道。
那么大家喜欢在哪里写博客呢?csdn?博客园?掘金???这些博客网站是大家遇到难以解决的问题后的首选,他们的特点是信息量大,观点多,思路缜密,当然文章质量也有保障。
还有一群人,他们不仅使用上述博客网站,而且还有自己亲手搭建的博客网站,专门用来总结自己的学习成果,记录自己的生活。而且与上述的博客网站相比,页面显示的效果绚丽多姿,百花齐放,随便根据自己的心情去自定义页面的效果。
之前我觉得这些搭建自己博客网站的大佬们太厉害了,因为搭建一个网站并非易事,最起码了,前端开发、后端开发、数据库、服务器,这些都是要有的,而一个人的时间与精力总是有限的,很纳闷这些大佬们是如何的拼命学习,竟能仅靠一人之力,完成了整个网站的建设,更有甚者,竟能把网站做的如此漂亮。
直到昨天,当我在查看阿里云技术文档的时候,无意间看到阿里云整合wordpress快速部署个人网站的时候,本就有搭建个人网站意愿的我在好奇心驱使下丢下眼前的工作,打开wordpress官网看看这是什么东西。
二、介绍
以下介绍来自wordpress官网:
WordPress是一个基于PHP和MySQL的免费开源内容管理系统。它是世界上使用最广泛的CMS软件,截至2021年6月,它为排名前1000万的网站中的40%提供支持,并在所有使用CMS构建的网站中占有约64%的市场份额。
WordPress在2003年开始只是一个简单的博客系统,但是它已经发展成为一个完整的CMS,拥有数以千计的插件、插件和主题。它是在通用公共许可证(GPLv2或更高版本)下授权的
从官网介绍中来看,wordpress是一个内容管理系统(CMS,也就是我们说的博客网站)、免费、开源、有大量插件和主题供我们使用,而且好像全世界的人都在用似的。另外,运行wordpress需要php环境和mysql数据库的支持。
- 按你心里想的设计:设计你想象的任何东西。从空白画布开始,或者从各种主题和图案中选择。定制每个细节,从颜色和字体到布局和功能。
- 随意扩展:让WordPress做你需要它做的任何事情。添加一个商店,邮件列表,投资组合,社会饲料,分析。您可以控制超过55,000个插件。
- 拥有你所做的:您的内容、设计和数据始终属于您。有了WordPress,你可以自由地讲述你的故事,发展你的品牌,或者只是做你自己。
看到这里,这不就是我一直想做却没做的吗?
呐!!!开干!!!
三、准备工作
官网介绍上说了,wordpress需要php+mysql数据库才能运行,作为一名java程序员去搞php的环境显然不能算是一个良策,而且咱没弄过php,安装过程指不定会出现什么问题呢,别说php了,除了java谁都不行[/狗头保命]。
那怎么办呢?最舒服最简单的办法就是docker容器啦,开箱即用的特点总是让人欲罢不能。只要docker镜像仓库中有wordpress的镜像,那这事就算成功一半了。
果然没错,wordpress在docker镜像仓库中还非常活跃的更新wordpress镜像版本呢,而且镜像中也包含了php环境,但不幸的是,它并没有包含mysql数据库,那么我们就得另外单独安装mysql数据库了,有了docker加持,一切东西的安装都难也不难。
省流助手:为了避免安装php环境,我们采用docker的形式安装wordpress。
因此,在准备阶段,我们需要以下基础支持:
- 服务器(这里我使用的是去年双十一买的阿里云服务器)
- docker服务
- mysql容器
- wordpress容器
四、购买服务器
服务器我是去年双十一的时候买的,加上新用户的优惠活动很便宜,三年的服务器才一百多,大家可以看一下原价可四千多呢。
服务器操作系统当然是选择Linux,至于是ubuntu,还是centOS,或者redhat,只是某些命令上存在差异,这里我就以centOS为例。
五、安装docker服务
进入服务器终端,输入命令:
更新yum源,yum就像是手机中的应用商店
yum upgrade
AI 代码解读通过yum安装docker服务
yum install docker
AI 代码解读关闭docker服务
systemctl stop docker
AI 代码解读设置docker服务为开机自启动
systemctl enable docker
AI 代码解读启动docker服务
systemctl start docker
AI 代码解读查看docker服务的状态
systemctl status docker
AI 代码解读
当docker服务的状态为active (running)
时,表示docker服务正常运行
docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2022-10-25 13:34:31 CST; 1 day 2h ago Docs: http://docs.docker.com Main PID: 3587 (dockerd-current) Tasks: 75 Memory: 159.4M CGroup: /system.slice/docker.service
AI 代码解读
六、创建docker网络
创建docker网络的目的是为了不同项目之间使用不同的网络,以达到不同项目之间网络环境隔离的效果。
进入服务器终端,输入命令:
查看docker网络列表
docker network ls # 输出 NETWORK ID NAME DRIVER SCOPE d91bb3d7ba01 bridge bridge local 504547ddf53f host host local 9537c22a2fcf none null local
AI 代码解读新建bridge类型的网络
docker network create -d bridge my-bridge
AI 代码解读查看docker网络列表
docker network ls # 输出 NETWORK ID NAME DRIVER SCOPE d91bb3d7ba01 bridge bridge local 504547ddf53f host host local 8857632fcd1f my-bridge bridge local 9537c22a2fcf none null local
AI 代码解读
七、安装mysql容器
进入服务器终端,输入命令:
拉取mysql镜像,等待拉取完成
docker pull mysql # 输出 Trying to pull repository docker.io/library/mysql ... lastest: Pulling from docker.io/library/mysql e9995326b091: Pull complete a1cb2f1dc0c2: Pull complete a03008f2cf7e: Pull complete e4d344900ccc: Pull complete d63d306dfeaf: Pull complete e37a6e488ddf: Pull complete 654714d6b537: Pull complete 62a15b533b28: Pull complete 6e328312ef69: Pull complete 7db89f2542a0: Pull complete 5ddbcd220112: Pull complete 2904d0173235: Pull complete Digest: sha256:ffafc1726ac6bf6b10d07a2e5a150c827a777ab99cb6db94a0efe58dd67d1a6b Status: Downloaded newer image for docker.io/mysql:lastest
AI 代码解读查看镜像列表
docker images # 输出 REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/mysql latest 43fcfca0776d 5 weeks ago 449 MB
AI 代码解读启动mysql容器
docker run \ -d \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=数据库密码由你来定 \ --network my-bridge \ --ip 172.18.0.3 \ --restart=always \ --name mysql \ docker.io/mysql
AI 代码解读查看容器列表
docker ps # 输出 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8c9e5ae659f3 docker.io/mysql "docker-entrypoint..." 25 hours ago Up 25 hours 0.0.0.0:3306->3306/tcp,33060/tcp mysql
AI 代码解读
八、安装wordpress容器
进入服务器终端,输入命令:
拉取wordpress镜像,等待拉取完成
docker pull wordpress # 输出 Trying to pull repository docker.io/library/wordpress ... lastest: Pulling from docker.io/library/wordpress bd159e379b3b: Already exists 1e83b070fd97: Already exists e7793be89e9c: Already exists 4220e0c03377: Already exists 77f71a584e44: Pull complete a18ae08838ec: Pull complete c3fb5aa06211: Pull complete 9e1d78cd066a: Pull complete 454617d5c6c7: Pull complete 06ce6b583d54: Pull complete e207a281bb1a: Pull complete c9bf63c5e4aa: Pull complete fbda2e8ba480: Pull complete 8c534d7c65c3: Pull complete 5db7e5a0d143: Pull complete d707cd4f8b11: Pull complete c1bc50ac87de: Pull complete Digest: sha256:eedd9dd4abf0ad026936aa84339dece0430b398456e13c575eb857ed47b6ea83 Status: Downloaded newer image for docker.io/wordpress:lastest
AI 代码解读查看镜像列表
docker images # 输出 REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/wordpress latest 5f9d748595e1 7 days ago 609 MB docker.io/mysql latest 43fcfca0776d 5 weeks ago 449 MB
AI 代码解读启动wordpress容器
docker run -d \ -p 8090:80 \ -e WORDPRESS_DB_HOST=172.18.0.3 \ -e WORDPRESS_DB_USER=root \ -e WORDPRESS_DB_PASSWORD=数据库密码 \ -e WORDPRESS_DB_NAME=word_press \ --network my-bridge \ --ip 172.18.0.4 \ --restart=always \ --name word-press \ docker.io/wordpress
AI 代码解读查看容器列表
docker ps # 输出 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a1478a6fa2e3 docker.io/wordpress "docker-entrypoint..." 25 hours ago Up 25 hours 0.0.0.0:8090->80/tcp word-press 8c9e5ae659f3 docker.io/mysql "docker-entrypoint..." 25 hours ago Up 25 hours 0.0.0.0:3306->3306/tcp,33060/tcp mysql
AI 代码解读
九、进入wordPress管理平台
在浏览器输入ip:8090,ip是你服务器的ip地址,8090是你启动wordpress容器脚本中对外暴露的端口号,发现无法打开网页
出现这种情况有两种可能:
服务器的防火墙未关闭,或防火墙未打开8090端口的规则
查看服务器防火墙状态
systemctl status firewalld # 输出,inactive (dead)表示防火墙为关闭状态 firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
AI 代码解读查看服务器防火墙规则,只有防火墙为开启的状态才可以查看规则
# 打开防火墙 systemctl start firewalld # 查看防火墙规则 firewall-cmd --list-ports # 输出去:防火墙规则(仅打开了80端口) 80/tcp
AI 代码解读如果你不想关闭防火墙,那么一定要开放8090端口
firewall-cmd --zone=public --add-port=8090/tcp --permanent
AI 代码解读
阿里云 -> 安全组未打开8090端口的规则
通过手动添加入方向安全组,允许8090端口被外部访问
在浏览器重新输入ip:8090,即可进入wordpress控制台安装页面
第一步:选择语言
第二步:基础设置
基础设置信息包括网站名称,管理员的用户名密码以及邮箱,输入完成后点击下一步
安装成功
进入首页
登录成功后,进入首页
十、发布一篇文章
在页面左侧边栏点击文章->写文章,进入写文章页面
在编写完成后,右上角有保存草稿、预览、发布按钮,可根据需要进行不同的操作。
点击发布按钮,可对要发布的文章进行设置,如查看权限、发布时间、添加标签、指派分类,最后再点击发布按钮
发布文章后,可以继续进行以下操作
复制文章链接,在浏览器打开新标签页,查看文章
在文章最后,可以对此文章进行留言评论
发表的评论不能直接显示在文章中,需要管理员审核通过后方可显示
进入管理员页面,点击左侧边栏,点击评论查看评论列表
也可以在文章列表中查看评论
管理员可以对评论进行审核,审核通过的评论将公开显示在文章下方
十一、使用插件
在管理页面左侧边栏点击插件->安装插件,我们以安装markdown编辑器为例,
在页面右上角搜索关键字markdown,找一个喜欢的点击立即安装,安装完成后点击启用按钮,也可以在已安装插件页面进行操作
再写一篇文章,打开文章编辑器,发现编辑器已经变成markdown编辑器了
编辑完成后,点击发布按钮,发布成功后进入文章列表就可以看到了。
十二、主题外观
我们可以先看一下我们的博客主页,默认的主题应该是下面这样的
这样的主题虽然简单,但是简陋,我们想搞一个简单不简陋的主题外观,该怎么玩?
像安装插件一样,点击左侧边栏外观 -> 主题 -> 安装主题,可以看到社区给我们提供的大量主题,想用哪个就下载哪个,都是你的。
但作为一个博客网站,我们可以按条件搜索主题
应用筛选条件后,可以随意挑选一个主题作为我们的博客网站主题进行下载,下载后记得开启主题哦
开启主题后,我们进入我们的博客网站主页,就可以看到一个全新的博客主题
十三、结语
这一套松果弹抖闪电鞭下来,就算完成自己的博客网站了,以后可以随心所欲的在上面发表文章了。
整个建站的过程非常简单,不需要写任何代码,只要稍稍会一点linux命令就不会有任何问题。
当然了,如果你是一个对自己有信心的php程序员,可以把wordpress的源码下载下来,对他进行源码级的自定义修改。
纸上得来终觉浅,绝知此事要躬行。
我是理想万万岁,我们后会有期。