CentOs 系统最小安装&LNMP环境搭建
nanshan 2024-10-09 12:57 29 浏览 0 评论
最近在家看孩子的空隙,在自己一台老旧的DELL电脑上安装了cent os7作为平常的开发服务器,废话不多说,下面开始正文:
一、首先准备下载系统镜像:CentOs7(因为我的电脑是64的所以镜像也是64的)
百度网盘下载链接:
https://pan.baidu.com/s/1gFalaeQD7ZDH2s1UO_YYIw?pwd=fo05
二、制作U盘系统盘
下载好CentOS7的系统镜像了,我们需要一个系统启动盘。
这里用到了一个工具:UltraISo.
因为是教学使用所以时间选择试用就好
注:请勿用于商用,如有版权纠纷,与博主无关,
三、使用U盘安装CentOS7系统
1、 插入刚刚制作的系统U盘进入BIOS,更改U盘为第一启动项。f10保存并重启。
2、 进入centos安装界面。不用管有几个选项,选中第一个 按 回车键
3、 进入图形界面如果不出现报错就是成功了,可以正常安装操作系统了。
4. 安装之后重启后关机移除U盘在开机即可正常使用。
四、开始搭建LNMP环境
因为是笔记本改的服务器一直都不会关机,这时候需要:合上笔记本盖子(显示屏关闭),但是SSH远程在操作此机器,则希望合盖不睡眠(包括网络正常使用)
编辑下列文件:/etc/systemd/logind.conf
#HandlePowerKey按下电源键后的行为,默认power off
#HandleSleepKey 按下挂起键后的行为,默认suspend
#HandleHibernateKey按下休眠键后的行为,默认hibernate
#HandleLidSwitch合上笔记本盖后的行为,默认suspend(改为lock;即合盖不休眠)在原文件中,还要去掉前面的#
运行:systemctl restart systemd-logind就会生效.
一、准备资源(源码安装)
nginx 源:https://nginx.org/download/
mysql 源:http://tel.mirrors.163.com/mysql/Downloads/
php 源:https://www.php.net/releases/
二、安装nginx
1.下载Nginx
cd /home/application/tools
wget http://nginx.org/download/nginx-1.20.0.tar.gz
tar xf nginx-1.20.0.tar.gz
2.安装Nginx依赖
pcre-devel 让nginx拥有正则的能力,rewrite等都需要正则匹配
openssl-devel 让nginx拥有开启https的能力。
yum install -y pcre-devel openssl-devel
3.创建Nginx管理用户
useradd -s /sbin/nologin -M nginx
4.编译配置Nginx
–prefix=/application/nginx-1.14.0 置编译安装目录
–user=nginx 配置nginx的管理用户为nginx用户
–group=nginx 配置nginx的管理组为nginx组
–with-http_stub_status_module 配置使用Nginx的监控模块
–with-http_ssl_module 配置应用认证模块(https需要此模块,需要openssl-devel依赖
cd /home/application/tools/nginx-1.20.0
./configure --prefix=/application/nginx-1.14.0 --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
5.编译安装Nginx
make && make install
6.为Nginx安装目录创建软链接(方便以后管理)
ln -s /home/application/nginx-1.20.0/ /home/application/nginx
7.为Nginx命令创建软链接加进root环境变量(方便使用)
ln -s /home/application/nginx/sbin/nginx /sbin/
8.精简化Nginx配置文件
sed -i "/^$/d;/#/d" /home/application/nginx/conf/nginx.conf
9.添加systemctl启动脚本
cat > /usr/lib/systemd/system/nginx.service << EOF
[Unit]
Description=nginx
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStartPre=/application/nginx/sbin/nginx -t -c /application/nginx/conf/nginx.conf
ExecStart=/application/nginx/sbin/nginx -c /application/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
10.启动Nginx 并且 查看Nginx进程
nginx或者systemctl start nginx
ps -ef | grep nginx
11.测试Nginx服务端口(80)
ss -lnt | grep 80
12.curl测试Nginx首页(有看到Welcome to nginx!就是成功了)
curl -s 本机IP
13.把Nginx添加到启动项(在末尾添加以下命令:#开机启动Nginx nginx)
cd /etc/rc.d && chmod +x rc.local && vim rc.local
14.重新加载nginx配置
nginx -s reload
三、安装MYSQL
1.安装MySQL依赖环境
ncurses-devel提供字符终端处理库
libaio-devel包的作用是为了支持同步I/O
yum install -y bison-devel ncurses-devel libaio-devel gcc gcc-c++ automake autoconf numactl
2.删除mariadb组件
rpm -qa | grep mariadb
[结果1]
[结果2]
……
yum remove [结果1] [结果2] ……
3.下载MySQL
cd /home/application/tools
wget http://tel.mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
4.解压MySQL5.7
tar xf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz -C /home/application
mv /home/application/mysql-5.7.38-linux-glibc2.12-x86_64 /home/application/mysql-5.7.38
ln -s /home/application/mysql-5.7.38/ /home/application/mysql
5.创建管理用户&&授权
useradd -s /sbin/nologin -M mysql
chown -R mysql.mysql /home/application/mysql-5.7.38/
6.创建目录和文件并且分配属主和属组
mkdir -p /data/mysql/{data,logs}
touch /data/mysql/logs/{mysql-error.log,mysql-slow.log}
chown -R mysql.mysql /data/mysql
mkdir /var/run/mysql
chown -R mysql.mysql /var/run/mysql
7.初始化数据库
–initialize-insecure选项参数可以不自动生成初始root密码。
/home/application/mysql/bin/mysqld --initialize-insecure --basedir=/home/application/mysql/ --datadir=/data/mysql/data --user=mysql
8.复制脚本及PATH变量赋值
cp /home/application/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 700 /etc/init.d/mysqld
echo 'PATH=$PATH:/home/application/mysql/bin' >> /etc/profile
source /etc/profile
9.编辑配置文件
vim /etc/my.cnf
[mysql]
# CLIENT #
port = 3306
socket = /tmp/mysql.sock
[mysqld]
# GENERAL #
user = mysql
default-storage-engine = InnoDB
socket = /tmp/mysql.sock
pid-file = /var/run/mysql/mysql.pid
basedir = /home/application/mysql
server-id = 1
port = 3306
default-time-zone = '+08:00'
# MyISAM #
key-buffer-size = 32M
myisam-recover-options = FORCE,BACKUP
# SAFETY #
max-allowed-packet = 16M
max-connect-errors = 1000000
skip-name-resolve
#sql-mode = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_VALUE_ON_ZERO
sql-mode = ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_VALUE_ON_ZERO
sysdate-is-now = 1
innodb = FORCE
secure-file-priv = ''
# DATA STORAGE #
datadir = /data/mysql/data/
# BINARY LOGGING #
log-bin = /data/mysql/data/mysql-bin
expire-logs-days = 14
binlog-format = mixed
sync-binlog = 1
#GTID:
gtid-mode = on
enforce-gtid-consistency = on
# CACHES AND LIMITS #
tmp-table-size = 32M
max-heap-table-size = 32M
query-cache-type = 0
query-cache-size = 0
max-connections = 500
thread-cache-size = 50
open-files-limit = 65535
table-definition-cache = 1024
table-open-cache = 200
# INNODB #
innodb-flush-method = O_DIRECT
innodb-log-files-in-group = 2
innodb-log-file-size = 256M
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table = 1
innodb-buffer-pool-size = 8G
# LOGGING #
log-error = /data/mysql/logs/mysql-error.log
log-queries-not-using-indexes = 1
slow-query-log = 1
slow-query-log-file = /data/mysql/logs/mysql-slow.log
10.启动MySQL
/etc/init.d/mysqld start
11.初始化root密码
mysql_secure_installation
==========================================================================
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: n
New password: <==此处输入新密码(如果低于八位数密码,稍后会有系统提示)
Re-enter new password: <==此处重复输入新密码
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.
All done!
12.把MySQL添加进启动项
cd /etc/rc.d && chmod +x rc.local && vim rc.local
#开机启动mysql
mkdir -p /var/run/mysql
chown -R mysql.mysql /var/run/mysql
/etc/init.d/mysqld start
14.重启MySQL
/etc/init.d/mysqld restart
四、安装PHP
1.预先安装必要的依赖
yum install -y wget gcc gcc-c++ autoconf automake libtool make libxml2 libxml2-devel openssl openssl-devel sqlite-devel libcurl
2.下载解压PHP
cd /home/application/tools
wget wget https://www.php.net/distributions/php-8.1.11.tar.gz
tar xf php-8.1.11.tar.gz -C /home/application
3.编译配置php
./configure --prefix=/home/application/php-8.1.11 --with-config-file-path=/home/application/php-8.1.11/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd-compression-support --with-zlib --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --with-curl --enable-mbregex --enable-mbstring --enable-intl --enable-ftp --enable-gd-jis-conv --with-openssl --with-mhash --enable-pcntl --enable-sockets --enable-soap --with-gettext --enable-fileinfo --enable-opcache --with-pear --with-ldap=shared --without-gdbm
编译报错处理
错误1
checking for libcurl >= 7.29.0... no
configure: error: Package requirements (libcurl >= 7.29.0) were not met:
No package 'libcurl' found
解决方案
yum search libcurl
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.ustc.edu.cn
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
======== N/S matched: libcurl =============
libcurl-devel.i686 : Files needed for building applications with libcurl
libcurl-devel.x86_64 : Files needed for building applications with libcurl
libcurl.i686 : A library for getting files from web servers
libcurl.x86_64 : A library for getting files from web servers
perl-WWW-Curl.x86_64 : Perl extension interface for libcurl
python-pycurl.x86_64 : A Python interface to libcurl
发现 libcurl-devel.x86_64 库需要安装。
yum install -y libcurl-devel.x86_64
错误2
checking for icu-uc >= 50.1 icu-io icu-i18n... no
configure: error: Package requirements (icu-uc >= 50.1 icu-io icu-i18n) were not met:
No package 'icu-uc' found
No package 'icu-io' found
No package 'icu-i18n' found
解决方案
yum -y install libicu-devel
错误3
configure: error: Cannot find ldap.h
解决方案
yum install openldap openldap-devel -y
错误4
configure: error: Cannot find ldap libraries in /usr/lib.
解决方案
cp -frp /usr/lib64/libldap* /usr/lib/
错误5
configure: error: Package requirements (oniguruma) were not met:
解决方案
yum install https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-6.9.8-1.el7.remi.x86_64.rpm
yum install https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-devel-6.9.8-1.el7.remi.x86_64.rpm
4.安装php
make && make install
5.创建软链接(方便以后管理)
ln -s /home/application/php-8.1.11/bin/php /usr/local/bin/php
6.测试
php -v
PHP 8.1.11 (cli) (built: Nov 7 2022 15:35:02) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.11, Copyright (c) Zend Technologies
7.修改配置文件
# 源码包 php-8.0.24
cp /home/application/php-8.1.11/php.ini-production /home/application/php-8.1.11/etc
cd /home/application/php-8.1.11/etc
cp php.ini-production php.ini
cd /home/application/php-8.1.11/etc
cp php-fpm.conf.default php-fpm.conf
cd /home/application/php-8.1.11/php-fpm.d
cp www.conf.default www.conf
# 修改www.conf文件
# 监听方式为sock
;listen = 127.0.0.1:9000
listen = /tmp/www.sock
8.开机自启
# 源码包 php-8.1.11/sapi/fpm
cp /home/application/php-8.1.11/sapi/fpm/php-fpm.service /usr/lib/systemd/system/php-fpm-8.1.11.service
server {
listen 80;
server_name www.paul.test;
root /home/web/wwwroot;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/tmp/www.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
9.启动php-fpm
cp /home/application/php-8.1.11/sapi/fpm/php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
php-fpm的启动参数
#测试php-fpm配置/etc/init.d/php-fpm -t
/etc/init.d/php-fpm -c /home/application/php-8.1.11/etc/php.ini -y /home/application/php-8.1.11/etc/php-fpm.conf -t
#启动php-fpm /etc/init.d/php-fpm
/etc/init.d/php-fpm -c /home/application/php-8.1.11/etc/php.ini -y /home/application/php-8.1.11/etc/php-fpm.conf
五、系统部署
1. 在系统部署之前,务必使系统时间、MySQL时间、php时间与当地时间保持一致,即时区一致,比如都是东八区。
2. 防火墙
查看防火墙是否开启
firewall-cmd --state
如果没有 安装:yum install -y firewalld
启动:systemctl start firewalld
设置开机自启动:systemctl enable firewalld
这里通过开放一下httpd和php80的端口
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
重新加载防火墙
firewall-cmd --reload
六、验证
vim <网站根目录>/phpinfo.php
按i进入编辑模式输入<?php echo phpinfo(); ?>
按Esc键后,输入:wq并回车,保存关闭文件
在本地Windows主机(同局域网),打开浏览器。
在浏览器的地址栏输入http://新安装的CentOSIP地址/phpinfo.php进行访问。
访问结果如下图所示,表示LNMP环境部署成功。
到这里CentOS7 和 LNMP服务已经基本搭建完毕了!!!
后面会持续更新各服务的自动启动相关脚本 谢谢!!!
感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助!
相关推荐
- 轻量级分析利器再升级:解读 DuckDB 1.3.0 新特性
-
DuckDB团队近日正式发布了最新版本——DuckDB1.3.0,代号“Ossivalis”。此次版本以金眼鸭的远古祖先BucephalaOssivalis命名,象征项目在演化和成长过...
- C++跨平台编译的终极奥义:用Docker把环境差异按在地上摩擦
-
"代码在本地跑得飞起,一上服务器就coredump?"——每个C++程序员都经历过的《编译器的复仇》事件!大家好,我是Henry,废话少说,今天来简单谈一下跨平台编译的那些事儿,...
- 全网最全-Version Script以及__asm__((".symver xxx"))使用总结
-
首先提醒一点,一切的前提建立在你的名字必须要mangling,不然无论你写的versionscript还是__asm__都不会起任何效果VersionScript简单用法:这是一个典型例子,这个例...
- Ubuntu 25.04 Beta发布:Linux 6.14内核
-
IT之家3月28日消息,Canonical昨日(3月27日)放出了Beta版Ubuntu25.04系统镜像,代号“PluckyPuffin”,稳定版预估将于2025年...
- 不同平台CRT的区别?什么是UCRT?如何看libc源代码?
-
若文章对您有帮助,欢迎关注程序员小迷。助您在编程路上越走越好!CRT运行时库C标准规定例如输入输出函数、字符串函数、内存操作等接口,一般采用C运行时库实现。微软的CRT微软有两套CRT,早期的MS...
- 信创力量,中兴绽放——中兴新支点桌面操作系统安装与使用全攻略
-
原文链接:「链接」Hello,大家好啊,今天给大家带来一篇中兴新支点桌面操作系统安装使用的文章,欢迎大家分享点赞,点个在看和关注吧!中兴新支点桌面操作系统是一款基于Linux内核、面向政企和信创环...
- Linux下安装常用软件都有哪些?做了一个汇总列表,你看还缺啥?
-
1.安装列表MySQL5.7.11Java1.8ApacheMaven3.6+tomcat8.5gitRedisNginxpythondocker2.安装mysql1.拷贝mysql安装文件到...
- 一篇文章解决Linux系统安全问题排查,另配实操环境
-
实操地址:https://www.skillup.host/1/linux/safe/command.md#Linux安全检查排查指南##1.系统账户安全检查###1.1检查异常账户``...
- 程序员必备的学习笔记《TCP/IP详解(一)》
-
为什么会有TCP/IP协议在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样...
- 《Linux常用命令》(linux的常用命令总结)
-
一、文件与目录操作1.目录导航pwd:显示当前工作目录路径示例:pwd关键词:当前路径、工作目录cd:切换目录示例:cd/home/user#切换到绝对路径cd..#...
- Kubernetes 教程之跟着官方文档从零搭建 K8S
-
前言本文将带领读者一起,参照者Kubernetes官方文档,对其安装部署进行讲解.Kubernetes更新迭代很快,书上、网上等教程可能并不能适用于新版本,但官方文档能.阅读这篇文章你...
- 电脑网卡坏了怎么修复(电脑网卡坏了怎么修复win7系统)
-
当电脑网卡出现故障时,无论是有线网络还是无线网络,都可能无法正常连接。下面从软件、硬件等方面,分步骤为你介绍排查与修复的解决方案。一、初步排查:锁定问题源头检查网络环境将手机、平板等其他设备连接至同一...
- 如何查询电脑/手机的物理地址(如何找手机的物理地址)
-
一、要查询电脑的物理地址(也称为MAC地址),可以按照以下步骤进行操作:1.打开命令提示符(Windows)或终端(Mac):-在Windows上,点击“开始”按钮,搜索“命令提示符”,然后点击打...
- IPv4 无网络访问权限全流程解决方案
-
当设备出现IPv4无网络访问权限问题时,多由网络配置错误、连接故障或服务异常导致。以下提供系统化的排查步骤与解决方案,帮助用户快速定位并修复问题。一、基础故障快速检查1.物理连接确认有线网络:检...
- Python教程(十九):文件操作(python操作文件夹)
-
昨天,我们学习了列表推导式,掌握了Python中最优雅的数据处理方式。今天,我们将学习文件操作—Python中读写文件的基础技能。文件操作是编程中的核心技能,无论是读取配置文件、保存用户数据,还是...
你 发表评论:
欢迎- 一周热门
-
-
UOS服务器操作系统防火墙设置(uos20关闭防火墙)
-
极空间如何无损移机,新Z4 Pro又有哪些升级?极空间Z4 Pro深度体验
-
手机如何设置与显示准确时间的详细指南
-
NAS:DS video/DS file/DS photo等群晖移动端APP远程访问的教程
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
如何修复用户配置文件服务在 WINDOWS 上登录失败的问题
-
一加手机与电脑互传文件的便捷方法FileDash
-
日本海上自卫队的军衔制度(日本海上自卫队的军衔制度是什么)
-
10个免费文件中转服务站,分享文件简单方便,你知道几个?
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
- 最近发表
-
- 轻量级分析利器再升级:解读 DuckDB 1.3.0 新特性
- C++跨平台编译的终极奥义:用Docker把环境差异按在地上摩擦
- 全网最全-Version Script以及__asm__((".symver xxx"))使用总结
- Ubuntu 25.04 Beta发布:Linux 6.14内核
- 不同平台CRT的区别?什么是UCRT?如何看libc源代码?
- 信创力量,中兴绽放——中兴新支点桌面操作系统安装与使用全攻略
- Linux下安装常用软件都有哪些?做了一个汇总列表,你看还缺啥?
- 一篇文章解决Linux系统安全问题排查,另配实操环境
- 程序员必备的学习笔记《TCP/IP详解(一)》
- 《Linux常用命令》(linux的常用命令总结)
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)