从零搭建个人博客网站

本贴最后更新于 2117 天前,其中的信息可能已经时移俗易

前言

很久就想搭建一个自己的专属博客网站,用来记录与分享一些技术相关的文章,算做一个备忘录,以便把自己所学进行系统梳理,整理成文,方便以后回顾与巩固。本文记录了我从零搭建该博客网站,从购买服务器,到配置服务器,再到完成个人博客网站的搭建,总共两小时完成。

要成功搭建一个网站,需要完成以下几个主要步骤:

  1. 购买服务器
  2. 购买域名及备案
  3. 安装博客程序
  4. 登录博客后台设置网站信息

购买服务器

我购买的阿里云服务器 ECS,操作系统镜像选择的 Ubuntu 系统。以前也没有使用过其他的服务器,没法比较优劣。想来阿里云不会差,毕竟是大厂的。

点击这里去阿里云官网上选择一款合适的服务器吧。购买后,登录阿里云管理控制台,进入“云服务器 ECS”就可以看到你的服务器实例。实例会自动启动,几分钟就运行起来了。当你看到状态是运行中,表明已经启动成功了。你也可以看到这个实例的公网 IP,你可以用远程 SSH 工具登录到这个 IP 进行服务器管理。

另外,很重要很重要的是,你需要添加安全组规则,就是添加外部可以访问的端口。默认只开启了 22 端口。对于搭建网站,你必须要开通 80 端口,否则网站将无法访问。你可以开通其他端口,比如 MySQL 的端口,以便以后远程登录数据库查看数据。

购买域名与备案

服务器购买好后,你需要选择一个域名。这个不用多说,去阿里云旗下万网购买一个。

购买后,你需要进行备案。备案对于中国大陆的服务器是必须的,否则就算你域名解析成功了,也是会被和谐掉的,所以去这里备案吧!

安装博客程序

接下来就是安装博客程序了。有很多的开源博客程序,目前最火的应该是 WordPress,用 PHP 开发的开源博客系统。但是由于我不熟悉 PHP,所以选择了一款 Java 开源博客系统:Solo
点击这个下载链接,或者通过上面的官网再进入 Github 找到下载链接,下载到 Solo 的 war 包。然后通过 FTP 工具上传到服务器。

安装依赖软件

安装 Solo 博客程序之前,我们需要先安装如下依赖软件:

  1. Java
  2. MySQL
  3. Nginx

安装 Java

因为 Solo 是用 Java 开发的,我们要运行 Solo 必须的安装 Java 运行环境。在 Oracle 官网下载页面下载 Linux 版的 JDK 压缩包,然后上传到服务器。

我在服务器上创建了一个新目录/opt/java,然后将压缩包拷贝到这个目录,然后解压:

tar -zxvf jdk-8u171-linux-x64.tar.gz

接下来设置环境变量,用 vi 编辑器打开/etc/profile 文件:

vi /etc/profile

在文件开头添加如下内容:

JAVA_HOME=/opt/java/jdk1.8.0_171
JRE_HOME=/opt/java/jdk1.8.0_171/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

然后保存别执行以下命令使其生效:

source /etc/profile

最后在任意目录执行下面命令来测试 Java 是否安装成功:

java -version

如果你看到类似下面的输出,说明已经安装成功了:

java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

安装 MySQL

Solo 默认使用的 H2 内存 DB,我建议最好改用 MySQL。

安装 MySQL

首先分别执行下面三条命令:

sudo apt-get install mysql-server
sudo apt isntall mysql-client
sudo apt install libmysqlclient-dev

安装过程中,要求设置 root 用户的密码,请一定记住这个密码。

安装成功后可以通过下面的命令测试是否安装成功:

sudo netstat -tap | grep mysql

输出类似如下:

tcp6       0      0 localhost:mysql              *:*                  LISTEN      19839/mysqld

你也可以执行以下命令测试是否可以进入 MySQL:

mysql -uroot -p你的密码
开启 MySQL 远程访问

MySQL 安装后默认是没有打开远程访问的,从上面的输出可以看出,它只允许 localhost 也就是本机访问。

我们可以编辑/etc/mysql/mysql.conf.d/mysqld.cnf 文件:

vi /etc/mysql/mysql.conf.d/mysqld.cnf

将 bind-address = 127.0.0.1 注释掉:

#bind-address           = 127.0.0.1

保存退出,然后执行如下命令进入 MySQL:

mysql -uroot -p你的密码

然后执行以下命令进行授权:

grant all on *.* to root@'%' identified by '你的密码' with grant option;
flush privileges;

然后执行 quit 命令退出 MySQL,执行以下命令重启 MySQL 服务:

service mysql restart

此时,再次运行 ps 命令:

sudo netstat -tap | grep mysql

输出如下,你会看到它已经不再只是监听 localhost 了:

tcp6       0      0 [::]:mysql              [::]:*                  LISTEN      19839/mysqld

现在你可以使用 MySQL 客户端测试一下是否可以从你的电脑访问服务器上的 MySQL 服务了。

安装 Ngnix

Solo 会在自带的 Jetty 中运行,并默认监听 8080 端口,然而我们希望通过默认的 80 访问我们的网站,所以我们需要安装一个 web server 来做请求转发。

Ubuntu 系统中安装 Nginx 超简单,一条命令搞定:

sudo apt-get install nginx

安装好后 nginx 会自动启动,运行 ps 命令可以查看 nginx 进程:

# ps -ef | grep nginx
root     20435     1  0 Jun25 ?        00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 20436 20435  0 Jun25 ?        00:00:01 nginx: worker process

接下来我们需要配置请求转发,打开 nginx 配置文件:

vi /etc/nginx/nginx.conf

在 http 节点内最后加上如下内容:

server {
		listen                  80;
		server_name             www.yglong.com;
		location / {
				proxy_pass              http://127.0.0.1:8080;
				proxy_redirect          off;
				proxy_set_header        Host $host;
				proxy_set_header        X-Real-IP $remote_addr;
				proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		}
}

保存退出,重启 nginx 服务:

service nginx restart

安装博客程序

前面已经下载了 Solo 安装包,现在开始安装吧!
首先创建一个新目录/opt/solo,将 Solo war 包拷贝到这个目录下,然后解压:

jar -xvf solo-2.9.1.war

解压后,进入 latke.properties 文件:

vi /opt/solo/WEB-INF/classes/latke.properties

修改 serverHost 和 serverPort:

#### Server ####
# Browser visit protocol
serverScheme=http
# Browser visit domain name
serverHost=www.yglong.com
# Browser visit port, 80 as usual, THIS IS NOT SERVER LISTEN PORT!
serverPort=80

保存并退出,进入 local.properties 文件:

vi /opt/solo/WEB-INF/classes/local.properties

注释掉 H2 DB 的配置,并配置 MySQL:

#### H2 runtime ####
#runtimeDatabase=H2
#jdbc.username=root
#jdbc.password=
#jdbc.driver=org.h2.Driver
#jdbc.URL=jdbc:h2:~/solo_h2/db
#jdbc.pool=h2

#### MySQL runtime ####
runtimeDatabase=MYSQL
jdbc.username=root
jdbc.password=你的MySQL密码
jdbc.driver=com.mysql.jdbc.Driver
jdbc.URL=jdbc:mysql://localhost:3306/solo?useUnicode=yes&characterEncoding=utf8
jdbc.pool=druid

保存退出。

接下来创建数据库,首先执行下面命令进入 MySQL:

mysql -uroot -p你的密码

然后执行下面命令创建数据库,数据库名字与 local.properties 里配置的名字要一样:

CREATE DATABASE IF NOT EXISTS solo DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

退出 MySQL,最后执行下面命令启动 Solo:

nohup java -cp WEB-INF/lib/*:WEB-INF/classes org.b3log.solo.Starter &

登录博客后台设置网站信息

现在可以输入你的域名访问你的网站了。首次访问时,需要初始化网站。你需要设置你的管理员帐号,然后开始初始化,Solo 会自动在 MySQL 中建立数据库表。初始化成功后就自动进入你的网站了。

进入 Solo 后台管理控制台,进入"工具"->"偏好设定",你可以修改你的网站名称等其他基本网站信息。

就这样,你的网站已经基本搭建完成了。

最后剩下的,也是经营个人网站最重要的,就是你需要坚持不断的发布有质量的,原创的好文!

  • 博客

    记录并分享人生的经历。

    270 引用 • 2386 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • visus

    我最近刚好向搭建,就是如何有效防范攻击

  • ChaosSan

    👍