ubuntu安装Nginx+PHP7.2+MySql8.0+Typecho环境
宝塔的最近出的问题相信大家有目共睹的,登陆验证死活无法通过,后来看新闻才知道机房出问题了,对于安全人员来说,你越少的用别人的组件、框架也就意味着你会更安全一些,今天带来的是ubuntu手搓LNMP搭建Typecho博客 (不用宝塔)。
安装Nginx
更新apt源
#更新apt源
apt update
#安装nginx
apt-get install nginx
#启动nginx
service nginx start
安装PHP7.2
#添加PHP源
apt-add-repository ppa:ondrej/php
#安装7.2版本PHP以及一些常用拓展插件
apt install php7.2 libapache2-mod-php7.2 php7.2-fpm php7.2-mysql php7.2-curl php7.2-gd php7.2-mbstring php7.2-xml php7.2-xmlrpc php7.2-zip php7.2-opcache php7.2-gmp php7.2-bcmath php7.2-dom
配置nginx与php通信
找到nginx配置文件
vim /etc/nginx/sites-available/default
nginx Server 配置文件
需要注意两点:
- fastcgi_pass unix:/var/run/php/php7.2-fpm.sock 这个路径要对
- 还需要配置location
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html index.php;
server_name _;
location / {
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
}
重启php
/etc/init.d/php7.2-fpm restart
安装mysql
- 默认安装最新版(笔者安装时当前版本是8.0.39)
apt-get install mysql-server mysql-client
修改mysql8.0数据库密码
mysql -u root -p
password:******
mysql>use mysql;
mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
mysql>flush privileges;
mysql>exit;
root@localhost:mysql (输入mysql测试,看看不需要密码还能进去吗!提示输入密码则修改生效)
上传Typecho源码与自己的主题
略...
将源码解压缩到/var/www/html 目录中
unzip 命令解压压缩包,如果没有unzip命令 就安装unzip
apt install unzip
给目录添加权限
cd /var/www/html
chown -R www-data:www-data ./*
chmod -Rf 755 *
访问IP/域名即可完成安装。
配置SG11
由于我用到的一些typecho插件需要SG加密拓展,所以才有了这一步
首先寻找php.ini 文件,记好php.ini的位置,如果你的机器上存在多个php环境的话就不要弄混。
locate php.ini
如果没有locate命令可以直接安装 apt install locate 或者
php -i |grep php.ini
官网下载SG组件
官网:PHP 编码器导览 (sourceguardian.com)
找到适合自己PHP的版本,这个组件不需要编译,找到自己合适版本的可以直接再官网有个测试功能,只需要把自己的服务器上的phpinfo页面链接地址输入进去,即可进行检测。
找到PHP拓展组件生效的目录
php -i |grep extension_dir
把这个目录写进php.ini文件中,就是前面找到的那个php.ini
将SG加密组件上传到这个目录 '/usr/lib/php/20170718' 中
重启php
service php7.2-fpm restart
测试SG加密组件是否生效
php -i | grep extension_dir
phpinfo中查看是否生效,搜索Source出现如下信息就是安装成功。
备份网站&网站搬家
备份
后台主题备份,如果你启用了一些主题插件提供了备份功能先进行主题的备份
打包网站
tar -zcvf web.tar /var/www/html/*
打包mysql数据库
mysqldump -uroot -p 数据库名 > ./sql.sql
弄个定期打包的定时任务,防止灾难发生,数据无价!
给大家提供一份我自己在用的备份脚本,可以添加到计划任务中每天完成自动化备份
#!/bin/bash
# 定义变量
WEB_DIR="/var/www/html(web站点目录)"
BACKUP_DIR="/root/webbak(备份文件存放目录)"
DB_NAME="要备份的数据库"
DB_USER="数据库用户名"
DB_PASS="数据库密码"
DATE=$(date '+%Y%m%d-%H%M%S')
# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR
# 备份网站文件
tar -zcf $BACKUP_DIR/web_backup_$DATE.tar.gz -C $WEB_DIR .
# 备份MySQL数据库
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/db_backup_$DATE.sql
# 打包数据库备份
tar -zcf $BACKUP_DIR/db_backup_$DATE.tar.gz -C $BACKUP_DIR db_backup_$DATE.sql
# 删除原始SQL文件
rm $BACKUP_DIR/db_backup_$DATE.sql
# 输出完成信息
echo "Backup completed successfully at `date "+%Y年%m月%d日 %H时%M分%S秒"`"
echo "Backup completed successfully at `date "+%Y年%m月%d日 %H时%M分%S秒"`" >> $BACKUP_DIR/backup_log.txt
搬家
搬家之前需要了解一下版本之间的兼容问题,还有如nginx的配置文件也要记录一下。
如果是新机子就按照如上配置来一套,如果新环境的话提前多试几次,测试使用的博客主题和插件与php版本的服务是否存在兼容问题。