前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Typecho博客小白搭建教程】你离拥有自己的blog只差我

【Typecho博客小白搭建教程】你离拥有自己的blog只差我

作者头像
西柚dzh
发布2022-06-09 13:31:06
7000
发布2022-06-09 13:31:06
举报
文章被收录于专栏:dcmickey小站

author by dzh 2019-10-31

前言:

起初是身边同事搞过一个个人网站,然后一个意外的情况,知乎推荐了一个专栏("自己拥有一台服务器可以做哪些很酷的事情")给我,然后一发不可收拾,感兴趣的可以去搜搜。 搭建过程很坎坷,因为对linux上搭建环境不熟,一开始也是在网上找教程按照教程走。但是试过多个教程不是这里有问题就是那里有问题,对于一个小白来说,遗漏任何一个步骤都有可能让用户奔溃。经历种种问题后,我决定亲自写一篇教程,就是希望能让小白走进这个大门,而不是在门外来回试探,最终放弃。本文使用lnmp(linux+nginx+mysql+php)的环境,全部采用是docker部署,涉及docker安装,编排部署,nginx配置等,并尽可能的写下每个步骤。(网上很多一键lnmp部署包,或者宝塔面板工具,我也尝试过lnmp集成部署包,但是没有成功,遇到问题也无人指定,最终选择docker,从0开始搭建,提升一下自己。docker作为当前主流虚拟容器,谁用谁知道) 下面开始分享我的服务器创建血泪史(一步一步挖坑填坑形成的这篇教程,总之不易)

好的,不多说,搭建文档如下
1.安装linux(此处选择的是ubuntu),略
2.进入ubuntu命令行,略
3.安装docker

参见官网安装教程见 https://docs.docker.com/install/

3.1.更新apt包索引:

代码语言:javascript
复制
$ sudo apt-get update

3.2.安装软件包以允许apt通过HTTPS使用存储库:

代码语言:javascript
复制
$ sudo apt-get install \
   apt-transport-https \
   ca-certificates \
   curl \
   gnupg-agent \
   software-properties-common

命令中途提示输入y,回车

3.3.添加Docker的官方GPG密钥:

代码语言:javascript
复制
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

验证执行结果

代码语言:javascript
复制
$ sudo apt-key fingerprint 0EBFCD88

得到如下信息

代码语言:javascript
复制
 > pub   rsa4096 2017-02-22 [SCEA]
 >       9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
 > uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
 > sub   rsa4096 2017-02-22

3.4.使用以下命令来设置稳定的存储库.

代码语言:javascript
复制
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

3.5.再次更新Update the apt package index.

代码语言:javascript
复制
$ sudo apt-get update

3.6.继续安装DOCKER ENGINE- COMMUNITY。中间提示输入y,回车

代码语言:javascript
复制
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

3.7.通过运行hello-world 映像来验证是否正确安装了Docker Engine-Community.此命令下载测试图像并在容器中运行。容器运行时,它会打印参考消息并退出

代码语言:javascript
复制
$ sudo docker run hello-world

3.8.可以查看docker版本,打印出版本号代表安装成功

代码语言:javascript
复制
$ docker -v

3.9.按照docker官方文档装完, 在/etc/docker/的下面会有deamon.json文件,daemon.json 文件是对 Docker Engine 进行配置,因为docke云服务器很慢,添加国内镜像,更改一下docker镜像仓库

如果没有daemon.json ,可以新建一个拖进去, 内容添加

代码语言:javascript
复制
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

拖进去时可能没有权限, 需要加目录权限

代码语言:javascript
复制
$ sudo chmod 777 /etc/docker 即可,然后就能拖进去了
4.安装docker-compose

官方安装教程见 https://docs.docker.com/compose/install/

4.1.下载Docker Compose的当前稳定版本:

代码语言:javascript
复制
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

4.2.将可执行权限应用于二进制文件:

代码语言:javascript
复制
$ sudo chmod +x /usr/local/bin/docker-compose

4.3.测试安装.

代码语言:javascript
复制
$ docker-compose --version
5.构建php镜像

选择带有pdo_mysql的php镜像(pdo_mysql 是PHP用来访问mysql服务的扩展) 可以使用dockerfile文件构建,内容如下(一般选择放在home/用户名/的下面,并需在该路径下执行docker build) dockerfile文件内容:

代码语言:javascript
复制
#格式:FROM <image>或 FROM <image>:<tag>
FROM php:7.2.3-fpm
#指定维护者的信息
MAINTAINER dingzhenhua
#RUN 每条指令将在当前镜像基础上执行,并提交为新的镜像。(可以用“\”换行)
RUN apt-get update
RUN docker-php-ext-install pdo pdo_mysql

执行如下命令构建并生成自己的镜像 (镜像名称此处为dingzhenhua/php)

代码语言:javascript
复制
$ docker build -t dingzhenhua/php .

注意 上面命令最后有个小点,请带上执行,否则会报错,如下图哦!!!

5.1查看生成的镜像

代码语言:javascript
复制
$ sudo docker images

5.2 如果想要运行执行,这里先不执行,后面统一用docker-compose 编排执行

代码语言:javascript
复制
$ docker run -p 192.168.0.105:8080:8080 --name php  dingzhenhua/php
6.启动和运行typecho

6.1在opt目录下新建文件夹app(名称自由取,但下面会用到,需要记住哦),在下面在新建mysqldata和typecho文件夹,放入如下东西

typecho文件夹里放官网下载的typecho程序包

(切换到根目录下 cd / ; 然后再chmod 777权限。删除文件夹rm -rf /root/app 删除app整个文件夹)

  • . 这个表示docker-compose.yml当前目录位置开始创建这个文件undefined6.2.以下放送上面需要的文件内容

docker-compose 文件

代码语言:javascript
复制
version: '2'
services:
  nginx:
    image: nginx:1.13.9-alpine
    ports:
      - "80:80"
    restart: always
    volumes:
      - ./typecho:/app #前面是宿主机的,后面是容器内部的
      - ./nginxTypecho.conf:/etc/nginx/conf.d/default.conf #- . 这个表示docker-compose.yml所在路径
      - logs:/var/log/nginx 
    links:
      - php-fpm
    depends_on:
      - php-fpm
  php-fpm:
    image: dingzhenhua/php
    restart: always
    volumes:
      - ./typecho:/app
    stdin_open: true
    tty: true
    links:
      - db
    depends_on:
      - db
  db:
    image: mysql:5.7.21
    restart: always
    ports:
      - 0.0.0.0:3306:3306 #前面是宿主机的,后面是容器内部的
    volumes:
      - ./mysqldata:/var/lib/mysql  # 挂载数据目录
      #- ./conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf # 把mysql的配置文件映射到容器的相应目录
      - logs:/var/logs/mysql
    env_file:
      - mysql.env
volumes:
  logs:

mysql.env 文件

代码语言:javascript
复制
# MySQL的root用户默认密码,这里自行更改
MYSQL_ROOT_PASSWORD=*****
# MySQL镜像创建时自动创建的数据库名称
MYSQL_DATABASE=typecho
# MySQL镜像创建时自动创建的用户名
MYSQL_USER=typecho
# MySQL镜像创建时自动创建的用户密码
MYSQL_PASSWORD=*****

nginxTypecho.conf 文件

代码语言:javascript
复制
server {
    listen 0.0.0.0:80;
    server_name ***.**; #填写自己的域名
    root /app; #对应的是nginx容器里面的路径
    index index.php;

    access_log  /var/log/nginx/typecho_access.log  main;
    if (!-e $request_filename){
        rewrite ^(.*)$ /index.php$1 last;
    }

    location ~ .*\.php(\/.*)*$ {
       include        fastcgi_params;
             fastcgi_split_path_info ^(.+?.php)(/.*)$;
       fastcgi_param  PATH_INFO $fastcgi_path_info;
       fastcgi_param  PATH_TRANSLATED $document_root$fastcgi_path_info;
       fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
       fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
       fastcgi_index  index.php;
    set $path_info "";
        set $real_script_name $fastcgi_script_name;
        if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
                set $real_script_name $1;
                set $path_info $2;
        }


       fastcgi_pass   php-fpm:9000;
    }
}

6.3.在docker-compose.yml所在路径下执行docker-compose up -d 启动运行

6.4.停止 docker-compose stop

6.5.查看 docker ps -a

7.使用ip访问即可(数据库地址写主机的)
FAQ

因为涉及图文较多,这里就省略啦,嫌麻烦,对不住啦,老铁们!

版权属于:dingzhenhua

本文链接:https://cloud.tencent.com/developer/article/2018784

转载时须注明出处及本声明

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
  • 好的,不多说,搭建文档如下
  • 1.安装linux(此处选择的是ubuntu),略
  • 2.进入ubuntu命令行,略
  • 3.安装docker
  • 4.安装docker-compose
  • 5.构建php镜像
  • 6.启动和运行typecho
  • 7.使用ip访问即可(数据库地址写主机的)
  • FAQ
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档