阿里云安装 wordpress 教程,Centos8搭建LNMP环境

阿里云安装wordpress,Centos8使用Dnf搭建LNMP环境

阿里云Centos8使用Dnf安装LNMP,WordPress安装教程

阿里云搭建LNMP环境,安装 在阿里云中设置好centos8的操作系统后,先做一些基本的设置。阿里云安装 wordpress

阿里云安装centos8中文语言包

通过 dnf search 命令搜索中文语言包

dnf search langpacks

发现简体中文的安装包是:langpacks-zh_CN.noarch
直接通过DNF命令:

dnf install langpacks-zh_CN

修改语言:

vi /etc/locale.conf

将原来的内容修改成下面内容:

LANG="zh_CN.UTF-8"

最后通过命令:locale -a 查看一下zh_CN有没有安装成功

阿里云在centos8下配置EPEL和REMI源

安装epel存储库

dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

确认epel库是否安装成功

rpm -qa | grep epel

安装remi存储库

dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

确认remi库是否安装成功

rpm -qa | grep remi

软件源安装完毕后,重新建立dnf缓存

dnf makecache

如果是Centos9的话,按照下面路径安装软件源

dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

获取所有正在运行的服务,查看端口占用情况:

systemctl list-units --type=service
netstat -lntup
阿里云安装 wordpress 教程,Centos8搭建LNMP环境

阿里云在cnetos8下通过DNF安装php/nginx/mysql

阿里云安装php

成功添加EPEL和Remi存储库后,执行以下命令以获取可用PHP模块流的列表:

dnf module list php


重置php模块:

dnf module reset php


启用对应php版本的流模块,这里我们安装的是php7.4的版本,所以启用remi-7.4版本的流:

dnf module enable php:remi-7.4

安装PHP,此命令还安装许多其他软件包:

dnf install php
dnf install php-mysqlnd php-gd 

 
安装好PHP后,修改PHP权限:

vi /etc/php-fpm.d/www.conf


user =
group = nginx 当安装wordpress 无法创建目录时候要确保,wp文件存放目录,nginx的用户组还有PHP的用户组在同一用户下。
修改wp存放目录的权限:

chown -R nginx:nginx /home/www


查看php-fpm属于哪个用户组:

ps -ef | grep php-fpm

修改PHP配置文件:

vi /etc/php.ini


cgi.fix_pathinfo, 修改为=0;
upload_max_filesize = 2M 文件上传大小,默认值太小,建议修改1024M
display_errors = on 打印错误
post_max_size = 8M 表单最大值,建议1024M
max_execution_time=600 php脚本最大执行时间 权限设置:

chown -R nginx:nginx /run/php-fpm/www.sock

查看php是否安装成功:

php -v

设置开机启动、运行服务:

systemctl enable php-fpm

 

systemctl start php-fpm


常用操作命令:
重启:

systemctl restart php-fpm


启动:

systemctl start php-fpm


关闭:

systemctl stop php-fpm


状态:

systemctl status php-fpm

阿里云安装nginx

成功添加EPEL和Remi存储库后,执行以下命令以获取可用nginx模块流的列表:

dnf module list nginx


重置nginx模块:

dnf module reset nginx

启用对应nginx版本的流模块,这里我们安装的是nginx1.18的版本,所以启用nginx1.18版本的流:

dnf module enable nginx:1.18

安装nginx,此命令还安装许多其他软件包:

dnf install nginx -y


查看nginx是否安装成功:

nginx -v

查看端口占用情况:

netstat -lntup

设置开机启动、运行服务:

systemctl enable nginx

 

systemctl start nginx

卸载nginx

dnf remove nginx

常用命令:
重启:

systemctl restart nginx


启动:

systemctl start nginx


关闭:

systemctl stop nginx


状态:

systemctl status nginx

注意:如果安装的nginx版本中不支持php,会导致打开php页面后下载页面。你可以创建一个test.php的测试页面。 页面内容:

<?php
phpinfo();
?>

  如果不支持php,需要在nginx的安装目录 /etc/nginx  下创建conf.d和default.d文件夹。 创建/default.d/php.conf 文件,文件内容如下:

# pass the PHP scripts to FastCGI server
#
# See conf.d/php-fpm.conf for socket configuration
#
index index.php index.html index.htm;

location ~ \.php$ {
try_files $uri =404;
fastcgi_intercept_errors on;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass php-fpm;
}

  创建/conf.d/php-fpm.conf 文件,文件内容如下:

# PHP-FPM FastCGI server
# network or unix domain socket configuration

upstream php-fpm {
server unix:/run/php-fpm/www.sock;
}

在nginx.conf文件内,要加入两个文件夹的插入引用语句。

nginx生成域名证书ssl

使用acme.sh脚本申请ssl证书。 先安装socat:

dnf install socat


安装 acme.sh

curl  https://get.acme.sh | sh


注意脚本安装后,一定要重新启动。

reboot

证书申请:
在nginx里设置好域名后,再进行证书申请,例如:

acme.sh  --issue  -d www.uzbox.tk -d uzbox.tk --webroot  /home/uzbox/


也可以使用读取nginx配置的命令,如果nginx里没有设置站点请先设置站点。

acme.sh  --issue  -d www.uzbox.tk -d uzbox.tk --nginx

证书申请成功后,进行证书安装: 首先在nginx的配置文件的server块中加入:

ssl_certificate /home/ssl/uzbox.tk/fullchain.cer;
ssl_certificate_key /home/ssl/uzbox.tk/uzbox.tk.key;

  域名证书申请成功后,需要将证书安装在指定位置,在/home/文件夹内新建/ssl/文件夹,在/ssl/文件夹下建立证书存放文件夹/uzbox.tk/。 之后运行下面的命令进行证书安装。注意:如果你没有建立证书存放的文件夹,证书安装会失败,错误提示:无法触摸'/home/ssl/uzbox.tk/uzbox.tk.key':没有这样的文件或目录。

acme.sh --installcert -d  uzbox.tk --key-file /home/ssl/uzbox.tk/uzbox.tk.key --fullchain-file /home/ssl/uzbox.tk/fullchain.cer --reloadcmd "service nginx force-reload"

更详细的域名证书申请教程:acme.sh 免费申请域名SSL/TSL证书

在阿里云CentOS 8下通过dnf安装MySQL

使用最新的包管理器安装

dnf install @mysql


开启启动

systemctl enable --now mysqld


检查MySQL服务器是否正在运行

systemctl status mysqld

添加密码及安全设置
运行mysql_secure_installation脚本,该脚本执行一些与安全性相关的操作并设置MySQL根密码:

sudo mysql_secure_installation


步骤如下:
要求你配置VALIDATE PASSWORD component(验证密码组件): 输入y ,回车进入该配置
选择密码验证策略等级, 我这里选择0 (low),回车
输入新密码两次
确认是否继续使用提供的密码?输入y ,回车
移除匿名用户? 输入y ,回车
允许root远程登陆? 输入n ,回车
移除test数据库? 输入y ,回车
重新载入权限表? 输入y ,回车
配置mysql远程登陆,如果需要设置root账户远程登陆,重复上一步骤中,允许root远程登陆?这一步需要设为y。
接下来本机登录MySQL,将root用户的host字段设为'%',意为接受root所有IP地址的登录请求。
设置之后重启mysql服务

systemctl restart mysqld


MySQL8.0默认已经是utf8mb4字符集,所以字符集不再修改

阿里云安装phpMyAdmin

网站:https://www.phpmyadmin.net/
下载最新版本的phpMyAdmin,phpMyAdmin是可视化的mysql管理工具。

wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz


下载之后解压缩文件

tar -zxvf phpMyAdmin-latest-all-languages.tar.gz


将解压缩后的文件改名

mv phpMyAdmin-5.2.0-all-languages phpMyAdmin


移动文件夹到网站目录下

mv phpMyAdmin /home/www


安装过后如果没有安装php扩展的,需要php安装php-mysqlnd扩展

dnf install php-mysqlnd

最后把web目录重新赋权。

chown -R nginx:nginx /home/www

修改phpMyAdmin配置文件:

在phpMyAdmin主目录下,将配置文件改名。

cd  /home/uzbox/phpMyAdmin/

 

mv config.sample.inc.php config.inc.php

 

vi config.inc.php

$cfg[‘Servers'][$i][‘host'] = ‘localhost';改成 $cfg[‘Servers'][$i][‘host'] = ‘127.0.0.1';
然后修改phpMyAdmin用于cookies的短密码。
$cfg[‘blowfish_secret'] = ”; 改成 $cfg[‘blowfish_secret'] = ‘123456'; (注:其中的'123456′为任意大于32位的字符。)
这个密码用于Cookies的加密,以免多个PhpMyAdmin或者和其他程序共用Cookies时搞混。

阿里云安装 wordpress 教程,Centos8搭建LNMP环境

修改session路径(例如/var/lib/php/session)的用户组以及权限,然后去到相应session路径

cd /var/lib/php

 

chown nginx:nginx ./session

 

chmod -R 777 ./session


在phpmyadmin目录下新建tmp文件夹,权限设置777

chmod -R 777 /home/uzbox/phpMyAdmin/tmp


解决phpMyAdmin中高级功能尚未完全设置,部分功能未激活的问题。
在phpMyAdmin里点击创建一个phpmyadmin的空数据库就可以解决了。
最后在Nginx中配置phpMyAdmin的访问路径后就可以正常访问了。 访问phpmyadmin时显示空白怎么办? 换一个版本试一下! 注意:phpMyAdmin 5.2.0 版仅支持php7.2以上版本。不支持php7.2。如果phpMyAdmin显示空白页面,请尝试更换php版本或者更换phpMyAdmin版本。如果phpMyAdmin页面打开报错,更换php版本后再次尝试访问。 phpMyAdmin 5.2.0

欢迎发布 phpMyAdmin 5.2.0 版。此版本包含许多新功能和相当多的错误修复。我们同时发布了 phpMyAdmin 5.1.4,这是 5.1 系列的最后一个版本,主要用于帮助下游打包团队。大多数用户应该迁移到 5.2.0。 最值得注意的是,这些版本解决了导出文件时的网络错误 ( https://github.com/phpmyadmin/phpmyadmin/issues/17445 )。 5.2.0 的其他一些亮点包括:

  • 删除了对 Microsoft Internet Explorer 的支持
  • 需要 PHP 7.2 或更新版本
  • 需要 openssl PHP 扩展
  • 改进了对系统 CA 包和 cacert.pem 的处理,如果需要,可以回退到 Mozilla CA
  • 将“主/从”术语替换为“主/副本”
  • 将“NOT LIKE %…%”运算符添加到表搜索
  • 添加对 Mroonga 引擎的支持
  • 添加对帐户锁定的支持
  • 对 SQL 解析器库的一些修复和改进

当然,您可以在此版本中包含的 ChangeLog 文件或在线https://demo.phpmyadmin.net/master-config/index.php?route=/changelog中看到更多修复和新功能 现在可以在https://phpmyadmin.net/downloads/下载

阿里云安装WordPress

WordPress官方网站:https://cn.wordpress.org/
首先下载最新版本的WordPress。

wget https://cn.wordpress.org/latest-zh_CN.tar.gz


下载完毕后解压缩文件。

tar -xzvf latest-zh_CN.tar.gz


移动文件夹到网站目录下

mv wordpress /var/wwwroot

 

cd /var/wwwroot


将wp-config-sample.php文件改名

cp wp-config-sample.php wp-config.php 


修改网站配置文件:

vim wp-config.php


WordPress数据库的名称:define( ‘DB_NAME', ‘WordPress' );
MySQL数据库用户名:define( ‘DB_USER', ‘root' );
MySQL数据库密码:define( ‘DB_PASSWORD', ‘mysql密码' );
MySQL主机:define( ‘DB_HOST', ‘127.0.0.1' );
创建数据表时默认的文字编码:define( ‘DB_CHARSET', ‘utf8' );
在文件末尾添加以下代码:

if(is_admin()) {add_filter('filesystem_method', create_function('$a', 'return "direct";' ));define( 'FS_CHMOD_DIR', 0751 );}


修改好配置文件后,将phpMyAdmin放置在wordpress目录下

mv phpMyAdmin  /var/wwwroot/phpMyAdmin


https://你的网站域名/phpMyAdmin
然后打开phpMyAdmin,新建WordPress数据库,数据库名称WordPress,建立空库就可以。这个数据库名称与上面wp-config.php中配置的要一样。
之后在浏览器中配置网站,按照步骤一步一步安装。建议使用谷歌浏览器。
https://网站域名/wp-admin/install.php 网站插件更新安装与模板安装权限配置:
这一步有些人会把目录权限配置成777,这个存在一定的安全隐患,正确配置是将用户组和用户全部统一,即php的用户组,NGINX的用户组,还有wordpress的存放目录的用户组。
首先进入网站存放目录,查看文件夹用户组和权限

cd /var/wwwroot/


使用ls -l命令查看一下目录所属用户组,默认的用户组与用户都是root。

ls -l


修改网站存放目录的用户组权限。

chown -R nginx:nginx /var/wwwroot/


例如nginx中是使用nginx用户启动的,这里就要修改成nginx用户组和nginx用户。
php中一样要使用nginx用户组启动。

vi /etc/php-fpm.d/www.conf


user = apache
group = apache
修改成nginx用户组与用户
user = nginx
group = nginx
php的用户组,NGINX的用户组,还有wordpress的存放目录的用户组修改过后,reboot重新启动服务器就可以了。
NGINX的nginx.conf配置,仅供参考: nginx.conf配置:

user nginx;                                                       #配置用户或者组,默认为nobody nobody。
worker_processes auto;                                   #允许生成的进程数,默认为1
pid /run/nginx.pid;                                          #指定nginx进程运行文件存放地址
error_log /var/log/nginx/error.log error;       #制定错误日志路径,级别。这个设置可以放入全局块,http块,server块,级别依次为:debug|info|notice|warn|error|crit|alert|emerg,级别越高,记录越少,一般设置error

#加载动态模块。

include /usr/share/nginx/modules/*.conf;


#工作模式及连接数上限-events全局设置

events {
   accept_mutex on;                   #设置网路连接序列化,防止惊群现象发生,默认为on
   multi_accept on;                     #设置一个进程是否同时接受多个网络连接,默认为off
   #use epoll;                              #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
   worker_connections 1024;     #单个work进程允许的最大连接数,默认为512
}

#http服务器配置文件块

http {
   log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';    #自定义日志格式 
   access_log  /var/log/nginx/access.log  myFormat;   #设置访问日志路径和格式。combined为日志格式的默认值。
   rewrite_log on;
 #access_log off;                                                  #取消服务访问日志
   sendfile on;                                                       #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
   sendfile_max_chunk 0;                                     #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
   keepalive_timeout 1000;                                    #连接超时时间,默认为75s,可以在http,server,location块。
   client_max_body_size 1024m;
   types_hash_max_size 4096;
   tcp_nodelay on;
   tcp_nopush on;
   default_type application/octet-stream;           #默认文件类型,默认为text/plain

   fastcgi_connect_timeout 3000;            #fastcgi连接超时时间,默认60秒
   fastcgi_send_timeout 3000;                 #nginx 进程向 fastcgi 进程发送请求过程的超时时间,默认值60秒
   fastcgi_read_timeout 3000;                 #fastcgi 进程向 nginx 进程发送输出过程的超时时间,默认值60秒

   gzip on;                                                            #gzip压缩开关,on开启Gzip压缩,默认 off 关闭
   gzip_min_length 1k;                                       # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
   gzip_comp_level 8;                                           # gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间
   gzip_buffers 4 16k;                                           # 设置压缩所需要的缓冲区大小
   gzip_http_version 1.1;                                      # 设置gzip压缩针对的HTTP协议版本,没做负载的可以不用
   gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml;      # 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。
   gzip_vary on;                                                    # 是否在http header中添加Vary: Accept-Encoding,建议开启
   gzip_disable "MSIE [1-6]\.";                           # 禁用IE 6 gzip
   gzip_proxied off;


   include /etc/nginx/mime.types;                       #文件扩展名与文件类型映射表。设定mime类型(邮件支持类型),类型由mime.types文件定义。
   include /etc/nginx/conf.d/*.conf;                    # 从 /etc/nginx/conf.d 目录加载模块化配置文件。

}

server配置:

server {
listen 80;
listen [::]:80;
server_name www.uzbox.tk uzbox.tk; #你的网站域名
return 301 https://uzbox.tk$request_uri; #301重定向到 https
}

server {
                  listen 443 ssl http2;
                  listen [::]:443 ssl http2;
                   server_name www.uzbox.tk; # 网站的域名,可以是多个,用空格分开
                   return 301 https://uzbox.tk$request_uri;
                   ssl_certificate /home/ssl/uzbox.tk/fullchain.cer;          
                   ssl_certificate_key /home/ssl/uzbox.tk/uzbox.tk.key;
                 

}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
       server_name  uzbox.tk;
       root /home/www;
       index index.php index.html index.htm;
    ssl_certificate /home/ssl/uzbox.tk/fullchain.cer; 
    ssl_certificate_key /home/ssl/uzbox.tk/uzbox.tk.key;
    ssl_session_cache shared:le_nginx_SSL:10m;
ssl_session_timeout 1440m;
ssl_session_tickets off;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;

ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";


       include /etc/nginx/default.d/*.conf;                 # 从 /etc/nginx/default.d 加载默认服务器块的配置文件。
       #伪静态页
location / {
    if (-f $request_filename/index.html){
        rewrite (.*) $1/index.html break;
    }
    if (-f $request_filename/index.php){
        rewrite (.*) $1/index.php;
    }
    if (!-f $request_filename){
        rewrite (.*) /index.php;
    }
}
}

伪静态的插件安装:
首先要修改WordPress的固定链接,进入后台,打开设置固定链接。
自定义结构后面填入%category%/%post_id%
安装“No Category Base”插件用来去掉分类目录/category/ 最后查看一下服务器上所有正在运行的服务

systemctl list-units --type=service
评分

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注