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
在这里插入图片描述

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下
    在这里插入图片描述在这里插入图片描述

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

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

    cd /etc/nginx/
    

    这边sites-available和sites-enabled都有default文件,选择其中一个就好,因为两个是链接的,一般选sites-available/default在这里插入图片描述

    vim /etc/nginx/sites-available/default 
    

    监听的是80端口,如果有多个服务可以自定义修改在这里插入图片描述
    root的资源目录设置好,这个是之后typecho的资源目录,url一般会到这个目录寻找资源,index则是设置默认的index.php
    在这里插入图片描述
    之后设置路由,这块注意的点是fastcgi_pass unix:/run/php/php7.2-fpm.sock;这是一个unix的域套接字,要和php那边的配置一致否则一直报502的错误,因为根目录和var目录下都有run文件夹。还有正则部分就不细讲,其他部分可以直接复制,修改即可
    在这里插入图片描述
    参考:

    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中配置的一致
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

  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开始创建数据库,注意关于数据库要在云服务器的安全组中添加相应的规则。
    在这里插入图片描述
    成功登陆界面:
    在这里插入图片描述

  14. 创建一个数据库用于之后存放博客相关内容,直接新建即可
    在这里插入图片描述

  15. 在浏览器中输入ip准备开始配置typecho
    在这里插入图片描述

  16. 对数据库以及相应用户信息的配置,并把该段php代码写在目录下的config.inc.php文件中
    在这里插入图片描述
    在这里插入图片描述

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

在这里插入图片描述
配置成功!!!
在这里插入图片描述


问题及解决记录

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章