单机部署 WordPress 个人博客

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

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

实验内容

-

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

实验资源

云服务器

软件环境

-

目录

# 从单机部署 WordPress 开始 ## 准备 LNMP 环境 > <time>30min ~ 60min</time> LNMP 是 Linux、Nginx、MySQL 和 PHP 的缩写,是 WordPress 博客系统依赖的基础运行环境。 - Nginx 是一个高性能的HTTP和反向代理服务,同样也支持 IMAP/POP3/SMTP 服务。在实验中起到HTTP服务器的作用,可以用apache等替代。 - MySQL 是一个关系型数据库管理系统,MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS。在实验中主要承载博客数据存储。 - PHP 是一种通用开源脚本语言,WordPress 基于php编写,是运行博客的必要环境条件。 我们先来准备 LNMP 环境,本次实验所用Linux发行版为 CentOS7.2 版本,各系统版本安装方式均有不同,请严格选择该发行版进行实验,确保实验成功。 ### 安装 Nginx 使用 `yum` 安装 Nginx: ``` yum install nginx -y ``` 查看 [/etc/nginx/nginx.conf][edit-default],具体配置含义可见如下注释(无需操作): ```conf /// <example verb="edit" file="/etc/nginx/nginx.conf" /> listen 服务监听端口 server_name 服务名称,一般为域名; root 网站文件路径; include 引用配置文件; location 重写规则填写; error_page 错误页跳转; ``` 启动 Nginx: ``` nginx ``` 此时,可访问实验机器外网 HTTP 服务([http://${runtime.vars.cvmIpAddress}][])来确认是否已经安装成功。 将 Nginx 设置为开机自动启动: ``` systemctl enable nginx ``` > <locate for="edit-default" path="/etc/nginx/nginx.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 mariadb-server mariadb -y ``` 安装完成后,启动 MySQL 服务: ``` systemctl start mariadb ``` 设置 MySQL 账户 root 密码:[:question][password] ``` /usr/bin/mysqladmin -u root password 'MyPas$word4Word_Press' ``` 将 MySQL 设置为开机自动启动: ``` systemctl enable mariadb ``` > <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: ``` yum install php-fpm php-mysql -y ``` 安装之后,启动 PHP-FPM 进程: ``` systemctl start php-fpm ``` 启动之后,可以使用下面的命令查看 PHP-FPM 进程监听哪个端口 [:question][port] ``` netstat -nlpt | grep php-fpm ``` 把 PHP-FPM 也设置成开机自动启动: ``` systemctl enable php-fpm ``` > <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 使用 `wget` 安装中文版:[:question][wpinstall] ``` mkdir /usr/share/wordpress/ cd /usr/share/wordpress/ wget https://cn.wordpress.org/wordpress-5.0.3-zh_CN.zip unzip wordpress-5.0.3-zh_CN.zip mv wordpress/* /usr/share/wordpress/ ``` > <bubble for="wpinstall"> > 也可以自行下载最新中文版 wordpress,上传到相应目录即可 > https://cn.wordpress.org/ > </bubble> 安装完成后,就可以在 [/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 ``` 创建 Wordpress 配置文件: ``` cp /usr/share/wordpress/wp-config-sample.php /usr/share/wordpress/wp-config.php ``` 把上述的 DB 配置[同步到 WordPress 的配置][wp-config]文件中,可参考下面的配置: ```php /// <example verb="edit" file="/usr/share/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="/usr/share/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 来处理 首先,修改默认的配置文件 [nginx.conf][nginxconf]:[:question][rename],去掉 ~~default_server~~默认站点 ``` # listen 80 default_server; listen 80 ; ``` 在 `/etc/nginx/conf.d` [创建 wordpress.conf 配置][wp-nginx],参考下面的内容: ```conf /// <example verb="create" file="/etc/nginx/conf.d/wordpress.conf" /> server { listen 80 default_server; 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"> > 删除默认站点配置 > </bubble> > <locate for="wp-nginx" path="/etc/nginx/conf.d" hint="创建 wordpress.conf" /> > <locate for="nginxconf" path="/etc/nginx/nginx.conf" hint="修改 nginx.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] > undefined<link for="buy_link" href="https://dnspod.cloud.tencent.com/?fromSource=lab"></link> > > <video for="buy_domain_video" platform="qq" vid="p05077pwelw" name="域名选购"></video> ### 域名解析 域名购买完成后, 需要将域名解析到实验云主机上,实验云主机的 IP 为: ``` ${runtime.vars.cvmIpAddress} ``` 在腾讯云购买的域名,可以[到控制台添加解析记录][https://dnspod.cloud.tencent.com],过程可参考下面的视频: - [视频 - 如何在腾讯云上解析域名][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 博客已经部署完成,您可以通过浏览器访问博客查看效果。 ![image](https://share-10039692.file.myqcloud.com/lab/ac197229e6/image/awln5yz4ma/%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20190404121439.png) 通过IP地址查看: 博客访问地址:[http://${runtime.vars.domain}/wp-admin/install.php][] 通过域名查看: 博客访问地址:[http://www.yourdomain.com/wp-admin/install.php][],其中替换 `www.yourdomain.com` 为之前申请的域名。