CentOS Stream 9快速搭建LNMP环境
思韵闪耀
2023-12-22
0

操作系统:CentOS Stream 9 无界面最小化安装

SSH工具:WindTerm

权限:使用root登录或者有sudo权限

更新系统到最新

dnf update -y

源码编译安装 LNMP 环境虽然便于自定义,但是对于小型服务器来说,漫长的编译时间让人无法等待。如果能简单快速搞定环境安装,那就很好了。

1、配置yum源

CentOS Stream 9 的 默认 yum 源里的软件包版本可能不是最新的,如果要安装最新的软件包就得配置下 yum 源。

配置 yum 源可以通过直接安装 rpm (Red Hat Package Manager) 包,或者修改 Repository,本文讲解通过安装 rpm 方式。

1.1、安装epel源

首先需要安装 EPEL ( Extra Packages for Enterprise Linux ) yum 源,用以解决部分依赖包不存在的问题

yum -y install epel-release

1.2、安装MySQL源

https://dev.mysql.com/doc/mysql-repo-excerpt/8.0/en/linux-installation-yum-repo.html

rpm -Uvh https://repo.mysql.com//mysql80-community-release-el9-5.noarch.rpm

启用mysql源

dnf repolist enabled | grep "mysql.*-community.*"

查看可用的mysql源仓库

yum repolist all | grep mysql

如果需要启用和禁用对应的仓库,可以按以下操作

dnf config-manager --disable mysql57-community
dnf config-manager --enable mysql80-community
或者
dnf config-manager --set-disabled mysql80-community
dnf config-manager --set-enabled mysql80-community

手动创建mysql仓库

mysql57

vi /etc/yum.repos.d/mysql57.repo

在里面写如如下内容

[mysql57-community]
name=MySQL 5.7 Community Server
baseurl= http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
       file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

mysql80

vi /etc/yum.repos.d/mysql80.repo

在里面写如如下内容

# Enable to use MySQL 8.0
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl= http://repo.mysql.com/yum/mysql-8.0-community/el/9/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
       file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

通过rpm安装mysql repo已经导入 rpm-GPG-KEY,如果没有导入,按如下手动导入

https://dev.mysql.com/doc/refman/8.0/en/checking-gpg-signature.html

安装mysql 包前需要导入 rpm-GPG-KEY 文件,不然安装过程会出错。将 MySQL rpm-GPG-KEY 另存为 mysql_pubkey.asc 并导入

rpm --import mysql_pubkey.asc

导入后安装CentOS Stream 9 的 MySQL rpm 包

dnf install mysql-community-server mysql-community-client

1.3、安装PHP源

PHP 最新的 rpm 官方yum源包地址

http://rpms.remirepo.net/

导入源仓库

rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-9.rpm

手动导入 PHP rpm-GPG-KEY (remi),rpm安装源仓库已经自己导入rpm-GPG-KEY (remi),并且自动启动

rpm –import http://rpms.remirepo.net/rpm-GPG-KEY-remi

启用 PHP-7.0的yum源

1、修改 /etc/yum.repos.d/remi.repo,将 [remi] 和 [remi-test] 下面的 enabled=0 改为 enabled=1;

2、修改 /etc/yum.repos.d/remi-php70.repo,将 [remi-php70] 下面的 enabled=0 改为 enabled=1;

sed -i “/remi/mirror/{n;s/enabled=0/enabled=1/g}” /etc/yum.repos.d/remi.repo
sed -i “/test/mirror/{n;n;s/enabled=0/enabled=1/g}” /etc/yum.repos.d/remi.repo
sed -i “/php70/mirror/{n;s/enabled=0/enabled=1/g}” /etc/yum.repos.d/remi-php70.repo

安装 PHP80

dnf install php80

1.4、安装 Nginx 源

http://nginx.org/en/linux_packages.html

导入 Nginx rpm-GPG-KEY

rpm –import http://nginx.org/packages/keys/nginx_signing.key

安装 Nginx rpm 包

rpm -Uvh https://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

此包是centos7版本对应的分支源,CentOS Stream 9使用需要编辑下内容

vi /etc/yum.repos.d/nginx.repo
# nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/9/$basearch/
gpgcheck=0
enabled=1

手动配置yum源

vi /etc/yum.repos.d/nginx.repo

将以下内容写入,并保存

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/9/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/9/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

启用源

yum install yum-utils -y
yum-config-manager --enable nginx-mainline

到目前为止,yum 源已经安装好了 ,接着进行下一步的配置。

2、清除并重新生成 yum缓存使之生效:

yum clean all
yum makecache

3、安装 MySQL + PHP + Nginx + phpMyAdmin

yum 源已经配置好了,现在直接安装 MySQL + PHP + Nginx + phpMyAdmin

yum install -y mysql-community-server mysql-community-client nginx php80 php-common php-fpm php-gd php-intl php-mbstring php-mysqlnd php-opcache php-pdo php-pdo-dblib php-xml php-pecl-zip phpmyadmin

注:上面安装的 php-* 可以根据实际使用情况选择安装

4、修改MySQL + PHP + Nginx + phpMyAdmin的配置文件

安装完成后,进行下一步的环境配置。

MySQL 配置文件在 /etc/my.cnf.d/

PHP 配置文件在 /etc/php-fpm.d/

Nginx 配置文件在 /etc/nginx/

phpMyAdmin 的配置文件在 /etc/phpMyAdmin/

4.1、配置 MySQL

MySQL 配置文件保持默认,运行一次安全配置即可。

4.1.1、启动 MySQL

systemctl start mysqld.service

4.1.2、安全配置 MySQL

mysql初始密码

cat /var/log/mysqld.log

设置 root 密码、删除匿名用户、禁止 root 远程登录、删除 test 数据库、重新加载权限表,一路 Y 下去

mysql_secure_installation

4.2、配置 PHP

PHP 默认配置文件使用的是监听 9000 端口进行通信,针对小型单一、没有做负载均衡的服务器,可以使用 unix sock 方式通信。使用 unix sock 方式需要修改 PHP 配置文件。

#更换监听方式

listen = /dev/shm/php-fpm-default.sock

#监听队列最大长度为不限

listen.backlog = -1

#指定监听用户和用户组(需存在)

listen.owner = www
listen.group = www

启动 PHP-FPM:

systemctl start php-fpm.service

php-fpm如果没有开机启动

systemctl enable php-fpm.service

4.3、配置 Nginx

让服务器默认访问显示为 400 提示页。

新建名为 nginx-default.conf 的配置文件

touch /etc/nginx/conf.d/nginx-default.conf

编辑配置文件

vi /etc/nginx/conf.d/nginx-default.conf

#将以下信息输入到 nginx-default.conf

server{
    listen 80 default;
    return 400;}


防火墙放行 HTTP 端口访问:

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload


启动 Nginx

systemctl start nginx.service

这时,在浏览器地址栏输入当前服务器 IP 就会看到一个 400 的提示页面了。

nginx如果没有开机启动

systemctl enable nginx.service

4.4、绑定域名+站点目录+保存日志+运行 PHP的配置文件

server{

#监听80端口
listen 80;
#绑定域名 default.com 和 www.default.com
server_name default.com www.default.com;

#设置首页文件,越前优先级越高

index index.html index.htm index.php;

#设置网页编码

charset utf-8;

#设置站点根目录

    root  /home/wwwroot/default;

    #运行 PHP

    location ~ .*.php$    {
        默认使用9000端口和PHP通信
fastcgi_pass  127.0.0.1:9000
        #使用 unix sock 和PHP通信
#fastcgi_pass  unix:/dev/shm/php-fpm-default.sock;
        fastcgi_index index.php;
        PHP文档根目录
  fastcgi_param DOCUMENT_ROOT  /home/wwwroot/default;
        PHP 脚本目录
fastcgi_param SCRIPT_FILENAME  /home/wwwroot/default$fastcgi_script_name;
        include fastcgi_params;
        try_files $uri = 404;
    }
    设置文件过期时间
    location ~ .*.(gif|jpg|jpeg|png|bmp|swf|flv|mp3|wma)$    {
        expires      30d;
    }
    设置文件过期时间
    location ~ .*.(js|css)$    {
        expires      12h;
    }
    设置文件访问权限
    location ~* /templates(/.*).(bak|html|htm|ini|old|php|tpl)$ {
        allow 127.0.0.1;
        deny all;
    }
    设置文件访问权限
    location ~* .(ftpquota|htaccess|htpasswd|asp|aspx|jsp|asa|mdb)?$ {
        deny all;
    }
    #保存日志
    access_log /var/log/nginx/default-access.log main;
    error_log /var/log/nginx/default-error.log crit;}

完整的配置文件

server {
    listen       80;
    server_name  localhost;
    #access_log  /var/log/nginx/host.access.log  main;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    #error_page  404              /404.html;
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

4.5、配置 phpMyAdmin

vi etc/phpMyAdmin/config.inc.php

修改以下内容:

cfg[‘Servers’][i][‘host’] = ‘localhost’;cfg[‘Servers’][i][‘port’] = ‘3306’;cfg[‘Servers’][i][‘socket’] = ‘/var/lib/mysql/mysql.sock’;cfg[‘Servers’][i][‘connect_type’] = ‘socket’;cfg[‘Servers’][i][‘extension’] = ‘mysqli’;cfg[‘Servers’][i][‘auth_type’] = ‘cookie’;$cfg[‘UploadDir’] = ‘/tmp’;$cfg[‘SaveDir’] = ‘/tmp’;


如果Nginx使用的是上面的进阶代码,那么把 phpMyAdmin 的目录 复制到 /home/wwwroot/default/phpMyAdmin/ 下面,就可通过 http://default.com/phpMyAdmin 访问了

复制 phpMyAdmin 目录

cp -a /usr/share/phpMyAdmin /home/wwwroot/default/


替换连接形式为目录

rm -rf /home/wwwroot/default/phpMyAdmin/doc/html
cp -a /usr/share/doc/phpMyAdmin-*/html /home/wwwroot/default/phpMyAdmin/doc/


5、一键脚本

上面已经讲解了如何配置和安装,但是不能每次都这么一步一步来吧?为了节省时间,写了一个一键安装管理脚本,可选择安装 Nginx 1.8/1.9、 MySQL 5.5/5.6/5.7 和 PHP 5.5/5.6/7.0

安装

yum install -y unzip
wget https://github.com/maicong/LNMP/archive/master.zip 
unzip master.zip
cd LNMP-master
bash lnmp.sh


输出到指定文件

bash lnmp.sh 2>&1 | tee lnmp.log

管理站点

service vhost (start,stop,list,add,edit,del,exit)

start 启动

stop 停止

list 列出

add 添加

edit 编辑

del 删除

exit 什么都不做

: 配置名称,例如:domain

: 域名列表,例如:domain.com,www.domain.com

: 首页文件,例如:index.html,index.htm,index.php

: 伪静态规则文件,保存在 /etc/nginx/rewrite/ 例如:nomal.conf

: 是否支持子目录绑定,on 或者 off

示例:

添加一个标识为 domain 的站点

service vhost add domain domain.com,www.domain.com index.html,index.htm,index.php nomal.conf on

启动标识为 domain 的站点

service vhost start domain

停止标识为 domain 的站点

service vhost stop domain

编辑标识为 domain 的站点

service vhost edit domain

删除标识为 domain 的站点

service vhost del domain

列出所有站点

service vhost list

备份数据

service vbackup (start,list,del)

start 添加

list 列出

del 删除

示例:

添加一个新的备份

service vbackup start

列出备份文件

service vbackup list

删除一个备份

service vbackup del name.tar.gz


【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

相关内容

热门资讯

SIOCADDRT: Netw... SIOCADDRT: Network is unreachable SIOCADDRT: 网络不可达...
centos7下创建新用户和组 linux下添加,删除,修改,查看用户和用户组 1 .增加一个test组 groupadd test...
linux通过sed 修改文件... 13sy.txt里面内容如下 A; B; C; write by luohao199621; 1.要...
关于cannot remove... 关于cannot remove directory: Directory not empty的解决办...
mount: unknown ... mount: unknown filesystem type LVM2_member解决方案 系统启...
OpenMediaVault安... OpenMediaVault 是一个基于Debian的专用 Linux 发行版,用于构建网络连接存储...
centos7 双网卡双网关的... 最近公司需要在一台服务器上同时使用内网和外网,并且都需要跨网段访问,因此需要双网关,但是一台机子上只...
ethtool 命令详解 1 概述 ethtool 是用于查询及设置网卡参数的命令。 2 命令详解 2.1 命令格式 (1) ...
CentOS7单网卡设置双IP... linux系统CentOS7单网卡设置双IP的方法,centos7.5、7.6、7.7设置双IP教程...
Linux进程状态D,S,Z的... Linux进程状态top,ps中看到进程状态D,S,Z的含义 在top和ps命令中有一列显示进程状态...