超牛链AI Logo

超牛链博客: 读书|骑行|笔记分享
user
老王不响
@关于博主
2018-11-20

Ubuntu搭建WordPress-MySQL-Apache 11 mins read


目标

技术博客有5年时间了. 原来在虚拟机/VPS上搭建,不过都是Windows系统下的。 最近突发奇想,试试迁移到Linux的Unbuntu下。说干就干,抽空用了大约3天时间*每天1~2小时投入,完成搭建。 这里记录一下过程,分享给有需求的朋友。

1. 安装LAMP (Install Linux, Apache, MySQL, PHP)

首先需要安装 (LAMP) stack, 顺序执行命令,很简单。
sudo apt update
sudo apt install apache2

http://your_server_ip

sudo apt install mysql-server
sudo mysql_secure_installation
sudo apt install php libapache2-mod-php php-mysql
sudo vi /etc/apache2/mods-enabled/dir.conf
新的wordPress已经推荐支持Php 7.2,所以直接安装php 7.2。
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php7.2

2. 安装WordPress

cd /tmp
curl -O https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz

touch /tmp/wordpress/.htaccess
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

mkdir /tmp/wordpress/wp-content/upgrade
sudo cp -a /tmp/wordpress/. /var/www/wordpress
sudo chown -R www-data:www-data /var/www/wordpress
配置3个字段,可完成DB创建。(前置条件,需要先用MySQL创建DB,这里不再赘述)
curl -s https://api.wordpress.org/secret-key/1.1/salt/
vi 打开配置文件 /var/www/wordpress/wp-config.php


define('DB_NAME', 'wordpress'); /** MySQL database username */ define('DB_USER', 'wordpressuser'); /** MySQL database password */ define('DB_PASSWORD', 'password'); define('FS_METHOD', 'direct');

3. SSL增加HTTPs

今年Google Chorome、Apple Safari先后声明,全力支持HTTPS,故,本次也一并把HTTPS考虑在内了。 原来以为HTTPs和域名一样需要申请、审核,比较费时。 看了几篇博客,才知道通过certbot 申请,整个过程完全自动化,网速快的话10分钟可以完成申请(90天免费,写个自动化调度执行命令Refresh即可实现长期免费)。 按照顺序执行command:
sudo add-apt-repository ppa:certbot/certbot

sudo apt-get update
sudo apt-get install python-certbot-apache
sudo certbot --apache -d example.com
sudo certbot --apache -d example.com -d www.example.com
https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest

cron script placed in /etc/cron.d
sudo certbot renew --dry-run

tips: 几个比较耗时的过程总结

mySQL外网运维权限
linux的安全大门果然紧闭,难怪安全呢;不像windows安全大门比较松,使用起来灵活一些。如,MySQL访问权限,Linux默认在localHost内开放,但是我们为了运维方便,需要向定向IP进行授权。 通过修改配置文件,可开启MySQL外网访问权限:增删改查。 打开/etc/mysql/mysql.conf.d/mysqld.cnf 文件
修改IP地址
bind-address       = 0.0.0.0

mysql -p -u root

查询当前权限
select * from mysql.user; 
GRANT ALL ON *.* TO 'root'@'192.168.0.7' IDENTIFIED BY 'password' WITH GRANT OPTION;

FLUSH PRIVILEGES; 
EXIT;
GRANT ALL ON *.* TO 'user'@'localhost' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
同时,需要Linux系统防火墙开放3306端口:
sudo ufw allow 3306
sudo ufw status

netstat -an | grep 3306
netstat -an | grep -i established
WordPress调试开关
导入备份的DB,打开博客首页,奇怪,没反应。 估计是DB或者配置问题,为了Debug log,需要开启了WordPress自带的log开关,查debug.log看看端倪。 在 wp-config.php,添加如下代码:
 // Enable WP_DEBUG mode
define( 'WP_DEBUG', true );

// Enable Debug logging to the /wp-content/debug.log file
define( 'WP_DEBUG_LOG', true );

// Disable display of errors and warnings 
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

// Use dev versions of core JS and CSS files (only needed if you are modifying these core files)
define( 'SCRIPT_DEBUG', true );

WordPress固定连接访问失效解决
为了SEO,我把默认的WordPress博客链接修改为 https://www.chaoniulian.com/blog/photononazure/ 但是默认的Apache2没有打开这个规则,需要修改Apache的config文件,并重启Apache2服务。
vi /etc/apache2/apache2.conf

<Directory /path/to/wordpress>
  Options Indexes FollowSymLinks
  AllowOverride All
  Require all granted
</Directory>

# Change AllowOverride None to AllowOverride All

sudo a2enmod rewrite

sudo service apache2 restart

参考文章:

1. How To Install WordPress with LAMP on Ubuntu 18.04
2. How To Secure Apache with Let's Encrypt on Ubuntu 14.04
3. How to set up MySQL for remote access on Ubuntu Server 16.04
2018-11-20
老王 加冕为王
老王,工作了19年的软件工程师、连续创业者、Blogger(since 2013),微软.net MVP获得者(2015~2016)、 Unity3D UVP获得者 (2017)。 曾任上市公司研发主管、知名外企Social Media Marketing 。 现专注于Instagram、SEO等海外社交媒体营销技术研究与实践。 四十而立的我,有2个可爱的宝宝,喜好骑行、读书、木工, 尤其喜好历史、科幻书籍。
友情链接
超牛链 260天前 2024年3月6日 15:16

沙发福利来袭,快来留言畅谈

超牛链 260天前 2024年3月6日 15:16

沙发留给真心支持的老朋友,等待你的加入

最新文章

一路东北, 转眼二十年

一路东北, 转眼二十年了,最后一次回眸长春,是2004...

人道中年,悲欣交集

中年人的生活 各自欢乐, 又或一地鸡毛,简言之:【悲...

80后爱玩的PC游戏:红警、秦殇 —快乐呀。

记得非典—2003年那会,周末一到,大学宿舍里面,吃完...

超牛链AI:Ollama本地LLM LangChain RAG小试--算力为王

算力为王时代: CPU --> GPU

GPU这...

热门文章

骑行故事初心--自由的御风而行

2023年,三年疫情过后第一个春天,我开始了骑行: 空...

Unity3D for VR 学习(7): 360&deg;全景照片

    在VR应用中,有一个相对简单的虚拟现实体验,那...

C#程序员整理的Unity 3D笔记(六):Git源码管理

对程序员而言,写的代码用源码管理系统管理起来,非常方便...

《一句顶一万句》 遇见一个能说的上话的人不易

2024年 甲辰龙年春节假期,我看了2本小说,茅盾文学...

相关【技术杂谈】文章

查看所有相关【技术杂谈】文章
搭建Squid3 密码账号IP代理

上文中,说明了 Squid3 IP Proxy 隐藏原IP,这里就搭建Squid 3密码账号IP代理进行整理,涉及...

不用插件,js脚本显示星号密码

不用插件,js脚本显示星号密码

以前,我是用Chrome插件做这个这的--显示星号密码的。 今天,分享一个不用插件...

执行MySQL报错

今天新采购了柒比贰WordPress主题,安装主题时候报错: MySQL命令行使用sql语句进行建表时,MySQL...