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

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

1 注册域名

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

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

2 购买服务器

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

  • 服务器地区的选择: 我选了香港区, 好处是不用备案, 劣势是访问速度较慢. 不过考虑到想要自己搭梯子, 所以还是选择了香港的.

  • 服务器镜像的选择: 搞IT的选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

这里只安装 php、php-fpm 和 php-mysql, 就足以支持 WordPress 的运行了.

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

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;
       }

       # 这里是反斜线\
       location ~ \.php$ {
           root             /data/blog;
           fastcgi_pass     127.0.0.1:9000;
           fastcgi_index    index.php;
           fastcgi_param    SCRIPT_FILENAME  /home/blog$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]# chkconfig mysqld on
[root@onepiece blog]# chkconfig php-fpm on
[root@onepiece blog]# chkconfig nginx on

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 全过程

Centos7 安装MySql Mariadb

linux下用vsftpd搭建FTP服务

WordPress安装指南

WordPress 安装,文件夹权限设置

(全文完)

微信公众号
关注马瘦风的微信公众号 在移动端搜索文章

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

——=== 访问 本站404页面 寻找遗失儿童。 ===——

发表评论

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