启航

/ 0评 / 2

WP是真的折腾!好在也能学到零碎的知识。

 

环境

步骤

一、安装Apache HTTP

sudo yum install httpd

启动服务

systemctl start httpd.service

输入ip或者域名以访问站点,如无法访问请检查安全组。

 

二、安装MySQL

CentOS7默认为MariaDB,需更新源

sudo rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

安装

yum install mysql mysql-server mysql-libs mysql-server

登陆数据库,无密码

mysql -uroot -p

设置密码

use mysql;
update user set password=password('新密码') where user='root';

允许远程登陆

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

刷新权限

flush privileges;

创建数据库

create database;

退出

exit;

 

三、设置Apache和MySQL开机自启

systemctl enable httpd.service
systemctl enable mysqld.service

重启服务

systemctl restart httpd.service
systemctl restart mysqld.service

 

四、安装PHP

yum install php
yum install php-mysql
yum install php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc

更多组件

yum search php-

 

五、安装 WordPress

wget http://cn.wordpress.org/wordpress-3.9-zh_CN.zip

解压

unzip wordpress-3.8-zh_CN.zip

下载unzip

yum install unzip

复制文件

cp -rf wordpress/* /var/www/html/

或者通过FTP上传文件

/var/www/html/

 

六、安装FTP

yum install vsftpd

新增 FTP 用户

useradd ftpuser

设置FTP密码

passwd ftpuser

设置 FTP开机自启并重启

systemctl enable vsftpd.service
systemctl restart vsftpd.service

vsftpd 设置root用户登陆

/etc/vsftpd/ftpusers 注释掉 #root

/etc/vsftpd/user_list 注释掉 #root

/etc/vsftpd/vsftpd.conf write_enable=YES

 

问题总结:

开启PHP的mb_string函数。

网上流传的方法几乎都是将文件夹权限改成777,这个方法是很危险的,同时也是存在错误的。出现无法创建目录的确是权限的问题,但是不是目录读写的权限,而是用户组的问题。需要确认下载插件的用户组与wordpress的用户组相同,具体原理参见linux相关知识。

找到wordpress数据库,打开wp_options表。修改表中键名为upload_path的键值,默认可能是空值,将值修改为 wp-content/uploads。注意:最佳的文件夹权限为755,文件权限为644。

①在上传图片文件时

也许是因为 PHP 和Apache或者Nginx的配置问题,或者是存储空间不足等。建议将php 配置文件( /etc/php.ini )修改如下:

upload_max_filesize = 64M
post_max_size = 32M
max_execution_time = 300
max_input_time 300
memory_limit = 128M

如果你的网页服务器是 Apache,你也可以使用 .htaccess 文件。它位于 WordPress 安装路径的根文件夹下。如果没有找到,需要自己手动创建一个,然后加入如下内容:

php_value upload_max_filesize 64M
php_value post_max_size 32M
php_value max_execution_time 180
php_value max_input_time 180
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

如果你使用的网页服务器是 nginx,在 nginx 的 server 配置块中配置你的 WordPress 实例。详细配置如下:

server {
listen 80;
client_max_body_size 128m;
client_body_timeout 300;
server_name your-domain.com www.your-domain.com;
root /var/www/html/wordpress;
index index.php;
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$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}

根据自己的 PHP 配置,你需要将 fastcgi_pass 127.0.0.1:9000; 用类似于 fastcgi_pass unix:/var/run/php7-fpm.sock; 替换掉。

重启 nginx 服务使改动生效。

②修复因为不恰当的文件权限而产生的 HTTP 错误

如果你在 WordPress 中出现一个意外错误,也许是因为不恰当的文件权限导致的,所以需要给 WordPress 文件和文件夹设置一个正确的权限:

chown www-data:www-data -R /var/www/html/path_to_wordpress/

将 www-data 替换成实际的网页服务器用户,将 /var/www/html/path_to_wordpress 换成 WordPress 的实际安装路径。

③修复因为内存不足而产生的 HTTP 错误

在 wp-config.php 中添加如下内容来设置 PHP 的最大内存限制:

define('WP_MEMORY_LIMIT', '128MB');

④修复因为 php.ini 文件错误配置而产生的 HTTP 错误

编辑 PHP 配置主文件,然后找到 cgi.fix_pathinfo 这一行。 这一行内容默认情况下是被注释掉的,默认值为 1。取消这一行的注释(删掉分号),然后将 1 改为 0 。同时需要修改 date.timezone 这一 PHP 设置,再次编辑 PHP 配置文件并将这一选项改成 date.timezone = Asia/Shanghai (或者将等号后内容改为你所在的时区)。

cgi.fix_pathinfo=0
date.timezone = Asia/Shanghai

⑤修复因为 Apache mod_security 模块而产生的 HTTP 错误

如果你在使用 Apache mod_security 模块,这可能也会引起问题。试着禁用这一模块,确认是否因为在 .htaccess 文件中加入如下内容而引起了问题:

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

⑥修复因为有问题的插件/主题而产生的 HTTP 错误

一些插件或主题也会导致 HTTP 错误以及其他问题。你可以首先禁用有问题的插件/主题,或暂时禁用所有 WordPress 插件。如果你有 phpMyAdmin,使用它来禁用所有插件:在其中找到 wp_options 数据表,在 option_name 这一列中找到 active_plugins 这一记录,然后将 option_value 改为 :a:0:{}。

或者用以下命令通过SSH重命名插件所在文件夹:

mv /www/html/path_to_wordpress/wp-content/plugins /www/html/path_to_wordpress/wp-content/plugins.old

通常情况下,HTTP 错误会被记录在网页服务器的日志文件中,所以寻找错误时一个很好的切入点就是查看服务器日志。

 

参考:

在CentOS 7上搭建WordPress

解决wordpress下载插件,安装失败,无法创建目录问题

vsftpd 设置root用户登陆

Mysql权限控制 - 允许用户远程连接

无法建立目录"wp-content/uploads"/2018/06。有没有上级目录的写权限?

CentOS修改mysql 用户root的密码并允许远程登录

发表评论

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