博客搭建记录

​ 最初计划是采购了阿里云服务器来学习搭建自己的博客网站,经过一段时间折腾,也终于搭建起来了,该文档记录了在搭建过程中实用的一些工具以及遇到的各种问题。运行了一段时间发现数据库不稳定,经过排查大概定位到是由于没有足够内存可以分配导致进程挂掉。阿里云的服务器采购的是最低配的,所以暂时没有做进一步处理了。近期时间我又在github上尝试搭建自己的网站,搭建成功后,可能会将域名解析到gtihub.io的网站上。

1. 初始化配置:

1.1 nginx安装:

  • 安装必须依赖:

    yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
  • 官网下载nginx:https://nginx.org/download/

  • 到自定义目录下解压/etc/nginx/,并执行./configure命令 成功后,再执行 make install命令

    ./configure
    make install   
  • nginx启动命令在 /usr/local/sbin/nginx

  • 如果需要可以在/etc/profile 配置环境变量

    NGINX_HOME='/usr/local/nginx/sbin'  
    source /etc/profile
    #执行nginx启动
    nginx
    # 关闭nginx命令:
    nginx -s stop
    
    # 目录设置为root用户组
    chown -R root:root /etc/nginx/nginx-1.19.8
  • 设置开机自启动:

    #1. 创建启动脚本:
    vi /etc/init.d/nginx
    # 脚本内容如下,注意修改自己的安装路径PATH和NAME
    
    #! /bin/bash
    # chkconfig: - 85 15
    PATH=/usr/local/nginx
    DESC="nginx daemon"
    NAME=nginx
    DAEMON=$PATH/sbin/$NAME
    CONFIGFILE=$PATH/conf/$NAME.conf
    PIDFILE=$PATH/logs/$NAME.pid
    SCRIPTNAME=/etc/init.d/$NAME
    set -e
    [ -x "$DAEMON" ] || exit 0
    do_start() {
    $DAEMON -c $CONFIGFILE || echo -n "nginx already running"
    }
    do_stop() {
    $DAEMON -s stop || echo -n "nginx not running"
    }
    do_reload() {
    $DAEMON -s reload || echo -n "nginx can't reload"
    }
    case "$1" in
    start)
    echo -n "Starting $DESC: $NAME"
    do_start
    echo "."
    ;;
    stop)
    echo -n "Stopping $DESC: $NAME"
    do_stop
    echo "."
    ;;
    reload|graceful)
    echo -n "Reloading $DESC configuration..."
    do_reload
    echo "."
    ;;
    restart)
    echo -n "Restarting $DESC: $NAME"
    do_stop
    do_start
    echo "."
    ;;
    *)
    echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
    exit 3
    ;;
    esac
    exit 0
    
    #3. 设置执行权限:
    hmod a+x /etc/init.d/nginx
    #4. 注册服务:
    chkconfig --add nginx
    #5. 设置开机自启动:
    chkconfig nginx on

1.2 mysql安装:

​ 参考资料: https://www.jianshu.com/p/276d59cbc529

  • 检查是否安装mysql:

    rpm -qa | grep mysql
    #如果不出现任何内容说明没有安装,如果有安装则参考如下步骤完全卸载:
    rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64
    #2. 查询所有mysql对应的文件夹:
    whereis mysql
    #3. 删除相关目录或文件
    rm -rf /usr/lib64/mysql /usr/share/mysql
  • 检查mysql用户组和用户是否存在,若不存在则创建:

    cat /etc/group | grep mysql
    cat /etc/passwd |grep mysql
    
    #添加
    groupadd mysql
    useradd -r -g mysql mysql
  • 从官网下载mysql 5.7的安装包[从官网选择合适版本:https://downloads.mysql.com/archives/community/]:

    wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
    #解压后移动到/usr/local目录下,重命名为mysql
    mv mysql-5.7.32-linux-glibc2.12-x86_64/ /usr/local/
    cd /usr/local/
    mv mysql-5.7.32-linux-glibc2.12-x86_64/ mysql/
  • 创建data目录:

    cd /usr/local/mysql
    mkdir data
    # 更改mysql目录下所有的目录及文件夹所属的用户组和用户,以及权限
    chown -R mysql:mysql /usr/local/mysql
    chmod -R 755 /usr/local/mysql
  • 编译安装初始化:

    #在mysql的bin目录下执行:
    ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
    #初始化后会生成临时的数据库密码,要保存: sski+dj=7VXg
    • 初始化遇到错误:

      ./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

      #1. 检查该链接库有没有安装
      rpm -qa|grep libaio 
      #2. 如果没有该库文件,则安装:
      yum install  libaio-devel.x86_64
  • 修改配置文件my.cnf:

    #1. 设置数据文件存储路径
    datadir=/usr/local/mysql/data
    #2. 配置端口号
    port=3306
    #3.设置数据库默认字符编码
    character_set_server=utf8
  • 测试启动mysql:

    /usr/local/mysql/support-files/mysql.server start
    • 启动遇到错误:

      1. The server quit without updating PID file (/vusr/local/mysq[FAILED]zbp159tpwttz612qarv11z.pid).

      本错误是由于my.cnf文件中datadir路径配置不正确导致的,/usr 误写为/vusr ....

      1. 如果不是由于配置错误导致的,可以尝试下面解决方法:
      #查询服务
      ps -ef|grep mysql | grep -v grep
      ps -ef|grep mysqld | grep -v grep
      #结束进程
      kill -9 PID
      #启动服务
       /usr/local/mysql/support-files/mysql.server start
      1. mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists:
      # 因为没有路径也没有权限,所以创建此路径并授权给mysql用户
      mkdir /var/log/mariadb
      touch /var/log/mariadb/mariadb.log
      # 用户组及用户
      chown -R mysql:mysql /var/log/mariadb/
      #尝试重新启动:
      /usr/local/mysql/support-files/mysql.server start
      1. mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists.:
      # 该路径是配置在my.cnf中的socket参数的值,一样是因为没有权限
      mkdir /var/lib/mysql
      # 用户组及用户
      chown -R mysql:mysql /var/lib/mysql
      #尝试重新启动:
      /usr/local/mysql/support-files/mysql.server start
  • 添加软连接并重启mysql

    ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
    ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
    service mysql restart
  • 登录mysql,修改临时密码:

    1.# mysql -uroot -p

    结果无法登录,提示: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

    # 结果方法:通过find / -name mysql.sock 查看该文件的位置
    # 通过ln -s 做软连接
    ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

    修改临时密码:

    set password for root@localhost = password("root");
  • 开放远程连接:

    use mysql;
    update user set user.Host='%' where user.User='root';
    flush privileges;
  • 设置开机自启动:

    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
    chmod +x /etc/init.d/mysqld
    chkconfig --add mysqld
    chkconfig --list

1.3 jdk安装:

  • 查询要安装jdk的版本:

    yum -y list java*
  • 安装jdk1.8:

    yum install -y java-1.8.0-openjdk.x86_64
  • 查询jdk版本:

    java -version

2. centos7搭建wordpress:

2.1 安装web服务:

  • 安装apache web服务器:

    注意: apache和nginx二选一即可。

    yum insall httpd
    # 安装目录为: /etc/httpd
    # 启动关闭命令:
    /usr/sbin/apachectl start 
    /usr/sbin/apachectl stop
    # 查看默认80端口监听状态:
    netstat -antlp | grep 80
    # 也可以通过网址访问查看是否运行正常
    # 可以在/etc/httpd/conf/httpd.conf 下查看首页配置信息。
    # 通过一下命令查找首页位置:
    find / -name index.html
    
    # 卸载httpd:
    yum erase httpd

2.2 安装php:

  • 安装php环境:

    yum install php
    yum install php-mysql
    yum install  php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc
    # 安装完成后php -v 显示版本是5.4 需要升级到7.x
    • php版本升级操作:

      #1. 查看当前 PHP 相关的安装包 
      yum list installed | grep php
      #2. 更换 RPM 源  centos7执行如下命令
      rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
      rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
      #3. 关闭 php-fpm 和 nginx 服务
      service php-fpm stop
      nginx -s quit
      #4. 删除已经安装的php相关包
      yum remove php*
      
      # 安装php7.4:
      #1. 添加EPEL和REMI存储库
      yum install epel-release
      yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
      #2. 可以启用PHP 7.4 Remi存储库
      yum -y install yum-utils
      yum repolist all |grep php
      yum-config-manager --enable remi-php74
      #3. 安装php7.4
      yum install php  php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json php-redis
      #4. 查看版本:
      php -v
    • 测试:

      在/var/www/html下新建一个文件test.php,内容如下:

      然后重启一下httpd服务,在浏览器访问ip/test.php查看

  • pfp-fpm操作命令:

    #fpm默认占用的是9000端口
    yum install php-fpm;
    
    #查看是否安装成功
    php-fpm -v;
    
    #启动php-fpm
    systemctl start php-fpm
    
    service php-fpm status
  • php安装问题:

    • 安装路径:

      如果采用RPM包安装,安装路径应在 /etc/目录下。php的配置文件:/etc/php.ini

    • php-fpm启动失败问题:

        1. 配置文件修改:

          相关配置文件路径: /etc/php.ini /etc/php-fpm.conf /etc/php-fpm.d/www.conf

          # php.ini
          cgi.fix_pathinfo=0
          
          # www.conf
          [www]
          listen = /tmp/php-cgi-74.sock
          listen.backlog = -1
          listen.allowed_clients = 127.0.0.1
          listen.owner = www
          listen.group = www
          listen.mode = 0666
          user = www
          group = www
          pm = dynamic
          
          pm.max_children = 100
          pm.start_servers = 20
          pm.min_spare_servers = 20
          pm.max_spare_servers = 70
          request_terminate_timeout = 100
          request_slowlog_timeout = 30
          slowlog = /var/log/slow.log
          
        1. php-fpm启动失败:

        ERROR: [pool www] cannot get uid for user 'www': 错误信息提示没有www用户

        # 解决方法: 添加www用户
        useradd www

        ERROR: [pool www] please specify user and group o... root

        提示需要验证用户和用户组,因为原来是www用户组,现在改为了root

        # 解决方法1:
        # 通过php-fpm命令启动指定-R参数  不是systemctl start fpm
        /usr/sbin/php-fpm -R 

2.3 安装wordpress:

  • 从官网下载wordpress,并解压到/var/www/html/目录下

    wget https://cn.wordpress.org/latest-zh_CN.tar.gz
  • 修改配置信息:

    #1. 复制配置文件
    cp wp-config-sample.php wp-config.php
    #2. 配置数据库信息
    vim  wp-config.php
    #3. 需要现在mysql中创建好数据库 wordpress
    create database wordpress
  • 访问网址: http://xxxxx/wp-admin/install.php 开始安装。

3. 网站搭建问题:

3.1 nginx使用问题:

  • 修改了配置,确始终不生效的问题:由于nginx又两个配置文件,一个是安装的一个运行的,所以一定要确保修改的是运行的配置文件。

    # 通过命令查找
    find / -name nginx.conf
  • 解决了首页请求路径的配置问题,访问首页出现了500状态码,查看nginx错误日志如下:

    rewrite or internal redirection cycle while internally redirecting to "/"

    还是nginx配置文件不当引起的问题。

    # 正确的配置文件如下:
    server{
        listen 80;
        server_name your_server-name; # 你的域名
    
        location / {
           root /var/www/html; # 你的网站根目录
           index index.php;    # 首页
           #try_files $uri $uri/ /index.php?q=$uri&$args;
           try_files $uri $uri/ =404;
        }
        location ~ \.php$ {
            root /var/www/html;
            index index.php;
            #fastcgi_pass 127.0.0.1:9000;
            fastcgi_pass unix:/tmp/php-cgi-74.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
            include fastcgi_params;
            #try_files $uri =404;
        }
    
        location ~ /\.ht {
            deny  all;
        }
    
    }

3.2 wordpress使用问题:

  • 没有wp-content文件的写权限:

    #1. 将文件目录的用户组和httpd的用户组保持一致
    chown -R root:root wp-content
    #2. 赋予读写权限
    chmod -R 777 wp-content
  • 上传图像时,提示裁剪图像时出现错误:

    #1. 原因是缺少 PHP GD 库 确认版本号  centos下执行如下命令:
    yum install php-gd
    #2. 查看go.so所在位置
    rpm -qal | grep gd.so
    # 查找结果如下:
    /usr/lib64/php-zts/modules/gd.so
    /usr/lib64/php/modules/gd.so
    /usr/lib64/libgd.so.3
    /usr/lib64/libgd.so.3.0.10
    
    #3. 在/etc/php.ini文件中  [gd]配置选项最后添加如下内容
    extension=/usr/lib64/php-zts/modules/gd.so
  • wordpress安装插件时 出现ftp认证:

    #1. 在wp-contenet目录下创建tmp目录
    cd /var/www/html/wp-content/
    mkdir tmp
    # 设置tmp目录为777
    chmod 777 tmp/
    
    #2. 修改wp-config.php文件 在原有的ABSPATH下新增如下四行配置
    
    if ( ! defined( 'ABSPATH' ) ) {
            define( 'ABSPATH', __DIR__ . '/' );
    }
    define('WP_TEMP_DIR', ABSPATH.'wp-content/tmp');
    define("FS_METHOD", "direct");
    define("FS_CHMOD_DIR", 0777);
    define("FS_CHMOD_FILE", 0777);
  • 在线安装插件失败问题:

    nginx配置文件新增如下参数:

    large_client_header_buffers 4 16k;
    client_max_body_size 30m;
    client_body_buffer_size 128k;
    fastcgi_connect_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers   4 32k;
    fastcgi_busy_buffers_size 64k;
    fastcgi_temp_file_write_size 64k;

    选择离线安装的方式: 将插件zip包解压到wp-content/plugins目录下

  • https配置:

    证书申请:

    阿里云购买的服务器提供免费的dv单域名证书,自己可以通过如下方式申请:

    (1)云盾控制台 按步骤申请免费的dv证书或者(2)域名控制台--> 管理域名--> 开启ssl证书

    两种方式都可以,签发证书后 下载对应的证书

    证书签发后,在nginx配置ssl证书:

    • wordpress.conf 添加如下配置信息:

      listen 443 ssl;
      
      ssl_certificate      /usr/local/nginx/ssl/XXX.pem; # pem文件位置
      ssl_certificate_key  /usr/local/nginx/ssl/XXX.key; # key文件位置
      
      ssl_session_timeout  5m;
      ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
      
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_prefer_server_ciphers  on;

      如果启动nginx提示没有ssl模块,则需要先安装一下:

      #1. 在nginx解压的目录下,找到configure命令,执行:
      ./configure --with-http_ssl_module
      #2. 执行make编译
      make
      #3. 为了保险可以先备份原来安装后的nginx文件[这个是在安装目录] /usr/local/nginx/sbin/nginx
      cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
      #4. 关闭nginx服务,替换nginx文件,将刚才在解压目录下编译后生成的./objs/nginx文件替换到安装目录下
      cp ./objs/nginx /usr/local/nginx/sbin/
      #5. 查看安装结果:这时会看到又http_ssl_module
      /usr/local/nginx/sbin/nginx -V
      #6. 重启nginx

3.3 wordpress插件:

  • 安装哪些插件:

    1. WP-China-Yes : 能够解决在线安装的问题
    2. WP Githuber MD: markdown语法插件
    3. WP-PostViews: 访问量统计插件
  • 如何实现网站访问次数统计:

    1. 需要安装插件: WP-PostViews

    2. 在外观->主题编辑器中 找到首页index.php 找到:

      行 在后面添加如下代码:

      if(function_exists('the_views')) { the_views(); }

  • 网站隐藏管理路径:

    Hide My WP插件

    https://yore.cc/wp-login.php?hmw_disable=337866

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

请我喝杯咖啡吧~

支付宝
微信