搭建wordpress电商网站
一、环境搭建
1. 服务器准备
为了方便快速搭建,这里选用阿里云集成的,配置选用 centos7.7 LNMP PHP7.2
2. 安装nginx
2.1 安装nginx相关依赖
# 安装 gcc
yum install gcc-c++
# 安装 pcre-devel
yum install -y pcre pcre-devel
# 安装zlib
yum install -y zlib zlib-devel
# 安装OpenSSL
yum install -y openssl openssl-devel
2.1 安装Nginx
# 创建 nginx.repo文件
vi /etc/yum.repos.d/nginx.repo
# 然后写入配置:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
yum install nginx
2.3. 启动 Nginx
# 启动 nginx
cd /usr/sbin
./nginx
# 打开防火请
systemctl start firewalld
# 打开防火墙 80 端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 打开防火墙 3306 端口(方便navicate等工具连接)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙
firewall-cmd --reload
浏览器访问ip,出现 welcome to nginx
3. MySQL安装与配置
3.1 安装MySQL
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server
# 启动mysql
systemctl start mysqld
3.2 MySQL初始化设置
# 运行下面命令进入初始化设置
mysql_secure_installation
# 修改mysql默认密码 初次登陆是默认为空,直接回车
# 删除匿名用户 选择y
# 允许远程连接 默认为不允许, 选择n
# 删除测试数据库 选择 y
# 数据库实时更新 选择 y
3.3 创建mysql用户
# root用户登录
mysql -u root -p
create database wordpress charset utf8;
# 列出数据库(如下图)
show databases;
use mysql;
# 赋予权限,连接数据库
grant all privileges on * . * to 'root'@'%' identified by '密码';
# 退出数据库
exit;
# 重启数据库
systemctl restart mysqld
4.PHP,Vsftpd 安装配置
4.1配置PHP
# 先安装 php-mysql 和 php-fpm
yum –y install php-mysql
yum –y install php-fpm
# 运行
yum -y install php* --skip-broken
# 编辑 php 配置文件
vim /etc/php.ini
# 添加
extension=mysql.so
# 找到 extension_dir 并设为
extension_dir = "/usr/lib64/php/modules"
# 重启 php 服务
systemctl restart php-fpm
4.2 Vsftpd 安装与配置
# 安装
yum -y install vsftpd
# 启动服务
systemctl start vsftpd
# 新建 ftp home 目录
mkdir /ftpuserdata
# 为 ftp 创建用户 ftpuser,指定目录 /ftpuserdata/www/
useradd ftpuser -d /ftpuserdata/www/ -s /sbin/nologin
# 设置密码
passwd ftpuser
# 编辑 FTP 配置文件
vim /etc/vsftpd/vsftpd.conf
# 将匿名登录禁用
anonymous_enable=NO
# 保存退出后,给 www 目录设置读写权限
chmod -R 777 /ftpuserdata/www/
# 重启
systemctl restart vsftpd
5. Wordpress安装及相关配置
5.1 安装wordpress
# 安装
# 进入目录
cd /ftpuserdata/www/
#下载
wget https://wordpress.org/latest.zip
# 解压
unzip latest.zip
如果提示不能unzip
yum install -y unzip zip
5.2 配置wordpress
vim /ftpuserdata/www/wordpress/wp-config-sample.php
填写数据库名,数据库用户名,数据库密码
保存退出,重命名配置文件
mv /ftpuserdata/www/wordpress/wp-config-sample.php /ftpuserdata/www/wordpress/wp-config.php
5.3 修改wp相关配置
vim / etc/ nginx/ conf. d/ default . conf
在
root / ftpuserdata/ www/ wordpress/ ;
index index. php index. html index. htm;
client_max_body_size 50 m;
try_files $uri $uri / / index. php index. php;
将下面代码去掉注释,fastcgi_param 改为下面的
location ~ \. php $ {
root html;
fastcgi_pass 127.0 .0 .1 : 9000 ;
fastcgi_index index. php;
fastcgi_param SCRIPT_FILENAME / ftpuserdata/ www/ wordpress $fastcgi_script_name ;
include fastcgi_params;
}
5.4 重启相关服务
systemctl restart nginx
systemctl restart php-fpm
systemctl restart vsftpd
# 将服务加入开机启动
systemctl enable mysqld
systemctl enable nginx
systemctl enable php-fpm
systemctl enable vsftpd
二、其他问题
1 版本不匹配
环境配置好以后,访问ip,应该会出现安装wordpress界面,如果提示php版本不匹配,镜像自带的是5.4
停止相关服务
systemctl stop nginx
systemctl stop php-fpm
更新源
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
#移除系统自带的php-common
yum remove php-common -y
因为后面wordpress安装插件时,又提示php版本的问题,所以这里直接升级到适合的版本
yum install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-fpm php71w-gd php71w-mbstring php71w-mysqlnd php71w-opcache php71w-pdo php71w-xml php71w-ldap php71w-mcrypt
重新启动服务
systemctl restart nginx
systemctl restart php-fpm
2 权限问题
安装插件和主题时提示ftp连接失败,原因是用户没有权限
在wordpress的wp- content文件下,新建tmp文件夹,并给最高权限
chmod - R 777 tmp
将wordpress的权限改为最高(不太安全)
chmod - R 777 / ftpuserdata/ www/ wordpress
define ( "FS_METHOD" , "direct" ) ;
define ( "FS_CHMOD_DIR" , 0777 ) ;
define ( "FS_CHMOD_FILE" , 0777 ) ;
3 镜像问题
vim /etc/yum/pluginconf.d/fastestmirror.conf
enabled=1 改为 0
vim /etc/yum.conf
plugins=1 改为 0
4 固定链接改变后无法访问
在nginx. conf文件中做修改,在
server {
...
server name ~ ^ ( www\. ) ? ( . + ) $;
root wordpress目录
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;
}
rewrite / wp- admin $ $scheme :
...
}
5 cookies重定向过多问题
开启https后,可能会出现cookies重定向过多的问题,在wp-config.php中添加
define( 'COOKIE_DOMAIN', '' );
如果不行,添加
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);
四、域名配置
一、实现任意域名访问
说明:在wp- config. php文件中加下面代码,就能实现绑定解析的域名都能正常访问博客,而且不会串联到其他域名。
define ( 'WP_SITEURL' , 'http://' . $_SERVER [ 'HTTP_HOST' ] ) ;
define ( 'WP_HOME' , 'http://' . $_SERVER [ 'HTTP_HOST' ] ) ;
二、实现任意域名https访问
define ( 'WP_SITEURL' , 'https://' . $_SERVER [ 'HTTP_HOST' ] ) ;
define ( 'WP_HOME' , 'https://' . $_SERVER [ 'HTTP_HOST' ] ) ;
三、限制特定域名访问
$domain = array ( 'domain1.com' , 'domain2.com' , ) ;
if ( in_array ( $_SERVER [ 'HTTP_HOST' ] , $domain ) ) {
define ( 'WP_HOME' , 'https://' . $_SERVER [ 'HTTP_HOST' ] ) ;
define ( 'WP_SITEURL' , 'https://' . $_SERVER [ 'HTTP_HOST' ] ) ;
define ( 'WP_CONTENT_URL' , '/wp-content' ) ;
}
https前提: $_SERVER [ 'HTTPS' ] = 'on' ;