Ubuntu18.04.4动态博客搭建详解(LNMP+Typecho)

前言

搭这个博客主要是动动我那个吃灰的服务器,顺便熟悉熟悉linux。配置LNMP还可以直接下载一套安装包,不过我采用一个个配置的方式

其中,nginx是一个涨姿势点。核心难点在于nginx的配置以及搭配php的配置,由于之前在服务器还利用snap搭了nextcloud,造成了80端口的冲突,本来是想在nginx这边修改端口的,奈何语法不够熟练,贪图方便直接修改了nextcloud那边的端口了。

后卡得比较久的地方是出现502的错误,原因是php和nginx配置的unix域套接字不一致,因为根目录和var目录下都有一个run文件夹,而配置文件中要设置一样。


内容

由于也没什么深刻的技术点,就来讲讲nginx。

代理服务

nginx在本实验中充当反向代理作用。

反向代理,通俗的讲就是把客户提交的请求中间再加一层过滤,即并不是客户机直接访问服务机,而是经过了proxy服务,这样如果出问题也是代理先出,保证了服务端的安全。许多内容服务器安全、负载均衡等都用到了这个技术。

在计算机网络我们有web缓存代理服务的技术,就相当于代理服务器也存着一些常用到内容缓存,这样pc请求资源的时候就不用都跑到ser端获取,而一旦更新或者缓存中没有相应的资源才访问服务端,降低了服务端的压力。这就是负载均衡

区别于反向代理还有个正向代理,实际上可以这么理解,正向代理跑在客户端,但由于某些原因,比如服务器要设置权限等,于是加了个中间商出来。反向则是建立在服务端的,是用来优化服务端性能的。还能根据配置去映射到不同的服务器。nginx就是在linux中充当url访问时去定位不同文件的资源的。 通过server去代理不同端口的访问,就像一个查表管理员一样。


nginx配置语法

这部分可以参考:Ubuntu16 Nginx的安装与基本配置

核心的点在于:locationroot(区别于alias)、index

root

这个是server访问的资源路径目录,一般设置到你要存放静态网页文件的目录,会配合location一起使用。

index

这个是输入域名或ip优先访问的资源文件,排在前面的优先级较高。

例如这样子优先访问html目录下的index.php
Ubuntu18.04.4动态博客搭建详解(LNMP+Typecho)_第1张图片

location

这个是对url访问时的一个路由,会根据配置的路由信息进行定位,可以搭配着正则语法一起使用。参考:Nginx的location区块的作用及设置

location = / { [ configuration A ] }                     #用户请求"/"时,匹配A,例如:www.pcm.com/
location / { [ configuration B ] }                       #当用户请求"/index.html"时,匹配B,例如:www.pcm.com/index.html
location /documents/ { [ configuration C ] }             #当用户请求"/documents/"时,匹配C,例如:www.pcm.com/documents/index.html      
location ^~ /images/ { [ configuration D ] }             #当用户请求"/images/"时,匹配D,:www.pcm.com/images/1.jpg 
location ~* \.(gif|jpg|jpeg)$ { [ configuration E ] }    #当用户请求".gif|.jpg|.jpeg"时,匹配E,例如:www.pcm.com/documents/1.jpg
                                                         #上面的反斜杠是转义字符,$的意思是结尾

步骤

整体思路是:安装配置LNMP(Linux+Nginx+Mysql+Php) --> 下载安装过Typecho --> 配置博客细节

  1. 进入root用户

    su
    
  2. 更新软件源

    apt-get update
    
  3. 安装nginx

    apt-get install nginx
    
  4. 安装php 这边我安装的是7.2版本,5.1版本之后的都行,这个地方如果你是华为云服务器并且和我这个版本一样的推荐直接按我这个版本,因为和系统对应。至于后面的-fpm则是php运行服务端web程序的一个版本,不要用-cli,那是命令行版本,而还有一个-zts是线程安全的,暂时用不到,不予解释。

    apt-get insall php7.2-fpm
    
  5. 安装mysql,注意要和你安装的php版本对应

    apt-get install mysql-server php7.2-mysql
    

    至此,除了后面还有个phpadmin用于管理typecho数据库的所有软件均安装完毕


  6. 配置php,你要寻找到你php的目录一般都在/etc下,然后修改php.ini文件,将其中的 ;cgi.fix_pathinfo=1修改为 cgi.fix_pathinfo=0 注意在分号’;'是一个注释符,不要完了删掉它。

    我的php.ini在/etc/php/7.2/fpm下
    Ubuntu18.04.4动态博客搭建详解(LNMP+Typecho)_第2张图片Ubuntu18.04.4动态博客搭建详解(LNMP+Typecho)_第3张图片

  7. 重启php,此时配置完成后要重启php的服务,restart改成reload也可以,区别就是reload如果重启失败会保持上次的启动情况,也就是回退到之前成功的版本

    service php7.2-fpm restart
    
  8. 配置nginx

    cd /etc/nginx/
    

    这边sites-available和sites-enabled都有default文件,选择其中一个就好,因为两个是链接的,一般选sites-available/defaultUbuntu18.04.4动态博客搭建详解(LNMP+Typecho)_第4张图片

    vim /etc/nginx/sites-available/default 
    

    监听的是80端口,如果有多个服务可以自定义修改Ubuntu18.04.4动态博客搭建详解(LNMP+Typecho)_第5张图片
    root的资源目录设置好,这个是之后typecho的资源目录,url一般会到这个目录寻找资源,index则是设置默认的index.php
    Ubuntu18.04.4动态博客搭建详解(LNMP+Typecho)_第6张图片
    之后设置路由,这块注意的点是fastcgi_pass unix:/run/php/php7.2-fpm.sock;这是一个unix的域套接字,要和php那边的配置一致否则一直报502的错误,因为根目录和var目录下都有run文件夹。还有正则部分就不细讲,其他部分可以直接复制,修改即可
    Ubuntu18.04.4动态博客搭建详解(LNMP+Typecho)_第7张图片
    参考:

    location ~ .*\.php(\/.*)*$ {
        #       include snippets/fastcgi-php.conf;
        #
        #       # With php-fpm (or other unix sockets):
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/run/php/php7.2-fpm.sock;
                include fastcgi_params;
                fastcgi_index index.php;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        #}
                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_param SCRIPT_FILENAME $document_root$real_script_name;
                fastcgi_param SCRIPT_NAME $real_script_name;
                fastcgi_param PATH_INFO $path_info;
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #       deny all;
        #}
    }
    

    php查看unix域套接字的时候由于7.2的www部分是include进来的,所以到pool文件夹中去确认,务必要和nginx中配置的一致
    在这里插入图片描述Ubuntu18.04.4动态博客搭建详解(LNMP+Typecho)_第8张图片
    Ubuntu18.04.4动态博客搭建详解(LNMP+Typecho)_第9张图片

  9. 重启nginx,如果你修改了unix套接字监听内容则要连同php一块重启,当然如果修改的位置都在nginx中的话则只需要重启nginx即可

    service nginx restart
    
  10. 安装phpadmin,并连接到你准备存放typecho的目录下,这个要和之前你设置的root资源目录对应

    apt-get install phpmyadmin 
    ln -s /usr/share/phpmyadmin/ /usr/share/nginx/html/phpmyadmin
    
  11. 下载typech安装包并解压到nginx配置的root资源目录下

    wget http://typecho.org/downloads/1.1-17.10.30-release.tar.gz
    tar -zxvf 1.1-17.10.30-release.tar.gz -C /usr/share/nginx/html/
    
  12. 把nginx资源目录下原来的index.php删除防止与typecho的冲突,并把build中的东西全部移动到和build同级,build文件夹就可以删除

    rm /usr/share/nginx/html/index.php
    mv /usr/share/nginx/html/build/* /usr/share/nginx/html/
    rm -rf /usr/share/nginx/html/build
    

    此时资源文件如下:在这里插入图片描述

  13. 输入你服务器的ip/phpmyadmin开始创建数据库,注意关于数据库要在云服务器的安全组中添加相应的规则。
    Ubuntu18.04.4动态博客搭建详解(LNMP+Typecho)_第10张图片
    成功登陆界面:
    Ubuntu18.04.4动态博客搭建详解(LNMP+Typecho)_第11张图片

  14. 创建一个数据库用于之后存放博客相关内容,直接新建即可
    Ubuntu18.04.4动态博客搭建详解(LNMP+Typecho)_第12张图片

  15. 在浏览器中输入ip准备开始配置typecho
    Ubuntu18.04.4动态博客搭建详解(LNMP+Typecho)_第13张图片

  16. 对数据库以及相应用户信息的配置,并把该段php代码写在目录下的config.inc.php文件中
    Ubuntu18.04.4动态博客搭建详解(LNMP+Typecho)_第14张图片
    Ubuntu18.04.4动态博客搭建详解(LNMP+Typecho)_第15张图片

vim /usr/share/nginx/html/config.inc.php

Ubuntu18.04.4动态博客搭建详解(LNMP+Typecho)_第16张图片
配置成功!!!
Ubuntu18.04.4动态博客搭建详解(LNMP+Typecho)_第17张图片


问题及解决记录

  • 出现502时参考博客:戳这里
  • 出现mysql访问不了时参考博客:1,直接用Navicat连接 2,配置plugin密码

你可能感兴趣的:(Linux,Blog搭建,Nginx,Typecho,Ubuntu,Blog搭建,Nginx,MySQL)