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版本的服务是否存在兼容问题。

版权属于:刘亦菲
本文链接:https://xinux.top/archives/35.html
本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!