考虑到网上的部分教程不够完整,有的已经过时。因此,我将我搭建环境的方法记录下来。我将在阿里云服务器上采用CentOS7,Nginx,MariaDB10和PHP7搭建WordPress5.2。我在物理机和虚拟机上都尝试安装过CentOS7,所以我也会在文章中提及虚拟机和物理机的安装方法。本文全部采用yum安装软件(懒得编译软件)。希望这将成为你阅读的最后一篇安装文档,我也为这个目标努力。祝我们一路顺风!
一、安装操作系统。
阿里云的话,你可以直接选择CentOS安装即可。这个在你购买服务器的时候便可以选择安装,然后跳过此步骤。对于虚拟机或物理机,你要经历以下步骤:
- 对于物理机,你需要在官网下载映像文件,然后使用烧录软件(可以使用软碟通,试用期内免费,网址:)烧录到U盘上。然后进入BIOS,将U盘引导移到第一位。保存重启,进入安装程序(与虚拟机无异)。安装好后,记得重新调整引导顺序,将U盘引导变成硬盘引导。
我遇到了一些问题。解决方案建议在安装前阅读。 - 选择语言——简体中文。
- 进入安装界面。完成带有图标标记的内容才能进行下一步。
软件选择。我这里选的是基本网页服务器。如果你有GUI的需要的话,可以选择带GUI的服务器。
时间和地点,选择设置就好。
网络和主机名:设置一下就好。该咋办咋办
安装位置可以自动让其选择分区(我懒)。如果你想手动配置挂载点,可以参考挂载点资料和配置分区方法。 - 开始安装。同时设置root和一般用户。为了演示方便,这里我选择只设置root账户,并将所有的密码设置为123456。如果后文的命令需要管理员权限,但我没有加上(因为我用的是root用户),请在命令前面加上sudo。但我十分不建议你这么做。我的建议是设置root用户和普通用户,并使用强密码。登录的时候使用普通用户登录。在需要权限的命令是使用sudo(需要更改/etc/sudoers文件)。
二、使用SSH连接计算机
由于在阿里的控制台上操作十分不易,我将使用ssh远程客户端。在这里,我是用的是XShell。
- 下载XShell
XShell可以在其官网下载。如果不是用于商业用途,可以使用邮箱申请家庭和学生免费版。建议将XShell和Xftp一起下载,并安装。 - 连接
在XShell中连接到服务器。如果不会配置,可以参见配置方法。
阿里云服务器的公网ip可以在控制台找到。如果你是虚拟机或者物理机,查看ip的方法是命令。1 ifconfig
注意:阿里云的服务器默认使用root账户登录。如果对安全性考虑较高的话,可以建立一个普通用户,还可以更改默认的22端口。
三、(可选)修改计算机名
阿里云的计算机名是长长的乱码,看上去很不美观(强迫症重度患者)。我们可以使用命令将计算机名改掉。在CentOS7上,你可以:
1 sudo hostnamectl set-hostname [新的计算机名] 2 reboot # 重启
重新连接XShell即可。如果是CentOS6,则需使用可能的解决方案(本人没试过)。
四、(可选)安装和升级常用软件并安装常用源
- 参考添加软件源
1 # 备份源 2 cd /etc/yum.repos.d/ 3 mv CentOS-Base.repo CentOS-Base.repo_bak 4 5 # 安装源 6 # 网易源 7 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo 8 # 阿里源 9 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 10 # epel源 11 yum -y install epel-release 12 13 # 更新 14 yum clean all 15 yum makecache
- 安装编译环境(如果你想编译安装的话,希望这对你有用。但我是一个极懒的人,反正我是不会这么做的)
1 sudo yum groupinstall "Development Tools"
- 升级已有软件
1 sudo yum update
如果怕确认的麻烦,可以使用-y参数(以下的命令同理,不再赘述),例如:
1 sudo yum -y update
五、安装Nginx
- 安装Nginx
Linux平台上,主流的Web服务器有Apache和Nginx。Apache体量大一点,但是功能全面;Nginx体量小,但是占用资源少。这里我采用的是yum安装Nginx。如果想使用Apache,可以参考CentOS7安装Apache。如果想从源码安装,可以参考:编译安装Nginx。这样安装的Nginx应该是十分稳定的
1 sudo yum install nginx
但是,这样安装的Nginx是比较稳定,但是偏老旧的版本。例如我现在使用这样安装的Nginx是2017年10月发布的1.12.2版,而我写下博客时,已是2019年5月。如果你和我一样,对网站的稳定性要求不高,有对新特性充满兴趣(玩玩就好,重要的站点还是稳定一些好),而且不怕BUG,参考教程,可以采用这样的安装方法:
1 wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 2 sudo rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm 3 sudo yum install nginx
至此,Nginx安装完成。我们可以使用命令启动并查看Nginx状态:
1 sudo systemctl enable nginx # Nginx开机自启 2 sudo systemctl start nginx # 启动Nginx 3 sudo systemctl status nginx # 查看Nginx状态
如果出现绿色的active(Running),就说明Nginx安装完成,并成功运行。
- 开启防火墙
接下来,设置防火墙,开启http协议使用的80端口:1 sudo firewall-cmd --zone=public --add-port=80/tcp --permanent # 开启80端口 2 sudo firewall-cmd --reload # 重新载入防火墙
更多关于防火墙的知识,可以参考:CentOS7使用firewalld打开和关闭防火墙端口。
- 修改配置文件
以下,是我对配置文件的一些配置。
3.1 主配置文件。
如果高度自定义配置的话,参阅主配置文件的介绍。1 vim /etc/nginx/nginx.conf
我并没有对其进行大的修改,只是将倒数第二行的include注释掉,换成我自己的配置文件,即:
#include /etc/nginx/conf.d/*.confinclude /etc/nginx/conf.d/myNginx.conf;
然后将默认的配置文件复制,进行修改。当然,不修改也是可以的。那么下一步就需要直接在default.conf上进行修改。
3.2 default配置文件
1 cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/myNginx.conf # 如果上一步没有修改include的话,可以不必复制,直接用vim打开default.conf 2 vim /etc/nginx/conf.d/myNginx.conf # 打开配置文件
打开后,你会看到:
1 server { 2 listen 80; 3 server_name localhost; 4 5 #charset koi8-r; 6 #access_log /var/log/nginx/host.access.log main; 7 8 location / { 9 root /usr/share/nginx/html; 10 index index.html index.htm; 11 } 12 13 #error_page 404 /404.html; 14 15 # redirect server error pages to the static page /50x.html 16 # 17 error_page 500 502 503 504 /50x.html; 18 location = /50x.html { 19 root /usr/share/nginx/html; 20 } 21 22 # proxy the PHP scripts to Apache listening on 127.0.0.1:80 23 # 24 #location ~ \.php$ { 25 # proxy_pass http://127.0.0.1; 26 #} 27 28 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 29 # 30 #location ~ \.php$ { 31 # root html; 32 # fastcgi_pass 127.0.0.1:9000; 33 # fastcgi_index index.php; 34 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 35 # include fastcgi_params; 36 #} 37 38 # deny access to .htaccess files, if Apache‘s document root 39 # concurs with nginx‘s one 40 # 41 #location ~ /\.ht { 42 # deny all; 43 #} 44 }
配置文件的含义,可以参考default.conf配置文件含义。第2行是网页端口(默认80),第9、19行后面是网页文件的位置,你可以修改为自己想放的位置。在这里,我使用默认的位置,不作修改。以下的修改很重要:
1. 将第34行的30-36(含36行)前面表示注释的“#”号去掉(除非你不想使用PHP)
2. 将31行的html换成网页文件的位置(默认是/usr/share/nginx/html)。
3. 将 fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 改为 SCRIPT_FILENAME $document_root$fastcgi_script_name; 。
4. 在第10行前加入index.php,变成 index index.php index.html index.htm; - 配置完成后,重启服务:
1 sudo systemctl restart nginx
如果报错,可能是配置文件出了问题(例如没加分号),可以使用命令检查:
1 systemctl status nginx
- 在浏览器中,输入服务器的IP地址,观察网页。如果看到了以下图片,说明Nginx配置完全成功。祝贺你!
六、安装PHP
PHP可以选择两个版本,PHP5和PHP7。PHP5通过自带的源可以直接安装。一个命令可以搞定PHP5和PHP5的常见拓展(看需求装就好。如果你跟我一样懒,都装上也可以):
1 yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt libmcrypt-devel php-fpm
但是,PHP7发布已经有好几年了,而且据说PHP7比PHP5的性能好很多,也将成为未来的主流。因此,对稳定性要求不高的我选择用yum安装PHP7.3。
- 添加源
1 sudo yum install epel-release 2 sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
- 安装PHP及其拓展:
1 sudo yum --enablerepo=remi-php73 install php php-cli php-common php-devel php-embedded php-fpm php-gd php-json php-mbstring php-mysqlnd php-opcache php-pdo php-pecl-mcrypt php-soap php-xml php-xmlrpc
“--enablerepo=remi-php73”可以控制PHP版本。例如安装PHP7.2,可以使用“--enablerepo=remi-php72”。
安装完PHP后,需要配置PHP-fpm(参考资料)
- 打开配置文件(如果使用Apache似乎可以跳过这一步)
1 vim /etc/php-fpm.d/www.conf
修改配置文件,将第24行的 user = apache 和第26行的 group = apache 分别修改为: user = apache 和 group = nginx 。
- 启动PHP-FPM
1 sudo systemctl enable php-fpm # 设为开机启动
2 sudo systemctl start php-fpm # 启动 - 测试
1 cd [网页路径] # Nginx默认路径为/usr/share/nginx/html 2 vim test.php # 创建文件
在test.php中输入:
1 <?php 2 phpinfo(); 3 ?>
然后在浏览器中输入:[主机ip]/test.php,若出现下图的结果,说明安装成功。
七、安装MariaDB
- 安装MariaDB
和PHP一样,MariaDB有两个版本,5和10。yum默认安装的是MariaDB5。MariaDB5的安装命令为:
1.1 安装MariaDB5(与1.2二选一)1 sudo yum install mariadb-server mariadb
然后就可以进入下一步了。
1.2 安装MariaDB10 (与1.1二选一)
当然,我在这里将使用MariaDB10。
1.2.1 使用官方源(与1.2.2二选一)
如果服务器器在国内,建议使用国内源参见 1.2.2。亲测国内源快很多。
进入MariaDB官网,点击下方某个版本的ReadMore,点击MariaDB APT and YUM Repositories Generator(直接点我的超链接也是可以的),依次选择Linux发行版(Choose a Distro)-发行版版本(Choose a Release)-MariaDB版本(Choose a Version)。在这里,我选择的是MariaDB10.3的版本。然后按照下面的英文提示,将一个类似# MariaDB 10.3 CentOS repository list # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.3/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
的文件将其复制并粘贴到/etc/yum.repos.d/下的文件中(建议命名文件MariaDB.repo或类似的东西)。可以采用命令:
1 vim /etc/yum.repos.d/MariaDB.repo
创建并将源复制进去。然后使用命令:
1 sudo yum install MariaDB-server MariaDB-client
安装MariaDB。
如果安装速度过慢,可以添加国内源。
1.2.2 使用国内源(与1.2.1二选一)
在这里,参考yum配置安装MariaDB数据库,我们使用中国科技大学的源。首先,在中科大的镜像站,找到MariaDB的源。在我给出的超链接中,选择想要安装的版本。将超链接添加到我给出的文本中:# MariaDB [可以写版本号,当然也可以不写。反正在注释里,就是给人看的] CentOS repository list [mariadb] name = MariaDB baseurl = [你选择的超链接] gpgkey = https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck=1
例如我想安装MariaDB10.3在CentOS7 64位上,我可以这么配置:
# MariaDB 10.3 CentOS repository list [mariadb] name = MariaDB baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/ gpgkey = https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDBgpgcheck=1
和1.2.1一样,使用命令:
1 vim /etc/yum.repos.d/MariaDB.repo
将写好的配置文件添加到源。然后安装
1 sudo yum install MariaDB-server MariaDB-client
- 设置MariaDB
首先启动MariaDB1 sudo systemctl enable mariadb # 将MariaDB设为开机自启 2 sudo systemctl start mariadb # 启动MariaDB 3 systemctl status mariadb # 检查MariaDB状态
启动MariaDB的一个安全脚本:
1 sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!注意:建议对所有生产中使用的服务器的MariaDB运行此脚本的所有部分。请仔细阅读每一步!(吓唬一下你)
依次回答几个问题(Y表示是,n表示否):
In order to log into MariaDB to secure it, we‘ll need the current password for the root user. If you‘ve just installed MariaDB, and you haven‘t set the root password yet, the password will be blank, so you should just press enter here.
Enter current password for root (enter for none):
为了登录到MariaDB以保护它,我们需要当前的管理员密码。如果您刚刚安装了MariaDB,但尚未设置管理员密码,则密码将为空,因此您只需在此处按回车键(Enter)。
输入当前管理员密码(输入回车表示无):Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation.
Set root password? [Y/n]设置管理员密码以确保没有人能在没有授权的情况下能够登录MariaDB管理员账户。
是否设置管理员密码?[Y/n]
建议设置Root密码,即回答Y并设置密码。By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.
Remove anonymous users? [Y/n]默认情况下,Mariadb安装有一个匿名用户,允许任何人登录MariaDB,而无需为其创建用户帐户。这仅用于测试,并使安装更加顺利。在进入生产环境之前,您应该删除它们。
删除匿名用户?[Y/n]
提示说得很清楚,看情况选择。这里我选择Y。Normally, root should only be allowed to connect from ‘localhost‘. This ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n]通常,只允许管理员从“localhost”连接。这样可以确保有人无法猜测网络中的管理员密码。
不允许远程登录管理员用户?[Y/n]看情况选择。这里我选择Y。By default, MariaDB comes with a database named ‘test‘ that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment.
Remove test database and access to it? [Y/n]
Remove test database and access to it? [Y/n]默认情况下,Mariadb附带一个名为“test”(测试)的数据库,任何人都可以访问该数据库。这也仅用于测试,在进入生产环境之前应将其移除。
删除“test”数据库并访问它?[Y/n]
看情况选择。这里我选择Y。Reloading the privilege tables will ensure that all changes made so far will take effect immediately.
Reload privilege tables now? [Y/n]重新加载权限表将确保到目前为止所做的所有更改都将立即生效。
现在重新加载权限表?[y/n]
选择Y即可。
如果需要更改,可以重新运行这个安全脚本。
至此,LNMP环境搭建完成。如果不想安装WordPress的话,到这里就可以了。 - 创建WordPress数据库,参考CentOS7安装WordPress。
首先登录数据库。1 mysql -u root -p
有的教程会直接使用root用户登录WordPress,余以为不然。这么做虽然很方便,但是终归还是不安全。在WordPress中,数据库的密码是以明文存放在其配置文件中,倘若服务器被攻破,数据库的密码等同于直接呈现给攻击者。因此,我们除了创建数据库外,还应创建一个只能访问WordPress的用户。
输入密码,依次执行以下SQL命令:1 CREATE DATABASE [WordPress数据库名]; # 创建数据库 2 3 # 创建访问WordPress数据库的用户和密码 4 CREATE USER [访问WordPress用户名]@localhost IDENTIFIED BY ‘[WordPress数据库的密码,用单引号引起来]‘; 5 6 # 设置选择的用户名访问WordPress数据库权限 7 GRANT ALL PRIVILEGES ON [数据库名].* TO [访问WordPress用户名]@localhost IDENTIFIED BY ‘[WordPress数据库的密码]‘; 8 9 FLUSH PRIVILEGES; # 刷新数据库设置 10 EXIT; # 退出数据库
例如:
1 CREATE DATABASE wordpress; # 创建一个名为wordpress的密码 2 CREATE USER wpUser@localhost IDENTIFIED BY ‘123456‘; # 创建用户名为wpUser,密码为123456的用户 3 GRANT ALL PRIVILEGES ON wordpress.* TO wpUser@localhost IDENTIFIED BY ‘123456‘; # 赋予wpUser访问wordpress数据库的权限 4 FLUSH PRIVILEGES; 5 EXIT;
八、(可选)安装PHPMyAdmin
PHPMyAdmin是一个数据库管理软件,可以使你通过浏览器管理数据库。因为我没有这个需求,所以不打算安装PHPMyAdmin。如果你有安装PHPMyAdmin的需求,可以查阅《CentOS7安装PHPMyAdmin》。
九、安装WordPress
进入Nginx配置的网页路径的上一级文件夹。
1 cd [WordPress的上一级文件夹]
例如我的网页路径是/usr/share/nginx/html,我可以:
1 cd /usr/share/nginx/
然后,将路径的最后一级文件夹删掉(为接下来使用WordPress替代)
1 sudo rm -rf ./[最后一级文件夹] 2 # 例如: 3 sudo rm -rf ./html
下载并解压WordPress,然后重命名。
1 wget https://wordpress.org/latest.zip 2 unzip latest.zip # 如果找不到unzip的命令的话,说明没有安装unzip。可以使用sudo yum install unzip安装 3 mv wordpress [WordPress最后一级文件夹名] # 例如mv wordpress html 4 mv ./latest.zip ./WordPressBackUp.zip
设置权限:
1 cd [网页路径的上一级文件夹] #如果紧跟着上面做的话,你已经在WordPress路径的上一级文件夹了 2 sudo chown -R nginx:nginx [WordPress最后一级文件夹] # 递归地将WordPress文件夹地权限赋给Nginx 3 sudo chmod 0755 [WordPress最后一级文件夹]
例如:
1 cd /usr/share/nginx/2 sudo chown -R nginx:nginx html 3 sudo chmod 0777 html # 安装完成后,为保证安全,可使用sudo chmod 0755 html限制其权限
打开浏览器,输入计算机的IP地址,如能看到WordPress的安装界面,说明配置成功。
十、安装WordPress
- 进入WordPress
内容翻译如下
- 输入数据库信息(原图是英语,翻译后的网页如下)
- 运行安装
- 输入网站信息
翻译如下: - 成功!
如果遇到这种情况,就说明WordPress没有访问其目录的权限。
退回上一步,打开终端,使用命令
1 sudo chmod 0777 [WordPress路径]
重试。
理论上来说,这个似乎能解决一大部分问题。安装完成后,再用这么命令将WordPress目录修改权限为0755。
如果这么做依旧不行,那么只能在手动将这个文件写到WordPress目录中。
1 vim [WordPress路径]/wp-config.php
将内容复制进去,并在文件的最后加上“?>”运行安装(Run the installation)即可。
十一、(可选)安装FTP
我们使用vsftpd作为ftp服务器。安装并启动:
1 sudo yum install vsftpd # 安装 2 sudo yum enable vsftpd # 开机自启 3 sudo yum start vsftpd # 启动vsftpd
我们还可以编辑其配置文件,方法:
1 vim /etc/vsftpd/vsftpd.conf
编辑方法参见《ftpd服务常见配置总结》
安装完成后,可以使用FTP安装插件(但是这个功能好像要求你的服务器具有公网IP)。
十二、(可选)安装中文语言包
在wp-config.php中,添加下面一行(官方教程说要找到: define(‘WPLANG‘, ‘‘); 一行,在第二个参数处填入
zh_CN。但是我没找到。直接添加应该也是没问题的):
1 define(‘WPLANG’, ‘zh_CN‘);
过段时间,在WordPress的更新界面可以看到语言包的更新。更新即可。
如果你等不及,也可以去下载一个WordPress中文版。然后将[WordPress目录]/wp-content/languages文件夹复制到你的WordPress目录中对应的位置去。
什么?你问为什么不直接用WordPress中文版?WordPress中文版的更新速度稍慢,版本稍稍落后一点(毕竟要开发中文语言包)。而且,我之前能在中文官网能下载到中文版,但直到我发博客的这天,中文官网已经把路径换成英文版的路径。这就很神奇了……据说WordPress中文版会有一些问题(走了弯路的我悄悄安慰自己,吃不到葡萄说葡萄酸)。
十三、完成
恭喜你,完成了LNMP和WordPress的安装!我也完成了这篇博客。希望这篇博客对你有帮助。
原文地址:https://www.cnblogs.com/mrfangd/p/BuildLnmp.html