基于 CentOS 搭建 WordPress 个人博客

腾讯云
入门
0 个任务
剩余 1 个名额

你还可以 创建 或者 使用已有 云主机不限时上机

实验内容

也许博客已经不再流行,但是 WordPress 始终还有一大片的忠实用户。本实验带您从准备 LNMP 环境开始,一步步搭建起一个属于自己的 WordPress 博客。

首次可免费使用云主机 45 分钟 ,到期后云主机将被重置并退库,若想保留成果请及时留用。

实验资源

云服务器

软件环境

CentOS 6.8 64 位

目录

# 搭建 WordPress 个人博客 ## 准备 LNMP 环境 > <time>30min ~ 60min</time> LNMP 是 Linux、Nginx、MySQL 和 PHP 的缩写,是 WordPress 博客系统依赖的基础运行环境。我们先来准备 LNMP 环境 ### 安装 Nginx 使用 `yum` 安装 Nginx: ``` yum install nginx -y ``` 修改 [/etc/nginx/conf.d/default.conf][edit-default],去除对 IPv6 地址的监听[:question][ipv6],可参考下面的示例: ```conf /// <example verb="edit" file="/etc/nginx/conf.d/default.conf" /> server { listen 80 default_server; # listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } ``` 修改完成后,启动 Nginx: ``` nginx ``` 此时,可访问实验机器外网 HTTP 服务([http://${runtime.vars.cvmIpAddress}][])来确认是否已经安装成功。 将 Nginx 设置为开机自动启动: ``` chkconfig nginx on ``` > <bubble for="ipv6"> > CentOS 6 不支持 IPv6,需要取消对 IPv6 地址的监听,否则 Nginx 不能成功启动。 > </bubble> > <locate for="edit-default" path="/etc/nginx/conf.d/default.conf" hint="修改默认 Nginx 配置" /> > <checker type="output-contains" command="ls /etc/nginx/" hint="Nginx 未安装"> > <keyword regex="nginx.conf" /> > </checker> > <checker type="output-contains" command="netstat -nltp" hint="Nginx 未启动"> > <keyword regex="LISTEN" /> > <keyword regex="80" /> > </checker> ### 安装 MySQL 使用 `yum` 安装 MySQL: ``` yum install mysql-server -y ``` 安装完成后,启动 MySQL 服务: ``` service mysqld restart ``` 设置 MySQL 账户 root 密码:[:question][password] ``` /usr/bin/mysqladmin -u root password 'MyPas$word4Word_Press' ``` 将 MySQL 设置为开机自动启动: ``` chkconfig mysqld on ``` > <bubble for="password"> > 下面命令中的密码是教程为您自动生成的,为了方便实验的进行,不建议使用其它密码。如果设置其它密码,请把密码记住,在后续的步骤会使用到。 > </bubble> > <checker type="output-contains" command="mysql --version" hint="MySQL 未安装"> > <keyword regex="\d" /> > </checker> > <checker type="output-contains" command="mysql -u root --password='MyPas$word4Word_Press' -e &quot;select 'success' as ''&quot;" hint="使用生成的密码无法连接 MySQL,如果你已使用自己的密码完成了设置,请直接进入下一步。"> > <keyword regex="success" /> > </checker> ### 安装 PHP 使用 `yum` 安装 PHP:[:question][php] ``` yum install php-fpm php-mysql -y ``` 安装之后,启动 PHP-FPM 进程: ``` service php-fpm start ``` 启动之后,可以使用下面的命令查看 PHP-FPM 进程监听哪个端口 [:question][port] ``` netstat -nlpt | grep php-fpm ``` 把 PHP-FPM 也设置成开机自动启动: ``` chkconfig php-fpm on ``` > <bubble for="php"> > CentOs 6 默认已经安装了 PHP-FPM 及 PHP-MYSQL,下面命令执行的可能会提示已经安装。 > </bubble> > <bubble for="port"> > PHP-FPM 默认监听 9000 端口 > </bubble> > <checker type="output-contains" command="netstat -nlpt" hint="PHP-FPM 进程未启动"> > <keyword regex="php-fpm" /> > </checker> ## 安装并配置 WordPress > <time>30min ~ 60min</time> ### 安装 WordPress 配置好 LNMP 环境后,继续使用 `yum` 来安装 WordPress: ``` yum install wordpress -y ``` 安装完成后,就可以在 [/usr/share/wordpress][wp-path] 看到 WordPress 的源代码了。 > <locate for="wp-path" path="/usr/share/wordpress" hint="WordPress 源码在此" /> > <checker type="output-contains" command="ls /usr/share/wordpress" hint="WordPress 尚未安装"> > <keyword regex="index.php" /> > </checker> ### 配置数据库 进入 MySQL:[:question][password] ``` mysql -uroot --password='MyPas$word4Word_Press' ``` 为 WordPress 创建一个数据库: ``` CREATE DATABASE wordpress; ``` MySQL 部分设置完了,我们退出 MySQL 环境: ``` exit ``` 把上述的 DB 配置[同步到 WordPress 的配置][wp-config]文件中,可参考下面的配置: ```php /// <example verb="edit" file="/etc/wordpress/wp-config.php" /> <?php /** * The base configuration for WordPress * * The wp-config.php creation script uses this file during the * installation. You don't have to use the web site, you can * copy this file to "wp-config.php" and fill in the values. * * This file contains the following configurations: * * * MySQL settings * * Secret keys * * Database table prefix * * ABSPATH * * @link https://codex.wordpress.org/Editing_wp-config.php * * @package WordPress */ // ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define('DB_NAME', 'wordpress'); /** MySQL database username */ define('DB_USER', 'root'); /** MySQL database password */ define('DB_PASSWORD', 'MyPas$word4Word_Press'); /** MySQL hostname */ define('DB_HOST', 'localhost'); /** Database Charset to use in creating database tables. */ define('DB_CHARSET', 'utf8'); /** The Database Collate type. Don't change this if in doubt. */ define('DB_COLLATE', ''); /**#@+ * Authentication Unique Keys and Salts. * * Change these to different unique phrases! * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service} * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again. * * @since 2.6.0 */ define('AUTH_KEY', 'put your unique phrase here'); define('SECURE_AUTH_KEY', 'put your unique phrase here'); define('LOGGED_IN_KEY', 'put your unique phrase here'); define('NONCE_KEY', 'put your unique phrase here'); define('AUTH_SALT', 'put your unique phrase here'); define('SECURE_AUTH_SALT', 'put your unique phrase here'); define('LOGGED_IN_SALT', 'put your unique phrase here'); define('NONCE_SALT', 'put your unique phrase here'); /**#@-*/ /** * WordPress Database Table prefix. * * You can have multiple installations in one database if you give each * a unique prefix. Only numbers, letters, and underscores please! */ $table_prefix = 'wp_'; /** * See http://make.wordpress.org/core/2013/10/25/the-definitive-guide-to-disabling-auto-updates-in-wordpress-3-7 */ /* Disable all file change, as RPM base installation are read-only */ define('DISALLOW_FILE_MODS', true); /* Disable automatic updater, in case you want to allow above FILE_MODS for plugins, themes, ... */ define('AUTOMATIC_UPDATER_DISABLED', true); /* Core update is always disabled, WP_AUTO_UPDATE_CORE value is ignore */ /** * For developers: WordPress debugging mode. * * Change this to true to enable the display of notices during development. * It is strongly recommended that plugin and theme developers use WP_DEBUG * in their development environments. * * For information on other constants that can be used for debugging, * visit the Codex. * * @link https://codex.wordpress.org/Debugging_in_WordPress */ define('WP_DEBUG', false); /* That's all, stop editing! Happy blogging. */ /** Absolute path to the WordPress directory. */ if ( !defined('ABSPATH') ) define('ABSPATH', '/usr/share/wordpress'); /** Sets up WordPress vars and included files. */ require_once(ABSPATH . 'wp-settings.php'); ``` > <bubble for="password"> > 如果你上面的步骤没有使用教程创建的密码,请修改下面命令中的密码登录 > </bubble> > <locate for="wp-config" path="/etc/wordpress/wp-config.php" hint="编辑 WordPress 配置" /> > <checker type="output-contains" command="ls /usr/share/wordpress" hint="WordPress 尚未安装"> > <keyword regex="index.php" /> > </checker> > <checker type="output-contains" command="mysql -uroot -p'MyPas$word4Word_Press' -e 'show databases;'" hint="添加名为 wordpress 的数据库(如果你使用了其它密码或者其它数据库名称进行配置,请直接下一步)"> > <keyword regex="wordpress" /> > </checker> > <checker type="output-contains" command="cat /etc/wordpress/wp-config.php" hint="把 DB 配置同步到 WordPress 的配置文件中"> > <keyword regex="MyPas$word4Word_Press" /> > </checker> ### 配置 Nginx WordPress 已经安装完毕,我们配置 Nginx 把请求转发给 PHP-FPM 来处理 首先,重命名默认的配置文件:[:question][rename] ``` cd /etc/nginx/conf.d/ mv default.conf defaut.conf.bak ``` 在 `/etc/nginx/conf.d` [创建 wordpress.conf 配置][wp-nginx],参考下面的内容: ```conf /// <example verb="create" file="/etc/nginx/conf.d/wordpress.conf" /> server { listen 80; root /usr/share/wordpress; location / { index index.php index.html index.htm; try_files $uri $uri/ /index.php index.php; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ``` 配置后,通知 Nginx 进程重新加载: ``` nginx -s reload ``` > <bubble for="rename"> > 默认的 Server 监听 80 端口,与 WordPress 的服务端口冲突,将其重命名为 .bak 后缀以禁用默认配置 > </bubble> > <locate for="wp-nginx" path="/etc/nginx/conf.d" hint="创建 wordpress.conf" /> > <checker type="output-contains" command="cat /etc/nginx/conf.d/wordpress.conf" hint="为 WordPress 添加 Nginx 配置"> > <keyword regex="wordpress" /> > </checker> > <checker type="output-contains" command="curl http://127.0.0.1/wp-admin/install.php --silent" hint="启动 WordPress 博客"> > <keyword regex="WordPress" /> > </checker> ## 准备域名和解析 > <time>15min ~ 30min</time> ### 域名注册 如果您还没有域名,可以[在腾讯云上选购][buy_link],过程可以参考下面的视频。 * [视频 - 在腾讯云上购买域名][buy_domain_video] > <link for="buy_link" href="https://dnspod.qcloud.com/?fromSource=lab"></link> > <video for="buy_domain_video" platform="qq" vid="p05077pwelw" name="域名选购"></video> ### 域名解析 域名购买完成后, 需要将域名解析到实验云主机上,实验云主机的 IP 为: ``` ${runtime.vars.cvmIpAddress} ``` 在腾讯云购买的域名,可以[到控制台添加解析记录][https://console.qcloud.com/domain],过程可参考下面的视频: * [视频 - 如何在腾讯云上解析域名][video_resolve_domain] > <video for="video_resolve_domain" platform="qq" vid="t0507ps9kxo" name="域名解析"></video> 域名设置解析后需要过一段时间才会生效,通过 `ping` 命令检查域名是否生效 [:question][replace],如: > <bubble for="replace">注意替换下面命令中的 `www.yourmpdomain.com` 为您自己的注册的域名</bubble> ``` ping www.yourdomain.com ``` 如果 ping 命令返回的信息中含有你设置的解析的 IP 地址,说明解析成功。 ### 大功告成! 恭喜,您的 WordPress 博客已经部署完成,您可以通过浏览器访问博客查看效果。 通过IP地址查看: 博客访问地址:[http://${runtime.vars.domain}/wp-admin/install.php][] 通过域名查看: 博客访问地址:[http://www.yourdomain.com/wp-admin/install.php][],其中替换 `www.yourdomain.com` 为之前申请的域名。