一、VPS 上创建网站和网站配置文件(自动配置伪静态规则)
ssh 命令:lnmp vhost add
先输入域名。如果你喜欢用 www.xyz.com 作为主要使用的域名,那么就填写 www.xyz.com。否则填写裸域 xyz.com。我一般用 www 域名。
是否添加更多的域名,输入 y,回车。在上一步中我们添加了带 www 的域名,这里再添加一个不带 www 的域名。为了后面方便做 301 跳转用的。
提示选择 rewrite 规则的时候输入 wordpress
,然后回车。(注意:切勿直接回车,会默认选择 other 伪静态规则)
网站配置文件有了之后就可以正常访问网站了,wordpress 的 rewrite 规则会自动设置好。只有设置好伪静态才能设置 WP 后台的固定链接结构。
二、密码不显示状态下输入 MySQL 的 Root Password (MySql 管理密码),总是出错
1)如果你失误输入错误,但由于看不到你已经输入到什么位置,此时可以重新开一个连接窗口,把当前错误的关闭,然后重新执行 lnmp vhost add,重新到这一步时不用键盘输入。在记事本上写好正确的密码,然后鼠标右键粘贴,回车。也可以的。
2)确定密码输入的是正确的,但总是提示错误,有可能是在安装 lnmp 环境的时候在输入 mysql 密码的时候直接回车导致的。如果当时回车,则默认 mysql 的管理密码为 root。此时你可以和 1)一样重新开一个连接窗口重来执行。
3)这里的密码如果确实不记得,或者之前操作失误导致密码为默认的密码 root,则不太安全,你可以粘贴执行下面的命令来重置密码。
cd /root/lnmp1.3/tools/ && ./reset_mysql_root_password.sh
根据提示直接输入新密码后回车即可。
三、安装 WordPress
先进入网站根目录
cd /home/wwwroot/www.xyz.com
下载 WordPress
wget https://cn.wordpress.org/wordpress-4.7-zh_CN.zip
解压 WordPress
unzip wordpress-4.7-zh_CN.zip
移动 WordPress 文件到网站根目录下
解压完毕后,可以用 Xftp 进入文件夹把 wordpress 文件夹下的所有文件向上移动到 www.xyz.com 文件夹下。然后把其他多余文件下删除。如果你对命令行熟悉,也可以用 MV 命令来做。
mv wordpress/* .
确保网站域名已经正确解析
起码做了两个 A 记录。www 和 @ 的 A 记录。
两条 A 记录“记录值”都为你的 VPS IP 地址,“记录名”分别为 www 和 @。
四、安装 WordPress 主题及插件需要输入 FTP 账号密码的解决办法:
一般都是因为没有给目录写入的权限。先把 WordPress 根目录下的 wp-config.php 文件下载到本地,然后用文本编辑器打开(注意别用记事本之类的文本程序)
注意:别用电脑系统自带的记事本,那个只是处理文字用的,会把代码编码弄乱。你可以百度搜索:PC6 notepad++,下载安装。
在里面添加:
define('FS_METHOD','direct'); define('FS_CHMOD_DIR', 0777); define('FS_CHMOD_FILE', 0777);
另外,在 Xshell 连接 Linode 下,逐个执行这两个命令:
cd /home/wwwroot/ chmod 777 -R www.xyz.com/*
注:www.xyz.com 请自行换成你的网站目录。
OK,搞定!
五、WordPress 后台只显示一个自带主题,不显示(也无法切换)其它主题
原因:lnmp 一键安装包里的 php.ini 禁止了 scandir
函数。
解决办法:修改 php.ini。
打开:/usr/local/php/etc
下的 php.ini ,搜索 "disable_functions",在“disable_functions = ....”中找到 scandir,删除,保存。覆盖 php.ini 文件。
然后重启 php 服务:service php-fpm restart (或:/etc/init.d/php-fpm restart )
六、lnmp 设置 301 重定向跳转至 WWW 域名
第一步)VPS 中的 /usr/local/nginx/conf/vhost/
下,看到域名命名的 .conf 文件,可以用 VI 命令修改,也可以用 XFTP 下载到本地修改再传上去覆盖。
注意:如果你用的是 BT 面板,那么路径为:/www/server/nginx/conf/vhost
第五行开始,补全带 www 和不带 www 的两种域名。然后做个判断,如果不是带 www 的,正则 rewrite 到带 www 的进行永久跳转。
server_name www.yourdomain.com yourdomain.com; if ($host != 'www.yourdomain.com' ) { rewrite ^/(.*)$ http://www.yourdomain.com/$1 permanent; }
第二步)重启 LNMP 或者 NGINX 使得跳转生效:
重启 LNMP 采用命令如下;
/root/lnmp restart
重启 NGINX 采用命令如下;
/etc/init.d/nginx restart
如果提示 "No such file or directory",可以先执行 cd /root 或者 cd /etc,看看是否执行成功。如成功,继续执行 /lnmp restart 或 /init.d/nginx restart 。
七、安装 Wordperss 时数据库配置错误
记得要先到 phpMyAdmin 创建新的数据库,然后再填写 WordPress 安装的数据库信息表单。(如果你在第一步增加虚拟网站配置文件 lnmp vhost add 的那一步已经创建了数据库,就不用创建新数据库了)
lnmp 下 phpmyadmin 的默认访问位置为:https://vps IP/phpmyadmin/
创建新数据库的时候,排序规则选择 utf8 general ci
八、phpMyAdmin 无法正常登录,提示:您的 Session 已过期,请再次登录。
修改 /usr/local/php/etc/php.ini 里面的 session.auto_start
的值为 1
之后需要重启 php 生效。在 xshell 输入:
/etc/init.d/php-fpm restart
九、循环重定向或死循环,网站打不开
循环重定向的原因是:301 转到 www 网址,但你的 wordpress 里的 home url 和 site url 为非 www 网址,于是就会死循环。
主要还是因为,安装 wordpress 的时候,home url 和 site url 保存的是裸域名,而 nginx 规则文件里写的 301 规则是要把 裸域名跳转到 www 域名,但 www 域名又不是网站首页,于是就循环出错。
修复办法 1)通过修改数据库 WordPress Options 表
通过数据库去修改 wp_options 表里面 home url 和 site url,把网址改成带 www 的,然后即可。
访问 http://你的 linode 的 IP 地址
,来到一键安装包安装成功的页面。(或者直接访问 http://yourserverip/phpmyadmin
)
点击 phpMyAdmin,转到登录页面。用户名 root,密码填写 mysql database root password, 应该是跟 root password 一致的密码。登录后,在左边的数据库列表点击你的数据库,会展开所有的数据表。
选择 options 表,找到 site_url 和 home_url,把裸域名改成带 www 的网址就 OK 了。
修复办法 2)通过修改 WordPress 配置文件 wp-config.php
通过 WordPress 根目录下的 wp-config.php 配置文件来强制重新设置 site url 和 home url。在 WordPress 根目录下找到 wp-config.php 文件,下载到本地,用文本编辑器打开,添加下面这两行代码,然后覆盖源文件,也可以生效。
define('WP_HOME' , 'http://www.xyz.com'); define('WP_SITEURL' , 'http://www.xyz.com');
这种方式不需要进入数据库表里去修改。注意:如果你已经安装 SSL 证书,开通 https,这里也要两个写成 https。
十、安装完 LNMP 时,提示:ERROR! MySQL is running but PID file could not be found。
解决办法:
首先查看一下进程。执行命令:
ps aux |grep mysq*
此命令为查看 mysql 相关的进程。如返回如下结果:
root 1461 0.0 0.2 106268 2972 ? S Aug06 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/li257-84.members.linode.com.pid mysql 2003 0.0 4.4 748236 45440 ? Sl Aug06 0:11 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/var/li257-84.members.linode.com.err --open-files-limit=65535 --pid-file=/usr/local/mysql/var/li257-84.members.linode.com.pid --socket=/tmp/mysql.sock --port=3306 root 8683 0.0 0.2 103380 2152 pts/0 S+ 01:31 0:00 grep mysq*
root 和 mysql 后面跟的就是 pid 进程号。此时要用 kill -9 命令强制关闭这些卡死的进程。格式为:kill -9 pid1 pid2 ...
kill -9 1461 2003 8683
重启 mysql:
service mysql start
如果 mysql 可以正常启动,那么问题即解决了。
如果还是不行,去 /usr/local/mysql/var 下看看,如果存在 mysql-bin.index,就把它删除掉试试看。
十一、Avada 主题下提示系统环境问题(Red System Status)
1)PHP Max Input Vars 问题
需要修改 php.ini。通常军哥的 lnmp 包 php.ini 的位置位于:/usr/local/php/etc/php.ini 。
使用 vi 命令或者下载 php.ini 文件,用 notepad++ 打开修改:
max_input_vars = 300 改成 3000
保存,上传覆盖。之后需要重启 php 生效。在 xshell 输入:
/etc/init.d/php-fpm restart
注:如果是虚拟主机建站(如 bluehost),则可能还会有 PHP Time Limit ( max_execution_time ) 问题。
把 php.ini 中的 max_execution_time=30 改成 300,保存上传覆盖,然后重启 php 服务。
如果是其他环境包,不清楚 php.ini 在哪,可以本地新建一个空白的 php 文件,代码如下:
<? phpinfo(); ?>
然后浏览器访问该 php 文件地址,即可查看到 php.ini 文件的路径。
或者也可以用 linux 的 bash 命令脚本:
sudo find / -name 'php.ini'
这个语句则会在你整个系统盘中查找 php.ini 的位置,如果系统很大的话这个可能速度就比较慢,所有如果你确定 php.ini 是在 /etc 的话,则可以把 bash 脚本中的 '/' 换成 '/etc' 。
2)PHP Memory Limit
2.1))在上面所述的 php.ini 中,搜索:memory_limit ,把值设置为你的 VPS 内存的 1/4。注意不要超过 1/4,你还要留内存给系统、数据库以及其他程序。比如你如果是 Linode 10 刀/月,则内存是 2G,这里就设置为 512M。
修改后保存覆盖(假如你用 vi 命令则忽略覆盖)。然后重启 php,粘贴一下命令执行重启 php-fpm:
service php-fpm restart
2.2)打开 wordpress 根目录下的 wp-config.php 文件,在设定数据库名称的那行下面,加入一行:
/** 扩展 WP 的内存使用限制 */ define('WP_MEMORY_LIMIT', '256M');
一样是遵循最大 1/4 原则。如果你是 2G 内存就写 512M。
保存,上传覆盖。
十二、删除某个文件下以及其下所有文件
命令行语法:
rm -rf foldername
rm 为删除,-rf 为其本身及其所属下面所有文件。f 为直接删除不提示。
十三、Error establishing a database connection 网站打不开显示数据库连接错误
输入 service mysql status 提示“mysql is not running but lock exists”
mysql 重启时提醒错误-server PID file could not be found。此时执行:
ps aux |grep mysq*
下面的步骤参考第十点把有问题的 mysql 进程强制关闭,然后重启 mysql 即可。
十四、WordPress 升级失败(存在不一致的文件权限)
详见
暂时没有这些问题了,想开始正式建站,怎么操作?
请参考这篇文章:
十五、无法删除网站目录
当我们想删除某个网站时,可以用 lnmp vhost del
的命令。但是这个命令只是删除了 nginx 下的 vhost 配置文件等等,出于安全原因,并未删除网站文件夹和里面的文件。
于是当手动从 Xftp 里面去删除时,发现最终无法删除。用 Xshell 的 rm -f 命令去删除时,由于有个 .user.ini
文件始终无法删除掉,网站文件夹怎么都无法删除。
正确的方式是:
cd /home/wwwroot chattr -i www.xyz.com/.user.ini rm -f www.xyz.com/*
这样就 OK 了。此时再从 Xftp 里删除空的 www.xyz.com 文件夹即可顺利删除。
本站所有文章除注明“转载”的文章之外,均为原创。未经本站允许,请勿随意转载或用作任何商业用途,否则依法追究侵权者法律责任的权利。
/www/server/nginx/conf/vhost
/usr/local/nginx/conf/vhost/
这 2 个路径下的文件怎么一样,是我眼花了吗?
Sam 哥,按照您的教程一口气下来了,不过按照您的教程修改了权限,在上传主题的时候被弹出了 WP 界面,之后再 WP 登录界面输入账号密码被弹回来,同时直接输入域名,浏览器显示 xxx.com 将您重定向的次数过多。
料神老师,您好。 按照教程一直很顺利,然后出现一个问题,找了您的教程里都没有提到。
“Unable to create directory wp-content/uploads/2017/09. Is its parent directory writable by the server?”
上传图片, 或更换主题,都会提示上面这个。请问是我哪里设置错误了吗?
@一招撂倒熊 补充:是 Linode 5 美金 VPS,一键安装包搭建的
@一招撂倒熊 GOOGLE 终于找到了答案 https://wp-me.com/fix-unable-to-create-directory-wp-content-uploads-is-its-parent-directory-writable-by-the-server/ 供大家参考。
1.修改文件 wp-content 写入权限(主要原因)
2.若仍然失败,添加代码 define( 'UPLOADS', 'wp-content/uploads' ); 到 wp-config.php,代码放置于 require_once(ABSPATH . 'wp-settings.php'); 之前。
感谢料神!
操作完第五个步骤后,网站就打不开了。是我用记事本修改失误了吗(原因:lnmp 一键安装包里的 php.ini 禁止了 scandir 函数。
解决办法:修改 php.ini。
打开:/usr/local/php/etc 下的 php.ini ,搜索 “disable_functions”,在“disable_functions = ….”中找到 scandir,删除,保存。覆盖 php.ini 文件。
然后重启 php 服务:service php-fpm restart (或:/etc/init.d/php-fpm restart ))
操作完这个步骤,网站就打不开了。是我用记事本修改失误了吗
我只有 wp-confiq-sample.php 文件,没有 wp-confiq.php 文件
我的安装成功。 但是发现页面属性缺失模板选项。 我特别需要用 100% width。 请问老师, 该怎么解决啊?
该评论为私密评论
外贸企业网站买 VPS,不知道什么配置够用?速度和一般的建站公司提供的有明显提升么?会比 BLUEHOST 快么?
料神老师您好,按照您的教程在 linode 上面安装好了 wordpress,运行一切正常.就是在更新 wordpress 最新版本的时候,显示不能更新,然后是一系列文件权限不够的提示,这时候我该怎么做呢?
烦请指教,非常感谢!
通过 sh reset_mysql_root_password.sh 试图重置密码
MySQL server PID file could not be found!
Starting MySQL with skip grant tables
using mysql to flush privileges and reset password
update user set password = Password('xxxxx') where User = 'root'
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
@tracy 你好。我也是出现这个问题
请问你最后怎么解决的?
@Jillian 重装的。。。重新弄了一次就好了
Enter current root password of Database (Password will not shown): 这个之后就一直出现
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 请问是为什么啊
确定密码有输入正确 而且后来也通过 sh reset_mysql_root_password.sh 试图重置密码 还是一样显示 Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
烦请指教 谢谢
Hi sam,
刚装了 wordpress,我打算先建个网站再把域名解析过来,请问这个过度时期用什么登陆 wp 呢
IP 地址/wp-admin 这样好像不行歪
然后这个我只是放一个 en.domain.com
看的有点不是太明白
料神老师好 抱歉再次求教 买的是 Vultr 服务器 程序是用的 wp 按步骤配置完文件并安装完毕虚拟主机后 域名解析验证完毕是解析成功的 但最后一步在浏览器输入带或不带 W 的域名或者输入域名/wp-admin/或域名+php insatall 的,出现的都是 404 not found 或者打不开 这是什么原因呢?麻烦了!
另外这个留言你能收到回复提醒的邮件吗?
@Liaosam 料神老师 非常感谢这么快的回复 我试一下。另, 您的留言邮件是收不到的。
SAM,操作过程中出现以下问题,怎么处理呢?
Allow access_log? (y/n) 这里是选 y or n
===========================
n
======================================================
Create database and MySQL user with same name (y/n)
======================================================
y
Enter current root password of Database (Password will not shown):
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 输入 root 密码时一直显示 error
1)在 Linode 网站后台创建新 linode 时设置的密码,是 root 管理密码,用于用 root 账号 ssh 连接你的 VPS 用。
2)安装 LNMP 一键安装包的时候,当时出现一条条的安装选项,php 选什么版本,mysql 什么版本,mysql 设置什么密码(这个密码就是现在你要输入的密码)
在你那一步输入密码默认是不可见的。你只要确保你输入得正确就行。如果输入不对,就断开重新连接 VPS,然后重新执行 lnmp vhost add。
@LiaoSam 谢谢料神,原来那个密码当时就设置为默认的 root, 现在已经搞定了。又有新的问题:记得要先到 phpMyAdmin 创建新的数据库,然后再填写 WordPress 安装的数据库信息表单。
lnmp 下 phpmyadmin 的默认访问位置为:http://vps IP/phpmyadmin/
是不是用自己的 linode IP 代替"vps IP"? 登陆的用户名和密码是什么呢?
2)登录的用户名为 root,相对于 windows 系统超级管理员名字默认为 administrator/admin 来说,root 相当于是 linux 系统的超级管理员名字。
密码为 mysql 的密码,这个是你安装 LNMP 环境的时候设置的 Mysql 管理密码,这个是总的数据库的管理密码。你就用这个密码登陆。
(如果你在创立虚拟主机配置的时候 lnmp vhost add 那里已经创建了数据库,那里也让你设置了一次数据库密码,这个密码是用来安装 wordpress 时连接数据库的)
@LiaoSam 1. 谢谢料神的耐心解答。当时误打误撞用户名及密码都写了 root,就登陆成功了!问题来了,因为当时配置环境时没留心所以 mysql 的密码就默认为 root,这个有办法在哪里修改吗?
2. 之前网站放 bluehost,大概是搬家成功了,平常大家都说 vps 比共享主机快,可能由于我的网速慢吧,怎么好像没啥感觉哩?
3. 想把另一个网站再搬过来,一个 linode 下放多个网站,操作步骤与第一个有什么区别吗?有没有哪里需要特别注意的地方?
4. 若是为第二个网站配置 SSL,哪里需要注意吗?
成功地用上 vps, 并且顺利为第一个搬过来的网站做了 SSL,跟着料神的步骤,真心不难!再次感谢料神,料网!
wget http://soft.vpser.net/lnmp/ext/reset_mysql_root_password.sh
下载完后执行:sh reset_mysql_root_password.sh 即可重置 mysql 密码。
2)你可能没感觉,反正我是感觉像那种 avada 大而全,又很多可视化 visual 操作效果的主题,linode vps 的确快很多。如果你觉得不快,可能是没有给 php 多分配一些内存,用的还是默认的。linode 我建议可以分配到 512MB。你看看这篇文章:https://www.liaosam.com/lnmp-wordpres-problems-records.html
找这个关键词:PHP Memory Limit
3)没什么特别的。操作差不多。要注意的是,如果你安装了 FQ 的 ss,先提前把它端口号改掉。这个我写过 SSL 和 SS 的 443 端口冲突的文章,查看跟着操作即可。
4)基本没什么要注意的,第二个网站跟第 N 个网站没有区别。
不客气!
老师,发生了一件诡异的事,按照您的指示在 VPS 里加了 301 重定向,一开始直接复制代码进去了,然后一直跳到 yourdomain.com 去了,然后我就回去检查重新改为自己的域名,还是跳,然后我直接删掉那个代码,还是跳,改完都有重启 lnmp 和 NGINX 的,头大。
@Liaosam 改了也重启 lnmp 和 nginx,还是跳到 yourdomain.com。
301 跳转的那个规则,@主域名做 cdn,然后再指向 vps 的 ip 可以嘛
301 跳转的那个规则,@主域名做 cdn 做做可以嘛
太专业了,看不懂
目前需要一台 win 主机啊。。。
@aunsen win 对 wp 的支持并不完美,如果你是初期学习配置 vps,可以试试