Maison > Opération et maintenance > Nginx > le corps du texte

Comment créer un blog personnel en utilisant nginx et WordPress

WBOY
Libérer: 2023-05-11 19:19:04
avant
1963 Les gens l'ont consulté

0x01 Conditions préalables

  • Il y a un nom de domaine, mon propre nom de domaine est nomansky.xyz

    #🎜 🎜#
  • Un hôte vps ou cloud, s'il s'agit d'une IP domestique, il doit être enregistré

  • Utilisateurs avec des autorisations sudo ou root , ici, j'ai créé un nouvel utilisateur wordpress pour exécuter le programme et je l'ai défini sur nologin à l'aide de la commande suivante : #

    • Utilisez sudo yum install -y epel-release pour installer la source epel
    • Fermer firewalld, je je préfère utiliser iptables pour le renforcement de la sécurité
  • #🎜🎜 #a. sudo systemctl arrêter le pare-feu
  • b. sudo systemctl désactiver le pare-feu
    • # 🎜🎜#0x02 Installez nginx
    • # 🎜🎜#Exécutez sudo yum install nginx pour installer nginx
#🎜 🎜# Démarrez le démon nginx et configurez-le pour qu'il démarre automatiquement au démarrage

#🎜 🎜#

a sudo systemctl start nginx
  • .

    b. sudo systemctl activate nginx
  • Ajoutez l'utilisateur wordpress au groupe nginx usermod -a -g nginx wordpress et définissez le répertoire autorisations chmod 770 -r /var/lib/nginx/
    • À ce moment, visitez http://nomansky.xyz et vous verrez la page suivante, ce qui signifie que nginx a été installé avec succès. #
    • 0x03 Installer mariadb

    • mariadb, en tant que branche open source de mysql, est devenue la base de données par défaut utilisée par centos pour remplace mysql, j'utilise donc également mariadb comme base de données.
  • Exécutez sudo yum install mariadb-server -y pour installer mariadb

  • Démarrez mariadb et réglez-le sur Boot Sudo SystemCTL Démarrer MariaDB # 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 # # b. pour renforcer mariadb. Vous verrez les exigences pour définir le mot de passe root de la base de données, supprimer les utilisateurs anonymes, limiter l'utilisateur root de la base de données pour qu'il puisse se connecter à l'utilisateur root de la base de données uniquement via localhost et supprimer la base de données de test. Il est recommandé de sélectionner y (oui). pour tous, comme le montre la figure ci-dessous. Le mot de passe racine de la base de données par défaut est Vide

Comment créer un blog personnel en utilisant nginx et WordPress

In. De plus, changez l'adresse d'écoute de mariadb en 127.0.0.1:3306

a vim /etc/my.cnf.d/server.cnf. Ouvrez le fichier de configuration mariadb#🎜 🎜#

    b Ajoutez bind=127.0.0.1 sous [mysqld], comme indiqué. ci-dessous
  • #🎜🎜 #

    Comment créer un compte personnel blog avec nginx et WordPress#🎜 🎜#

  • c. Exécutez systemctl restart mariadb pour redémarrer la base de données
  • d . Exécutez netstat -lntp Vous pouvez voir qu'il a été surveillé en tant qu'adresse de bouclage locale
    • 0x04 Créer une base de données

      #🎜 🎜#Après avoir installé la base de données mariadb et l'avoir renforcée, nous devons naturellement créer une nouvelle base de données pour stocker les données. Tout d'abord, nous utilisons le mot de passe du compte root précédemment défini pour nous connecter à la base de données mysql -uroot -p et exécutez les instructions suivantes
    • create database wordpress character set utf8mb4 collate utf8mb4_general_ci; # 创建数据库
      grant all on wordpress.* to 'wordpress'@'localhost' identified by '你的密码'; # 创建用户
      flush privileges;                              # 刷新数据库权限
      exit;
      Copier après la connexion
      #🎜🎜 #
    • 0x05 Install php

    • La version par défaut de php dans centos est 5.4, mais la version recommandée par wordpress est 7.2, nous installons donc la version de php7.2 ici
    Execute La commande suivante installe php et toutes les extensions php requises
  • sudo yum install yum-utils
    sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
    sudo yum-config-manager --enable remi-php72
    sudo yum install php-cli php-fpm php-mysql php-json php-opcache php-mbstring php-xml php-gd php-curl
    Copier après la connexion

    Nous avons installé php fpm car nous utilisons nginx comme serveur Web , et nginx n'est pas fourni avec ce composant. De plus, php fpm s'exécute par défaut sur le port 9000 en tant qu'utilisateur Apache. Nous avons changé cet utilisateur en wordpress et l'avons changé de socket TCP en socket Unix. Pour des modifications spécifiques, veuillez consulter les étapes suivantes

    Open. /etc/php-fpm.d/www.conf, et modifiez les endroits suivants
  • ...
    user = wordpress
    ...
    group = wordpress
    ...
    listen = /run/php-fpm/www.sock
    ...
    listen.owner = wordpress
    listen.group = wordpress
    Copier après la connexion
Utilisez la commande sudo chown -r root:wordpress /var/ lib/php< /code>Assurez-vous que toutes les autorisations de groupe du répertoire sont wordpress<p ><img src="https://img.php.cn/upload/article/000/887/227/168380394650486.png" alt="Comment créer un blog personnel en utilisant nginx et WordPress" />Redémarrez et démarrez php fpm</p><p ><code>127.0.0.1:3306

a. vim /etc/my.cnf.d/server.cnf打开mariadb的配置文件

b. 在[mysqld]下面加上bind=127.0.0.1,如下图所示

Comment créer un blog personnel en utilisant nginx et WordPress

c. 执行systemctl restart mariadb重启数据库

d. 执行netstat -lntp可以看到已经监听为本地回环地址了

0x04 创建数据库

在安装完mariadb数据库,并对其进行加固后,我们自然需要新建一个数据库来存放数据,这里首先我们用之前设置的root账号密码来登陆数据库mysql -uroot -p,并执行以下几条语句

server {
  server_name www.nomansky.xyz nomansky.xyz;

  location ^~ /.well-known/acme-challenge/ {
    alias /home/wordpress/challenges/;
    try_files $uri =404;
  }

  location / {
    rewrite ^/(.*)$ https://nomansky.xyz/ permanent;
  }
}
Copier après la connexion

0x05 安装php

centos的php默认版本为5.4,但是wordpress推荐的版本为7.2,所以我们这里安装php7.2的版本
执行下列命令安装php和所有需要的php扩展

wget -o - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem
cat signed.crt intermediate.pem > chained.pem
Copier après la connexion
Copier après la connexion

我们安装php fpm是因为我们是用nginx作为web server,而nginx并没有自带这个组件。此外,php fpm 默认是以apache用户运行在9000端口,我们把这个用户改为wordpress并且把它从tcp socket改为unix socket,具体怎么修改查看下面的步骤

打开/etc/php-fpm.d/www.conf,并修改如下地方

wget -o - https://letsencrypt.org/certs/isrgrootx1.pem > root.pem
cat intermediate.pem root.pem > full_chained.pem
Copier après la connexion
Copier après la connexion

用命令sudo chown -r root:wordpress /var/lib/php确保目录的所有组权限为wordpress

重启并开机自启动php fpm

a. sudo systemctl restart php-fpm
b. sudo systemctl enable php-fpm

0x06 申请免费证书

作为一个技(qiong)术(bi)宅,自然有免费的证书就肯定用免费的。因此我们可以申请免费的let's encrypt证书,这个证书不但免费,而且操作非常简单,虽然每次只有90天的有效期,但可以通过脚本配置crontab定期更新。

a. mkdir -p /etc/nginx/ssl目录存放证书

b. openssl genrsa 4096 > account.key进入这个目录,创建一个 rsa 私钥用于 let's encrypt 识别你的身份

c. openssl genrsa 4096 > domain.keya sudo systemctl. redémarrer php-fpm< /code><br/>b. <code>sudo systemctl activer php-fpm

#🎜🎜##🎜🎜#0x06 Demander un certificat gratuit#🎜🎜## 🎜🎜##🎜🎜# En tant que geek technique (qiong) technique (bi), naturellement s'il existe un certificat gratuit, j'utiliserai certainement celui gratuit. Par conséquent, nous pouvons demander un certificat let's encrypt gratuit. Ce certificat est non seulement gratuit, mais aussi très simple à utiliser. Bien qu'il ne soit valable que 90 jours à la fois, il peut être mis à jour régulièrement en configurant la crontab via un script. . #🎜🎜##🎜🎜##🎜🎜#a. Le répertoire mkdir -p /etc/nginx/ssl stocke le certificat #🎜🎜##🎜🎜##🎜🎜#b. > openssl genrsa 4096 > account.keyEntrez dans ce répertoire et créez une clé privée rsa pour que nous puissions vous identifier #🎜🎜##🎜🎜##🎜🎜#c openssl genrsa 4096 &gt ; domain.keyCréer un nom de domaine clé privée rsa#🎜🎜##🎜🎜#

d. openssl req -new -sha256 -key domain.key -out domain.csr有了私钥文件,就可以生成 csr 文件了。生成csr会要求填入一些东西信息,这里common name为你的域名

Comment créer un blog personnel en utilisant nginx et WordPress

我们知道,ca 在签发 dv(domain validation)证书时,需要验证域名所有权。传统 ca 的验证方式一般是往 admin@yoursite.com 发验证邮件,而 let's encrypt 是在你的服务器上生成一个随机验证文件,再通过创建 csr 时指定的域名访问,如果可以访问则表明你对这个域名有控制权。所以首先创建用于存放验证文件的目录,例如:
mkdir /home/wordpress/challenges

然后配置一个http服务,以nginx为例:

server {
  server_name www.nomansky.xyz nomansky.xyz;

  location ^~ /.well-known/acme-challenge/ {
    alias /home/wordpress/challenges/;
    try_files $uri =404;
  }

  location / {
    rewrite ^/(.*)$ https://nomansky.xyz/$1 permanent;
  }
}
Copier après la connexion

以上配置表示查找 /home/wordpress/challenges/ 目录下的文件,如果找不到就重定向到 https 地址。这个验证服务以后更新证书还要用到,要一直保留。

接下来把acme-tiny保存到ssl目录wget https://raw.githubusercontent.com/diafygi/acme-tiny/master/acme_tiny.py

然后指定账户私钥、csr 以及验证目录,执行脚本python acme_tiny.py --account-key ./account.key --csr ./domain.csr --acme-dir /home/wordpress/challenges/ > ./signed.crt,看到如下图所示,则说明生成成功了

Comment créer un blog personnel en utilisant nginx et WordPress

最后还要下载let's encrypt 的中间证书,配置https证书时既不要漏掉中间证书,也不要包含根证书。在 nginx 配置中,需要把中间证书和网站证书合在一起:

wget -o - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem
cat signed.crt intermediate.pem > chained.pem
Copier après la connexion
Copier après la connexion

为了后续能顺利启用ocsp stapling,我们再把根证书和中间证书合在一起(此步也可省略)

wget -o - https://letsencrypt.org/certs/isrgrootx1.pem > root.pem
cat intermediate.pem root.pem > full_chained.pem
Copier après la connexion
Copier après la connexion

let's encrypt签发的证书只有90天有效期,推荐使用脚本定期更新。创建一个renew_cert.sh并通过chmod a+x renew_cert.sh赋予执行权限。文件内容如下:

#!/bin/bash

cd /etc/nginx/ssl/
python acme_tiny.py --account-key account.key --csr domain.csr --acme-dir /home/wordpress/challenges/ > signed.crt || exit
wget -o - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem
cat signed.crt intermediate.pem > chained.pem
systemctl restart nginx
Copier après la connexion

在crontabl中配置定时任务0 0 1 * * /etc/nginx/ssl/renew_cert.sh >/dev/null 2>&1

0x07 下载wordpress并配置nginx

将wordpress下载到/home/wordpress/目录下wget https://wordpress.org/latest.tar.gz

tar zxvf latest.tar.gz解压wordpress文件

chown -r wordpress:wordpress wordpress将wordpress目录的所有者改为wordpress用户

接着,打开vim /etc/nginx/nginx.conf将nginx的运行角色改为wordpress

···
user wordpress;
worker_processes auto;
···
Copier après la connexion

然后这里我把处于解耦合的目的,把主配置文件nginx.conf里的server配置块注释掉

新建sudo mkdir /etc/nginx/snippets目录并vim letsencrypt.conf来将以下配置粘贴到里面

location ^~ /.well-known/acme-challenge/ {
   alias /home/wordpress/challenges/;
   try_files $uri =404;
}
Copier après la connexion

接下来新建vim /etc/nginx/conf.d/wordpress.conf配置文件,修改成如下配置

 # redirect http -> https
  server {
    listen 80;
    server_name www.nomansky.xyz nomansky.xyz;

    include snippets/letsencrypt.conf;
    return 301 https://nomansky.xyz$request_uri;
  }

  # redirect www -> non www
  server {
    listen 443 ssl http2;
    server_name www.nomansky.xyz;

    ssl_certificate /etc/nginx/ssl/chained.pem;
    ssl_certificate_key /etc/nginx/ssl/domain.key;

    return 301 https://nomansky.com$request_uri;
  }

  server {
    listen 443 ssl http2;
    server_name nomansky.com;

    root /home/wordpress/wordpress;
    index index.php;

    # ssl parameters
    ssl_certificate /etc/nginx/ssl/chained.pem;
    ssl_certificate_key /etc/nginx/ssl/domain.key;

    # log files
    access_log /home/wordpress/log/nomansky.xyz.access.log;
    error_log /home/wordpress/log/nomansky.xyz.error.log;

    location = /favicon.ico {
      log_not_found off;
      access_log off;
    }
    
          location = /robots.txt {
      allow all;
      log_not_found off;
      access_log off;
    }

    location / {
      try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
      try_files $uri =404;
      fastcgi_pass unix:/run/php-fpm/www.sock;
      fastcgi_index  index.php;
      fastcgi_param script_filename $document_root$fastcgi_script_name;
      include fastcgi_params;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
      expires max;
      log_not_found off;
    }
Copier après la connexion

创建日志目录mkdir -p /home/wordpress/log,并设置权限chown -r wordpress:wordpress /home/wordpress/log

nginx -t查看是否是否语法检查正常,如正常则nginx -s reload重载nginx

接下来看到wordpress页面成功打开了,就此大功告成啦

Comment créer un blog personnel en utilisant nginx et WordPress

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal