本文主要记录本人如何从0到有拥有第一个wordpress站点,过程中有哪些坑,以及相应的解决方法
本文的主要的目的是便于自己下次部署lnmp环境,或搭建wordpress时,绕过这些坑,节省时间本文非原创,主要是对其它文章的整合,补充及修改
准备工作:
- 已经进行备案并解析的域名
- ubuntu16.04服务器,未搭建过任何环境,建议操作之前重装系统一下
- 下载flash fxp软件(ftp软件),xshell(ssh软件)
- 服务器安全组,已开放全部端口,或已开放80端口
- 需要知道一些命令行命令,例如vim编辑器,保存退出需要按esc+:wq,退出不保存esc+:q!,强制退出保存esc+wq!,退出mysql是ctrl+z,exit;,开启root模式命令是 sudo su 或者命令行前加sudo,关闭防火墙UFW disable
注意事项:
- 如果使用ftp安装word press,需要安装iis插件,某些非官方版windows不支持iis插件部署,我现在的windows10便不支持
- ubun16.04不支持更新yum源建立仓库,不用再去百度如何配置这一块
- 搭建lnmp环境时,最后安装的一定是php
本文大纲:
一、搭建LNMP环境
- 安装nginx
- 安装mysql
- 安装php
- 配置nginx使用php
- 创建php测试上述配置
二、安装word press系统
一、搭建LNMP环境
- 配置word press相关数据
- 将word配置改为中文版
第一步:安装Nginx
sudo apt-get update
sudo apt-get install nginx
此时访问你的服务器地址应该会出现这个画面
第二步:安装MySQL以管理站点数据
安装
sudo apt-get install mysql-server
系统将要求您提供root(管理)密码,以便在MySQL系统中使用。
第3步:安装PHP进行处理
因为ubuntu16.04只支持php7,所以安装php7
sudo apt-get install php-fpm php-mysql
配置PHP处理器
我们现在已经安装了PHP组件,但是我们需要进行轻微的配置更改以使我们的设置更安全。
php-fpm使用root权限打开主配置文件:
sudo vim /etc/php/7.0/fpm/php.ini
在文件中寻找的是设置的参数cgi.fix_pathinfo。这将用分号(;)注释掉,默认设置为“1”。
这是一个非常不安全的设置,因为它告诉PHP尝试执行它找不到所请求的PHP文件时可以找到的最接近的文件。这基本上允许用户以允许他们执行不应该被允许执行的脚本的方式来创建PHP请求。
我们将通过取消注释该行并将其设置为“0”来更改这两个条件,如下所示:
在vim中可以使用/后面接内容进行查找
cgi.fix_pathinfo=0
重启PHP处理
sudo systemctl restart php7.0-fpm
第4步:配置Nginx以使用PHP处理器
执行以下命令
sudo vim /etc/nginx/sites-available/default
Nginx默认服务器块文件如下所示:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
对当前文件进行几点更改:
- 首先,我们需要添加index.php作为index指令的第一个值,以便index.php在请求目录时提供命名的文件(如果可用)。
- 我们可以修改server_name指令以指向我们服务器的域名或公共IP地址。
- 对于实际的PHP处理,我们只需要通过从每行前面删除井号(#)来取消注释处理PHP请求的文件段。这将是location
~.php$位置块,包含的fastcgi-php.conf代码段和与之关联的套接字php-fpm。 - 我们还将.htaccess使用相同的方法取消注释处理文件的位置块。Nginx不处理这些文件。如果这些文件中的任何一个恰好进入文档根目录,则不应向访问者提供这些文件。
更改在中标记的文本:
server {
listen 80 default_server; listen [::]:80 default_server; root /var/www/html; #这一行中添加了index.php index index.php index.html index.htm index.nginx-debian.html; #此处修改你的域名,如果没有则不需要修改源文件 server_name server_domain_or_IP; location / { try_files $uri $uri/ =404; } #以下所有内容需要添加 location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } location ~ /\.ht { deny all; } #以上所有内容需要添加
}
完成上述更改后,您可以保存并关闭该文件。
以上有语法错误,server_name_; 不是server_name
检查ng的语法错误
sudo nginx -t
如果没有问题重启Nginx
sudo systemctl reload nginx
第5步:创建PHP文件以测试配置
测试Nginx是否可以正确地将.php文件传递给我们的PHP处理器。
我们可以通过在文档根目录中创建测试PHP文件来完成此操作。info.php在文本编辑器中打开文档根目录中调用的新文件:
sudo vim /var/www/html/info.php
以下为内容
<?php
phpinfo();
完成后,保存并关闭文件。
现在,您可以通过访问
服务器ip/info.php:
可以看到该网页
如果您看到一个看起来像这样的页面,那么您已成功使用Nginx设置PHP处理。
现在,用以下命令删除文件: (当然不删除也不会有什么问题)
sudo rm /var/www/html/info.php
二、安装word press系统
第1步:为WordPress创建MySQL数据库和用户
WordPress使用MySQL来管理和存储站点和用户信息。我们已经安装了MySQL,但是我们需要为WordPress创建一个数据库和用户。
MySQL登录:
mysql -u root -p
输入安装mysql时候的密码
首先,我们可以创建一个WordPress可以控制的独立数据库。你可以随意调用它,但我们将wordpress在本指南中使用它来保持简单。您可以通过键入以下命令为WordPress创建数据库:
#其中wordpress只是为数据库名称,可以随意修改
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
我们将创建此帐户,设置密码并授予对我们创建的数据库的访问权限。我们可以通过输入以下命令来完成此操作。
#其中wordpress为数据库名称,wordpressuser为创建的用户的名称,password为创建的用户的密码
GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
刷新权限,以便MySQL的当前实例知道我们最近做出的更改:
FLUSH PRIVILEGES;
退出
EXIT;
第2步:调整Nginx的配置以正确处理WordPress
使用以下sudo权限打开默认服务器块文件:
sudo vim /etc/nginx/sites-available/default
在主server块中,我们需要添加几个location块。
通过创建要求精确匹配的位置开始块/favicon.ico和/robots.txt,这两个我们不希望记录的请求。
我们将使用正则表达式位置来匹配任何静态文件请求。我们将再次关闭这些请求的日志记录,并将它们标记为高度可缓存,因为这些通常是昂贵的服务资源。您可以调整此静态文件列表以包含您的站点可能使用的任何其他文件扩展名:
server {
. . .
#以下为需要添加的location
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; allow all; }
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
. . .
}
调整try_files列表,以便不是将404错误作为默认选项返回,而是index.php使用请求参数将控制传递给 文件。
server {
. . .
location / {
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$is_args$args;
}
. . .
}
完成后,保存并关闭文件。
检查Nginx语法
sudo nginx -t
重启
sudo systemctl reload nginx
第3步:安装其他PHP扩展
在设置LEMP堆栈时,我们只需要一组非常小的扩展,以便让PHP与MySQL通信。WordPress及其许多插件利用了额外的PHP扩展。
我们可以通过输入以下命令下载并安装一些最流行的PHP扩展以与WordPress一起使用:
sudo apt-get update
sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc
重启PHP
sudo systemctl restart php7.0-fpm
第4步:下载WordPress
ps:以下步骤用于配置权限问题,也可以直接将wordpress放到/var/www/html目录下赋予权限即可
现在我们的服务器软件已经配置好了,我们可以下载并设置WordPress。出于安全原因,我们始终建议从其站点获取最新版本的WordPress。
转换为可写目录,然后键入以下命令下载压缩版本:
cd /tmp
curl -O https://wordpress.org/latest.tar.gz
解压
tar xzvf latest.tar.gz
我们将暂时将这些文件移动到我们的文档根目录中。在我们这样做之前,我们可以将示例配置文件复制到WordPress实际读取的文件名:
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
我们还可以创建upgrade目录,以便WordPress在更新其软件后尝试自行执行此操作时不会遇到权限问题:
mkdir /tmp/wordpress/wp-content/upgrade
现在,我们可以将目录的全部内容复制到我们的文档根目录中。我们使用该-a标志来确保维护我们的权限。我们在源目录的末尾使用一个点来表示应该复制目录中的所有内容,包括任何隐藏文件:
sudo cp -a /tmp/wordpress/. /var/www/html
第5步:配置WordPress目录
我们需要完成的一件大事是建立合理的文件权限和所有权。我们需要能够以普通用户的身份写入这些文件,并且我们需要Web服务器也能够访问和调整某些文件和目录才能正常运行。
我们首先将文档根目录中的所有文件的所有权分配给用户名。我们将root在本指南中使用我们的用户名,但您应该更改此选项以匹配您的sudo用户调用。我们会将群组所有权分配给www-data群组:
sudo chown -R root:www-data /var/www/html
配置setgit位
sudo find /var/www/html -type d -exec chmod g+s {} \;
为wp-content目录提供组写访问权限,以便Web界面可以进行主题和插件更改:
sudo chmod g+w /var/www/html/wp-content
为Web服务器提供对这两个目录中所有内容的写访问权限:
sudo chmod -R g+w /var/www/html/wp-content/themes
sudo chmod -R g+w /var/www/html/wp-content/plugins
这只是一个合理的权限设置开始,一些插件可能需要单独配置。
第六步:设置WordPress配置文件
现在,我们需要对主WordPress配置文件进行一些更改。
vim /var/www/html/wp-config.php
数据库连接设置下方或文件中的任何其他位置添加此设置:
. . .
/** MySQL database name */
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'wordpressuser');
/** MySQL database password */
define('DB_PASSWORD', 'password');
. . .
define('FS_METHOD', 'direct');
注意此段并非添加代码,通过修改代码也可实现,只加前三段
完成后保存并关闭文件。
第6步:通过Web界面完成安装
进入你的服务器地址进行配置。
注意事项:升级wordpress
更新的时候由于权限问题可能无法更新。
此时需要重新赋权:
sudo chown -R www-data /var/www/html
完成后,再次锁定权限以确保安全性:
sudo chown -R root /var/www/html
建议仅在升级时才设置此权限。
到此处wordpress部署成功。
在安装完wordpress以后,需要将英文版转换为中文版,具体操作方式如下;
打开命令行后台,打开网站根目录下的config.php,按“/”搜索define(‘WPLANG’,如果能搜到,就在该字段之后加上字符,使之成为define('WPLANG', 'zh_CN');
如果搜不到,则直接在代码中添加define('WPLANG', 'zh_CN');
vim /var/www/html/wp-config.php
进行过上述操作后,word press后台左上角会提示更新,点击更新即可,更新过程中需要输入ftp用户名和密码,如果有就输入,如果没有,则进行以下更新免ftp登录的操作
同样,登录config.php的vim操作界面,在代码最后,添加以下代码保存即可
define("FS_METHOD","direct");
define("FS_CHMOD_DIR", 0777);
define("FS_CHMOD_FILE", 0777);
以上
原文链接:
搭建lnmp 安装word press:https://segmentfault.com/a/1190000016378855
改为中文版:https://blog.csdn.net/u010393758/article/details/51104432
免ftp密码登录:https://jingyan.baidu.com/article/4f34706efc1237e387b56da4.html
解决word press注册无法发送邮件的问题:http://wanlimm.com/77201807216107.html
解决word press注册无法发送邮件显示重置失败的问题:https://www.cnblogs.com/liudecai/p/6474611.html
解决wp 网页加载速度慢,禁用谷歌字体:https://jingyan.baidu.com/article/dca1fa6fae6d1ef1a44052e9.html