什么是LAMP
LAMP 的全称是 Linux + Apache + MySQL + PHP
-
Linux 是类 Unix 计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo 等。
-
Apache 是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
-
PHP 是一种在服务器端执行的嵌入 HTML 文档的脚本语言。
-
MySQL 是一个关系型数据库管理系统。
这些软件一个一个安装比较费力,特别是数据库。
因此有人把这些软件的安装部署过程集成为一个 Shell 脚本,而你只要下载并执行它就可以了。
可以使用如下命令安装
# 下载wget工具、unzip工具
yum install -y wget unzip
# 下载脚本
wget https://github.com/teddysun/lamp/archive/master.zip -O lamp.zip
# 解压缩
unzip lamp.zip
# 进入解压目录,增加权限,执行脚本
cd lamp-master
chmod 755 lamp.sh
./lamp.sh
这里我不选择使用该方法,原因有二
- 更精细的部署步骤会让你对 WordPress 的运作方式有更深的理解,比如使用了哪些软件,装了哪些包
- 己搭建了网站,难免以后会碰到各种各样的服务器问题,尽早的接触 Linux,熟悉各项配置,对以后的运维工作会有很有帮助
什么是wordpress
Wordpress是一款全球流行的免费开源的建站程序,提供了海量的主题和丰富的插件。Wordpress最初是一款面向博客搭建的建站程序,但现在也有很多其他类型的网站都是使用它搭建的。数据显示这个蓝星上超过35%的网站都是基于wordpress的。无论是发布博文的个人博客,还是社交资讯网站,亦或者是电子商务和企业门户,借助wordpress,即便不会写代码,你也可以轻松搭建
搭建LAMP软件环境
# 更新软件包
[root@lxc ~]# yum update
# 安装httpd、MySQL
[root@lxc ~]# yum install -y httpd mariadb-server mariadb
# 启动apache服务和数据库服务
[root@lxc ~]# systemctl enable httpd mariadb
[root@lxc ~]# systemctl start httpd mariadb
# 安装php
[root@lxc ~]# yum install -y epel-release
# 下载外部php源
[root@lxc ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@lxc ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# 查看可安装的php版本
[root@lxc ~]# yum list | grep php
# 安装指定版本的php和php-mysql
[root@lxc ~]# yum install -y php56w php56w-fpm php56w-mysql
# 查看端口是否都打开
[root@lxc ~]# ss -tanl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 50 *:3306 *:*
LISTEN 0 100 [::1]:25 [::]:*
LISTEN 0 128 [::]:80 [::]:*
# 查看http模块里有没有php模块
[root@lxc ~]# httpd -M
...
php5_module (shared)
...
设置数据库密码确保连接
# 数据库安全脚本,为了安全用来初始化设置密码的
[root@lxc ~]# mysql_secure_installation
# 用户名密码登陆数据库 '-u'后面用户 '-p'后面密码
[root@lxc ~]# mysql -uroot -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> quit
Bye
配置MySQL数据库
# 为wordpress配置一个数据库
[root@lxc ~]# mysql -uroot -p
Enter password: # 根据提示输入MySQL密码
# 为wordpress创建一个叫wordpress的数据库
MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.00 sec)
# 为这个用户配置数据库的访问权限
MariaDB [(none)]> grant all privileges on wordpress.* to 'wordpress'@'localhost' identified by '1';
Query OK, 0 rows affected (0.01 sec)
# 生效这些配置
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
# 退出MySQL
MariaDB [(none)]> exit;
Bye
安装并配置wordpress
# 下载wordpress
[root@lxc ~]# wget https://cn.wordpress.org/wordpress-5.6.2-zh_CN.tar.gz
# 解压wordpress安装包
[root@lxc ~]# tar xvzf wordpress-5.6.2-zh_CN.tar.gz
[root@lxc ~]# cp wordpress/wp-config-sample.php wordpress/wp-config.php
[root@lxc ~]# vim wordpress/wp-config.php
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define( 'DB_NAME', 'wordpress' );
/** MySQL数据库用户名 */
define( 'DB_USER', 'wordpress' );
/** MySQL数据库密码 */
define( 'DB_PASSWORD', '123456' );
/** MySQL主机 */
define( 'DB_HOST', 'localhost' );
# 由于PHP默认访问/var/www/html/文件夹,所以需要把wordpress文件夹里的文件都复制到/var/www/html/文件夹
[root@lxc ~]# cp -ar wordpress/* /var/www/html/
# 修改/var/www/html/目录权限
[root@lxc ~]# chmod -R 755 /var/www/html/
浏览器输入IP地址访问,输入网站基本信息后,安装wordpress
安装结束,我们已经拥有了一个自己的网址,但是这并不完美,别人访问网址难不成要记住IP地址?所以接下来要完成域名的解析工作
域名解析
我的域名是在腾讯云购买,其余云服务域名商的操作类似
首先进入控制台,进入域名解析管理页面,选择解析
然后新手可以选择快速添加网站/邮箱解析,选择网站解析,立即设置,输入服务器的IP地址即可,此时就可以使用域名访问刚刚搭建的博客了
部署HTTPS
但此时使用域名访问仍会发现一个问题,以我的chrome浏览器为例,浏览器会自动提示不安全,因为没有使用HTTPS
因此,下面接着部署HTTPS
- 首先去申请HTTPS证书,有免费版的,我这里直接在腾讯云,当然也可以在宝塔等平台申请
- 申请HTTPS证书时需要输入域名,可能需要等待片刻
- 然后将申请到的HTTPS证书下载到本地,将压缩包解压
- 解压后的文件夹中会有Apache、IIS、Nginx、Tomcat的子文件夹
- 使用哪一种Web服务器就将对应子文件夹中的文件部署在服务器的配置文件中
这里我以Apache为例
- 安装
mod_ssl
模块和上传ssl文件
# 安装mode_ssl模块
[root@lxc ~]# yum install -y mod_ssl
# 在Apache的目录下新建一个文件夹,名称随意。我这边的文件夹名字是cert。
[root@lxc ~]# mkdir /etc/httpd/cert
# 然后使用远程拷贝软件将Apache子文件夹中的三个文件放到这个文件夹里面
- 修改 ssl 配置文件
[root@lxc ~]# vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/httpd/cert/2_xxx.xxx.crt
SSLCertificateKeyFile /etc/httpd/cert/3_xxx.xxx.key
SSLCertificateChainFile /etc/httpd/cert/1_root_bundle.crt
# 也可能是以下形式(视证书而定)
SSLCertificateFile /etc/httpd/cert/xxx_public.crt
SSLCertificateKeyFile /etc/httpd/cert/xxx.key
SSLCertificateChainFile /etc/httpd/cert/xxx_chain.crt
# 继续修改443端口站点信息
<VirtualHost *:443>
DocumentRoot "/var/www/html"
ServerName www.xxx.xxx:443 # 域名:443
<Directory "/var/www/html">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
...
</VirtualHost>
- 修改Apache配置文件
[root@lxc ~]# vim /etc/httpd/conf/httpd.conf
# 找到该行将#去掉,没有则添加
LoadModule ssl_module modules/mod_ssl.so
# 部分需要添加该行,但是我添加报错
Include /etc/httpd/conf.d/ssl.conf