Maison > Article > Opération et maintenance > Comment créer un blog personnel en utilisant nginx et WordPress
0x01 Conditions préalables
Il y a un nom de domaine, mon propre nom de domaine est nomansky.xyz
#🎜 🎜##🎜 🎜#
a sudo systemctl start nginx.
b. sudo systemctl activate nginx
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
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#🎜 🎜#
bind=127.0.0.1
sous [mysqld]
, comme indiqué. ci-dessous#🎜 🎜#
systemctl restart mariadb
pour redémarrer la base de donnéesnetstat -lntp
Vous pouvez voir qu'il a été surveillé en tant qu'adresse de bouclage locale 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;#🎜🎜 #
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
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
/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 = wordpressUtilisez la commande
sudo chown -r root:wordpress /var/ lib/phpAssurez-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
,如下图所示
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; } }
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
我们安装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
用命令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.key
a sudo systemctl. redémarrer php-fpm<br>b. <code>sudo systemctl activer php-fpm
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 > ; domain.key
Créer un nom de domaine clé privée rsa#🎜🎜##🎜🎜#d. openssl req -new -sha256 -key domain.key -out domain.csr
有了私钥文件,就可以生成 csr 文件了。生成csr会要求填入一些东西信息,这里common name为你的域名
我们知道,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; } }
以上配置表示查找 /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
,看到如下图所示,则说明生成成功了
最后还要下载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
为了后续能顺利启用ocsp stapling,我们再把根证书和中间证书合在一起(此步也可省略)
wget -o - https://letsencrypt.org/certs/isrgrootx1.pem > root.pem cat intermediate.pem root.pem > full_chained.pem
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
在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; ···
然后这里我把处于解耦合的目的,把主配置文件nginx.conf里的server配置块注释掉
新建sudo mkdir /etc/nginx/snippets
目录并vim letsencrypt.conf
来将以下配置粘贴到里面
location ^~ /.well-known/acme-challenge/ { alias /home/wordpress/challenges/; try_files $uri =404; }
接下来新建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; }
创建日志目录mkdir -p /home/wordpress/log
,并设置权限chown -r wordpress:wordpress /home/wordpress/log
nginx -t
查看是否是否语法检查正常,如正常则nginx -s reload
重载nginx
接下来看到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!