WP 01 – 阿里云服务器搭建WordPress站点

WP 01 – 阿里云服务器搭建WordPress站点

1 注册域名

在阿里云新用户搞优惠活动的时候注册了万网的域名, healchow.com, 这里直接拿来用.

后续需要将域名解析到服务器上.

2 购买服务器

同样是在阿里云新用户优惠期购买的 ECS 服务器, 配置为2核4G内存40G高效云盘, 搭建 WordPress 博客系统足够了.

  • 服务器地区的选择: 博主选了香港区, 好处是不用备案, 劣势是访问速度较慢. 不过考虑到想要自己搭梯子, 所以还是选择了香港的.
    —— 20190923补充: 打脸了, 阿里云半年前就警告不让搭梯子玩了?

  • 服务器镜像的选择: 做程序开发的选 Linux 做服务器, 这个不用解释了吧? 博主选的是 CentOS 7.4 64 位的原生镜像.

  • 需要记住: 服务器外网ip地址, 服务器的用户名, 以及这个用户名对应的登录密码. 这里博主通过超级用户root进行配置.

3 域名 DNS 解析

DNS 是 Domain Name System 的简写, 就是域名系统, 用来将互联网中各类域名解析到特定的服务器IP上.

通俗理解就是: 在浏览器地址栏输入www.healchow.com, 就能访问我们的站点, 效果等同于在浏览器输入47.52.172.39.

相关的配置在阿里云域名控制台: https://dns.console.aliyun.com, 配置方式如下图:

001-域名DNS解析

4 部署环境

运行 WordPress 需要安装:

① Nginx —— 做反向代理, 也就是外部通过域名直接能够访问到服务器内的各类资源. 当然也可以用 Apache 作代理服务器, 但博主我没试过?.
② PHP —— WordPress 是用 PHP 编写的, 这个必须安装.
③ MySQL —— 搭建的博客系统的用户、文章、图片、评论等所有信息都是保存在MySQL服务器中的, 也是必须安装的.

—— 由于博主安装的是原生的 CentOS 系统, 不是集成的运行环境, 所以需要手动安装上述软件. 步骤如下:

4.1 关闭防火墙

通过远程工具连接阿里云主机, 这里博主用的是 SecureCRT:

002-SecureCRT连接阿里云服务器

之前在翻墙搭梯子的时候已经在安全组中开启了各常用端口, 如果没有开启, 就需要暂时关闭防火墙:

# CentOS 7 以上的系统:
# 关闭防火墙:
[root@onepiece ~]# systemctl stop firewalld.service
# 查看防火墙状态:
[root@onepiece ~]# systemctl status firewalld.service
# Active活动状态为inactive, 说明已经关闭:
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

# 扩展: CentOS 7 以下的系统操作防火墙的命令:
service firewalld start | stop | restart | try-restart | reload | force-reload | status

4.2 安装 Nginx

1) 删除服务器中可能预先安装的 Apache 服务:

[root@onepiece ~]# yum remove httpd

2) 安装 Nginx:

[root@onepiece ~]# yum install -y nginx

如果没有写 -y 会出现提示选择 yes/no, -y 就是默认为 yes.

3) 开启 Nginx 服务:

[root@onepiece ~]# service nginx start
# 或者使用下述命令:
systemctl start nginx.service

如果安装顺利, 此时打开浏览器输入服务器的外网 ip 会看见 Nginx 的默认首页.

这里博主已经将域名healchow.com解析到了阿里云服务器的外网 IP 上了;
如果服务器设置了 SSL 证书, 则需要在 Nginx 的配置文件中配置443端口相关的信息, 这个我们在后续博文中详细介绍.

003-Nginx默认首页

4.3 安装 PHP

1) 删除服务器中可能预先安装的PHP服务:

[root@onepiece ~]# yum remove php php-fpm php-mysql

2) 安装PHP相关服务, 这里只安装 php、php-fpm 和 php-mysql, 就足以支持 WordPress 的运行了:

[root@onepiece ~]# yum -y install php php-fpm php-mysql

如果没有写 -y 会出现提示选择 yes/no, -y 就是默认为 yes.

3) 开启PHP服务:

[root@onepiece ~]# service php-fpm start
# 或者使用下述命令:
systemctl start php-fpm.service

4.4 建立 Nginx 到 PHP 的映射

1) 创建 WordPress 安装目录, 这里博主为博客建立专门的目录: /data/blog.

# 创建安装目录:
[root@onepiece ~]# mkdir -p /data/blog

2) 修改 Nginx 的配置文件:

[root@onepiece ~]# vim /etc/nginx/nginx.conf

修改server中的配置信息:

    server {
       listen             80;
       server_name        healchow.com www.healchow.com;

       root               /usr/share/nginx/html;

       # Load configuration files for the default server block.
       include /etc/nginx/default.d/*.conf;

       location / {
           root             /data/blog;
           index            index.html index.htm index.php;
       }

       # 这里是反斜线\, 把所有以.php的结尾的文件通过127.0.0.1:9000交由PHP服务进行渲染
       location ~ \.php{
           root             /data/blog;
           fastcgi_pass     127.0.0.1:9000;
           fastcgi_index    index.php;
           fastcgi_param    SCRIPT_FILENAMEdocument_root$fastcgi_script_name;
           include          fastcgi_params;
       }
       # 修改404页面为php页面
       error_page 404 /404.html;
       location = /40x.php {}
       # 修改50x页面为php页面
       error_page 500 502 503 504 /50x.html;
       location = /50x.php {}
    }

3) 修改 PHP 的配置文件:

[root@onepiece ~]# vim /etc/php.ini

在文件最后添加配置:

cgi.fix_pathinfo = 1

4) 重启 php-ftp 并重启 Nginx:

[root@onepiece ~]# service php-fpm start
Redirecting to /bin/systemctl start php-fpm.service
[root@onepiece ~]# service nginx restart
Redirecting to /bin/systemctl restart nginx.service

5) 配置测试:

① 在网站根目录下创建一个测试文件 vi /data/blog/index.php, 输入任意测试内容, 这里输入nginx links to php.
② 切换到浏览器, 刷新Nginx的默认首页, 如果显示index.php文件中的内容, 说明连接成功.
③ 测试情况如下:
004-Nginx连接PHP.jpg

4.5 安装 MySQL(MariaDB)

1) 安装 MySQL:

[root@onepiece blog]# yum -y install mysql mysql-server

2) 启动服务:

[root@onepiece blog]# service mysqld start

3) 报错如下:

[root@onepiece blog]# systemctl start mysql.service
Failed to start mysql.service: Unit not found.

查了半天资料, 终于了解到:

MariaDB 代替了 MySQL 数据库 —— MariaDB 是 MySQL 的一个分支, 主要由开源社区维护, 采用 GPL 授权许可.

开发这个分支的原因之一是: Oracle(甲骨文) 公司收购 MySQL 之后, 有将 MySQL 闭源的潜在风险, 因此开源社区采用分支的方式避开这个风险.

4) 因此用上述命令启动不了, 正确的方法如下:

# 安装MariaDB服务:
[root@onepiece blog]# yum -y install mariadb-server

# 立即启动MariaDB服务:
[root@onepiece blog]# systemctl start mariadb.service

# 开机自启动MariaDB服务:
[root@onepiece blog]# systemctl enable mariadb.service

# 登录MySQL, 连接MariaDB服务:
[root@onepiece blog]# mysql -u root -p
[root@onepiece blog]#

5) 更改MariaDB的 root 账户密码:

[root@onepiece blog]# mysqladmin -u root -p 旧密码 password 新密码
# 注意: -p和旧密码之间没有空格, password和新密码之间有空格
[root@onepiece blog]# mysqladmin -u root -ptest password test01

005-修改MySQL服务的密码

此时如果能进入MySQL命令行界面, 就说明MySQL已经安装好了.

4.6 (亲测可省略)安装 vsftpd

1) 创建 WordPress 安装目录: 这里创建用户 blog, 在其主目录下安装 WordPress:

# 添加工作组:
[root@onepiece ~]# groupadd ftp

# 创建用户
# -d:指定主目录  -g:设置用户的群组  -s:设置SSH权限  -p:设置密码   最后面的blog是用户名
[root@onepiece ~]# useradd -g ftp -s /sbin/nologin healchow
# 此时/home目录下将生成healchow文件夹

# 修改用户密码
[root@onepiece ~]# passwd healchow xxx(为用户blog配置的密码)

2) 安装 vsftpd:

[root@onepiece blog]# yum install -y vsftpd

3) 配置 vsftpd:

[root@onepiece blog]# vim /etc/vsftpd/vsftpd.conf

配置后的文件为:

[root@onepiece blog]# cat /etc/vsftpd/vsftpd.conf

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
# 禁止匿名访问
anonymous_enable=NO

# 下述先不做修改:
# Uncomment this to allow local users to log in.
# When SELinux is enforcing check for SE bool ftp_home_dir
local_enable=YES

# Uncomment this to enable any form of FTP write command.
write_enable=YES

# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
# 设置新建文件的权限, 一般设置为022, 则
# 新建文件的权限为 777-022 = 755, 666-022 = 644
local_umask=022

# 设置默认的根目录, 就是用户链接ftp后默认进入的目录, 中间不要有空格
local_root=/data/blog

# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
# When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
xferlog_file=/var/log/vsftpd.lob
#
# If you want, you can have your log file in standard ftpd xferlog format.
# Note that the default log file location is /var/log/xferlog in this case.
xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)

# 开启用户访问限制, 限制用户只能在其主目录下活动, 同时为主目录开放写的权限
# 如果不想开放写权限, 通过chmod a-w 设置主目录权限, 否则链接会出现500错误
chroot_local_user=YES
allow_writeable_chroot=YES
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
#
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=NO
#
# This directive enables listening on IPv6 sockets. By default, listening
# on the IPv6 "any" address (::) will accept connections from both IPv6
# and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
# sockets. If you want that (perhaps because you want to listen on specific
# addresses) then you must run two copies of vsftpd with two configuration
# files.
# Make sure, that one of the listen options is commented !!
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

4) 启动 FTP 服务:

# 启动服务:
[root@onepiece blog]# service vsftpd start
# 或者: systemctl start vsftpd.service

# 停止服务:
[root@onepiece blog]# service vsftpd stop

# 重启服务:
[root@onepiece blog]# service vsftpd restart

# 设置开机启动 FTP 服务
[root@onepiece blog]# chkconfig vsftpd on

5) 配置说明:

vsftpd 使用 ftpusers 和 user_list 两个文件对用户进行限制:

/etc/vsftpd/ftpusers文件总是有效, 是黑名单 —— 里面的用户禁止登入 FTP;
/etc/vsftpd/user_list 文件, 它要与 /etc/vsftpd/vsftpd.conf 文件配合使用:

如果 userlist_deny=YES, 这个文件就是黑名单, 其中配置的用户禁止登入FTP;
如果 userlist_deny=NO, 这个文件就是白名单, 其中配置的用户才能登入FTP.

③ 另外, 如果在 /etc/vsftpd/vsftpd.conf 文件中配置 userlist_enable=NO, 则 user_list 文件无效, 如果 userlist_enable=YES, 此时 user_list 文件有效, 将根据 vsftpd.conf 中配置的 userlist_deny 的值进行校验.

到这里, 所有的环境都已经搭建完毕, 接下来就是安装 WordPress 了.

5 安装WordPress

5.1 获取要安装的版本

到官网获取要安装的WordPress的版本:

英文官网为: https://wordpress.org/download,
中文官网为: https://cn.wordpress.org/download.

博主这里安装的是当时最新的中文版, 链接为: https://cn.wordpress.org/wordpress-5.0.3-zh_CN.tar.gz.

5.2 下载并解压

1) 通过 SecureCRT 连接服务器, 切换到网站根目录, 下载安装包:

[root@onepiece ~]# cd /data/blog
[root@onepiece blog]# wget https://cn.wordpress.org/wordpress-5.0.3-zh_CN.tar.gz

2) 解压安装包, 将所有文件都移动到根目录:

[root@onepiece blog]# tar -zxf wordpress-5.0.3-zh_CN.tar.gz 
[root@onepiece blog]# mv wordpress/* ./
# 如果提示是否覆盖原有的测试 index.php, 果断是:
mv: overwrite ‘./index.php’? y

如果有强迫症可以把压缩包和空文件夹也删了:

[root@onepiece blog]# rm -rf wordpress wordpress-5.0.3-zh_CN.tar.gz

5.3 创建数据库

1) 连接 MySQL, 创建用来存放 WordPress 站点数据的数据库:

[root@onepiece blog]# mysql -u root -p
Enter password: # 这里输入密码

......
# 创建数据库:
MariaDB [(none)]> create database wordpress;

2) 编辑 WordPress 配置文件, 关联数据库:

[root@onepiece blog]# mv wp-config-sample.php wp-config.php
[root@onepiece blog]# vim wp-config.php

修改以下属性:

define('DB_NAME', '你的数据库名');
define('DB_USER', '数据库的用户名');
define('DB_PASSWORD', '数据库密码');
define('DB_HOST', '主机地址(当前机器就填localhost)');

3) 刷新浏览器, 如果能看到下图中WordPress的界面, 说明搭建成功^_^

006-WordPress搭建成功

5.4 更改用户组

注意: 这一步至关重要, 否则可能导致无法安装主题、无法复制文件、无法创建目录等一系列问题.

# 更改用户和用户组:
[root@onepiece blog]# chown -R apache:apache /data/blog

6 常见问题

6.1 开启防火墙

1) 搭建完网站后, 开启80端口(HTTP服务)以及443端口(HTTPS服务), 然后将之前关闭的防火墙重新开启:

在阿里云ECS控制台的安全组规则中配置端口的开启, 链接如下: https://ecs.console.aliyun.com/#/securityGroup

2) 开启防火墙:

# CentOS 7 开启防火墙: 
[root@onepiece blog]# systemctl start firewalld.service

6.2 设置开机启动

将安装的程序注册为开机自动启动:

[root@onepiece blog]# systemctl enable mariadb.service
[root@onepiece blog]# systemctl enable php-fpm.service
[root@onepiece blog]# systemctl enable nginx.service

6.3 不能安装主题

WordPress安装目录的权限设置非常重要.

当你安装的WordPress遇到下述问题时:

  1. 不能安装、更新主题, 需要FTP账户;
  2. 不能安装、更新插件;
  3. 复制文件错误;
  4. 无法创建目录……

说明你的安装目录权限配置出现了问题 —— 不属于Web管理后台所属的用户和组.

划重点: 网络上有一大批将目录权限设置为777的文档, 方法可行, 但危险系数太高, 非常不推荐.

这里教你如何正确的设置WordPress的权限:

1) 进入WordPress的安装目录, 赋予所有写权限:

[root@onepiece ~]# cd /data/blog
[root@onepiece blog]# chmod 777 wp-content

2) 在博客后台的媒体库中上传一张图片, WordPress会自动生成/uploads目录, 查看该目录的用户和用户组:

[root@onepiece wp-content]# ll
total 20
-rw-r--r-- 1   1006   1006   28 Jan  9  2012 index.php
drwxr-xr-x 4   1006   1006 4096 Jan 11 18:02 languages
drwxr-xr-x 3   1006   1006 4096 Jan 11 18:00 plugins
drwxr-xr-x 5   1006   1006 4096 Jan 11 18:02 themes
drwxrwxrwx 3 apache apache 4096 Feb  5 09:04 uploads

007-查看自动上传文件的用户信息.jpg

博主这里的用户名和用户组都是 “apache”.

3) 把wp-content目录的权限还原到 755:

[root@onepiece wp-content]# cd /data/blog
[root@onepiece blog]# chmod 755 wp-content

4) 最终的修复的命令 —— 更改WordPress安装目录的拥有者:

[root@onepiece wp-content]# cd /data
[root@onepiece data]# chmod 755 blog

008-修复主题不能更新的问题.jpg

问题解决(^-^)V

参考资料

WordPress安装指南
阿里云搭建 WordPress 全过程
Centos7 安装 MySql Mariadb
Linux 下用 vsftpd 搭建 FTP 服务
WordPress 安装,文件夹权限设置

(全文完)

瘦风的南
微信关注《瘦风的南墙》 在移动端阅读文章

(感谢阅读, 转载请注明作者和出处 瘦风的南墙 , 请勿用于任何商业用途)

——=== 访问 本站404页面 寻找遗失儿童 ===——
0 0 投票数
文章评分
订阅评论
提醒
guest
1 评论
最新
最旧 最多投票
内联反馈
查看所有评论
1
0
希望看到您的想法,请您发表评论x
()
x