Ubuntu编译安装lnmp+discuz论坛

Ubuntu编译安装lnmp+discuz论坛

什么是Inmp

l:linux 操作系统

n:nginx前端页面

m:mysql数据库 账号密码,等等都是保存在这个数据库里面

p:php-------nginx擅长处理的是静态页面,页面登录账户,需要请求到数据库,通过php把动态请求转发数据库

nginx

第一步:安装依赖环境

csharp 复制代码
tar -xf nginx-1.22.0.tar.gz    #解包
apt -y install libpcre3-dev zlib1g-dey libssl-dey build-essential     #安装依赖环境

第二步:创建用户

csharp 复制代码
useradd -M -s /sbin/nologin nginx


-M:只创建用户,不创建家目录
-s:指定创建用户的登录shell,禁止该用户登录系统nginx 用户名nginx

第三步: 安装到指定的路径

csharp 复制代码
cd nginx-1.22.0/     #cd到解压文件夹下
ll                  #查看是否存在configure文件

./configure --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module

第四步:安装完成之后对程序进行配置(权限,控制)

csharp 复制代码
make -j 4 && make install   #使用 4 个线程(或进程)来并行编译源代码可以显著加快编译速度让系统识别nginx的操作命令

ln -s /usr/local/nginx/sbin/nginx /usr/bin/   #让系统识别nginx的操作命令

cd /usr/local/
ll
总计 44
...
drwxr-xr-x  6 root root 4096 12月  5 14:09 nginx/     #查看nginx文件与所需的所有者和所在不同
...

root@u1:/usr/local# chown -R nginx.nginx nginx/  #修改nginx安装目录的所有者和所在组



cd nginx/        #进入nginx文件夹里
mkdir run        #创建一个新的文件
ll
总计 28
...
drwxr-xr-x  2 root  root  4096 10月 29 11:38 run/
...
root@du123:/usr/local/nginx# chown nginx.nginx run/  #修改run安装目录的所有者和所在



cd /usr/local/nginx/conf
ll
总计 76
...
-rw-r--r-- 1 nginx nginx 2656 12月  9 14:50 nginx.conf
...

vim nginx.conf
pid /usr/local/nginx/run/nginx.pid      #将pid那一行修改即可
:wq!


nginx -t       #检查配置文件的语法是否正确,出现下方英文即为正确
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful


vim /lib/systemd/system/nginx.service     
#输入内容:
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/run/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target


systemctl daemon-reload                  #使更改生效
systemctl restart nginx                  #重新启动

mysql数据库

csharp 复制代码
tar -xf mysql-8.0.30-el7-x86_64.tar.gz   #解压安装包
mv mysql-8.0.30-el7-x86_64 /usr/local/mysql
useradd -s /sbin/nologin mysql   #创建用户
chmod mysql.mysql -R /usr/local/mysql/   #设置所有者所在用户都为mysql

apt install -y libaio1 libncurses5   #安装环境

修改主配置文件my.cnf

my.cnf:mysql的主配置文件

csharp 复制代码
vim /etc/my.cnf
#添加
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION


chown mysql.mysql /etc/my.cnf
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile

对数据库进行初始化

csharp 复制代码
cd /mysql/bin
#命令行输入并回车
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data


cd /usr/local/mysql/support-files/
cp mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld   #使其变为可执行
systemctl daemon-reload
systemctl restart mysqld
netstat -antp | grep 3306   #查看端口是否启动
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      3764/mysqld         
tcp6       0      0 :::33060                :::*                    LISTEN      3764/mysqld         


mysqladmin -u root -p password "123456"   #修改 MySQL 数据库的 root 用户密码
Enter password:   #出现这段直接回车

mysql -u root -p123456  #进入root用户
mysql>             #正确进入会出现这个开头
mysql> create user 'root'@'%' identified by '123456';
mysql> grant all privileges on
*.* to 'root'@'%';
mysql> flush privileges;
mysql> alter user 'root'@'%'identified with mysql native password by '123456';
mysql> exit

php

php.ini:主配置文件

php-fpm.conf:进程服务端的配置文件

www.conf:扩展配置文件

php-fpm:是一个fastcgi的管理工具,nginx的动态请求实际上是由php-fpm来处理

csharp 复制代码
tar -xf php-8.1.27.tar.gz
#php的所有依赖环境
apt-get install -y libgd-dev libjpeg8-dev libpng-dev libfreetype6-dev libxml2-dev zlib1g-dev libcurl4-openssl-dev libssl-dev libonig-dev libsqlite3-dev

groupadd nobody  #创建nobody组
cd php-8.1.27
#命令行输入
./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-pdo-mysql \
--with-openssl \
--with-sqlite-devel \
--with-oniguruma-devel \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip

make -j 4 && make install

ln -s /usr/local/php/bin* /usr/local/bin/
ln -s /usr/local/php/sbin* /usr/local/sbin/

php.ini

csharp 复制代码
cp php.ini-development /usr/local/php/lib/php.ini
vim /usr/local/php/lib/php.ini
976行
date.timezone = Asia/Shanghai
1181行
mysqli.default socket =/usr/local/mysql/mysql.sock

php-fpm.conf

csharp 复制代码
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
17行
pid = /var/log/php-fpm.pid
24行
error_log = /var/log/php-fpm.log

www.conf

csharp 复制代码
cd /usr/local/php/etc/php-fpm.d
cp www.conf.default www.conf

启动

csharp 复制代码
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
netstat -antp | grep 9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      112970/php-fpm: mas 

cd /opt/php-8.1.27/sapi/fpm/
cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl restart php-fpm.service

discuz论坛

csharp 复制代码
cd /usr/local/nginx/conf/
cp  nginx.conf nginx.conf.bark.2024.12.9
vim nginx.conf
#修改location并添加location
location / {
            root   /var/www/html;
            index  index.html index.htm;
        }
        location ~ \.php$ {
        #localtion的正则匹配
                root  /var/www/html;
                fastcgi_pass 127.0.0.1:9000;
                #指定转发动态请求的地址
                fastcgi_index index.php;
                #指定处理动态请求的文件和后缀名
                fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
                #表示当前请求的脚本路径,$fastcgi_script_name/bbs/install/index.php
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                #$document root,nginx访问的默认的路径/var/www/html/bbs/install/index.php,变>量赋值,传给php
                include fastcgi_params;
                #使用include指令,把fastcgi_param的配置合并到一起
        }
csharp 复制代码
mysql -u root -p123456
#添加bbsuser用户
CREATE DATABASE bbs;
CREATE USER 'bbsuser'@'%' IDENTIFIED BY 'admin123';
GRANT ALL PRIVILEGES ON bbs.* TO 'bbsuser'@'%';
FLUSH PRIVILEGES;

CREATE USER 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
GRANT ALL PRIVILEGES ON bbs.* TO 'bbsuser'@'localhost';
FLUSH PRIVILEGES;


cd /usr/local/nginx/html/
vim index.php
<?php
$link=mysqli_connect('192.168.246.6','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

浏览器访问192.168.246.6/index.php

csharp 复制代码
unzip Discuz_X3.5_SC_UTF8.zip -d /opt/dis
cd dis/
cp -r upload/ /var/www/html/bbs
cd /var/www/html/
chmod 777 -R bbs/
chown nginx.nginx -R bbs/

192.168.246.6/bbs/index.php


nginx的优化

1. 隐藏版本号

csharp 复制代码
vim /usr/local/nginx/conf/nginx.conf
#在http中添加
server_token off;

通用方法编译,apt yum都可以使用,只是影藏版本,服务名称还在

修改源码文件:仅限于编译安装

csharp 复制代码
usr/src/core/nginx.h

2. nginx的日志分割

使用shell脚本实现日志分割

(nginx本身没有设计日志分割的工具,需要自己进行处理和分割。)

csharp 复制代码
#!/bin/bash
d=$(date +%Y-%m-%d)
#直接获取当前的日期

dir="/usr/local/nginx/logs"
#获取日志目录所在的位置

logs_access='/usr/local/nginx/logs/access.log'
logs_error='/usr/local/nginx/logs/error.log'
#定义需要分割的日志分件

pid_file='/usr/local/nginx/run/nginx.pid'
#定义pid分件的位置

if [ ! -d "$dir" ]
then
  mkdir -p $dir
fi

mv ${logs_access} ${dir}/access_${d}.log
#mv /usr/local/nginx/logs/access.log /usr/local/nginx/logs/access_2024-12-09.log
mv ${logs_error} ${dir}/error_${d}.log
#mv /usr/local/nginx/logs/error.log /usr/local/nginx/logs/error_2024-12-09.log

kill -USR1 $(cat ${pid_file})
#-USR1,通过发送USR1这个信号,给nginx的主进程,让nginx重新生成acces.log和error.log


#日志清理. 清理30天以前的日志
find $dir -mtime +30 -exec rm -rf {} \;
相关推荐
TracyGC3 分钟前
ubuntu 新建脚本shell并增加图标 双击应用实现python运行
linux·运维·ubuntu
怡雪~4 分钟前
k8s的Pod亲和性
linux·容器·kubernetes
清风 0015 分钟前
一、使用 mdadm 工具在 Ubuntu 上创建 RAID 1(镜像)
运维·服务器·数据库
白白白白白kkk7 分钟前
【Ubuntu】脚本自动化控制终端填充
linux·ubuntu·自动化
星河梦瑾11 分钟前
【2025最新版】搭建个人博客教程
linux·经验分享·笔记·python·安全
LCL_1834 分钟前
ansible 自动化运维工具(三)playbook剧本
linux·运维·自动化·ansible
lifeng432134 分钟前
Ansible自动化运维(三)playbook剧本详解
运维·自动化·ansible
无所不在的物质34 分钟前
ansible运维实战
运维·ansible
IOT.FIVE.NO.134 分钟前
Linux学习笔记15 何为HDD,SSD?sata?PCIE?分区,MBR,GPT分区的理解
linux·笔记·学习
Suckerbin35 分钟前
linux部署ansible自动化运维
linux·运维·ansible