实战——Centos7从最小化安装到搭建LNMP架构,PHP安装Redis扩展和编译Redis

声明:本文是个人学习中的操作记录,仅供参考。生产环境请慎重,如在生产环境使用出现问题与本人无关。


准备工作

1.最小化安装的centos7
2.nginx-1.20.0.tar.gz 源码包
3.php-7.3.7.tar.bz2 源码包
4.phpredis-5.3.4.tar.gz 源码包
5.mysql-8.0.16-el7-x86_64.tar.gz 注:mysql编译比较麻烦这里直接用二进制包
6.redis-6.2.3.tar.gz 源码包

处理系统环境


处理root密码

由于最小化安装是很遥远的事,还原快照后忘记了root密码,所以先从改root密码开始

1.开机,在启动菜单那按e编辑菜单
2.找到linux16开头那一行,在后面加上rw init=/sysroot/bin/sh然后按CTRL+X
3.进去之后chroot /sysroot改变根目录然后重设密码
4.由于我以前安装默认开启了SELINUX,要让他重新打标签,执行 > /.autorelabel
5.重启

配置网络

可以直接使用DHCP,不过我还是自己配置IP以免出现变动

打开网络配置,由于最小化还没有vim所以先用vi
vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改配置如果没有就添加
ONBOOT="yes"
IPADDR="192.168.1.10"
PREFIX="24"
GATEWAY="192.168.1.1"
DNS1="192.168.1.1"

重启网络服务
systemctl restart network

配置yum

在配置之前,先设置光盘挂载

创建要挂载到的目录
mkdir /mnt

编辑fstab
vi /etc/fstab

新增一项
/dev/sr0		/mnt		iso9660 defaults        0 0
保存后重启查看/mnt是否已经挂载上了

开始配置yum

打开/etc/yum.repos.d目录,新建一个文件夹,把里面所有文件移进去备份

开始写自己的配置
vi base.repo

[base]
name=mybase
baseurl=file:///mnt
gpgcheck=0

保存后清空yum缓存
yum clean all

然后输出列表看是否配置完成
yum list

安装常用工具
yum install -y vim tree ntdate lrzsz

安装epel
yum install -y epel

系统环境配置完毕。

Mysql8.0二进制包配置

1.新建目录
mkdir /app

2.把二进制包上传到app目录

3.解压文件
tar -xvf mysql-8.0.16-el7-x86_64.tar.gz

5.改文件夹名称
mv mysql-8.0.16-el7-x86_64 mysql-8

6.创建mysql用户
useradd -r -s /sbin/nologin mysql

7.创建目录软连接
ln -s /app/mysql-8 /usr/local/mysql

8.复制启动脚本
cp /app/mysql-8/support-files/mysql.server /etc/init.d/mysqld

9.创建数据储存目录
mkdir -p /data/mysql/{data,log,tmp}

10.修改目录权限
chown -R mysql:mysql /data/mysql
chmod 750 /data/mysql
chown -R mysql:mysql /app/mysql-8
chmod 750 /app/mysql-8

11.创建环境变量文件和软链接
echo "export PATH=/app/mysql-8/bin:\$PATH" > /etc/profile.d/mysql.sh
执行一下
. /etc/profile.d/mysql.sh

创建软链接
ln -sv /usr/local/mysql/include /usr/include/mysql

12.写入配置文件
echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf

cat > /etc/my.cnf <<EOF
!includedir /etc/my.cnf.d
EOF

cat > /etc/my.cnf.d/mysql-clients.cnf <<EOF
[mysql]
prompt="\u@\h \R:\m:\s [\d]> "
port = 3306
socket = /app/mysql-8/my.sock
default-character-set = utf8mb4
max_allowed_packet = 12M
EOF

cat > /etc/my.cnf.d/mysql-server.cnf <<EOF
[mysqld]
skip-grant-tables
innodb_file_per_table
port = 3306
#bind-address=
user=mysql
socket = /app/mysql-8/my.sock
pid_file = /app/mysql-8/my.pid
basedir = /app/mysql-8
datadir = /data/mysql/data
tmpdir = /data/mysql/tmp
character-set-server = utf8mb4
max_connections = 1000
slow_query_log = ON
slow_query_log_file = /data/mysql/log/slow.log
log_error = /data/mysql/log/error.log
log_bin = /data/mysql/log/binlog.log
log_bin_index = /data/mysql/log/binlog.index
binlog_format = row
binlog_expire_logs_seconds = 864000
max_binlog_size = 50M
binlog_cache_size = 2M
log_slave_updates = ON
[mysql_safe]
user=mysql
EOF

13.初始化数据库
bin/mysqld --initialize --user=mysql

14.配置服务,设置自启动
systemctl daemon-reload
chkconfig --add mysqld
chkconfig --level 2345 mysqld on
systemctl start mysqld

15.清空mysql中root口令
mysql -e "update mysql.user set authentication_string='' where user = 'root'; "

16.屏蔽跳密码选项后重启
sed -r -i 's/^(skip.*)$/#\1/' /etc/my.cnf.d/mysql-server.cnf && systemctl restart mysqld

mysql配置完毕
如要修改密码可使用

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';

修改后需要执行命令
FLUSH PRIVILEGES;

编译安装nginx

1.上传源码包解压
tar -xvf nginx-1.20.0.tar.gz

2.安装相关包组
yum install gcc pcre-devel openssl-devel zlib-devel -y

3.创建用户
useradd -r -s /sbin/nologin nginx

4.配置编译
./configure --prefix=/app/nginx \
--conf-path=/app/nginx/nginx.conf \
--error-log-path=/app/nginx/logs/error.log \
--http-log-path=/app/nginx/logs/access.log \
--pid-path=/app/nginx/run/nginx.pid \
--lock-path=/app/nginx/run/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_dav_module \
--with-http_stub_status_module \
--with-threads \
--with-file-aio &&make -j 2 && make install

5.创建软链接
ln -s /app/nginx/sbin/nginx /usr/bin/nginx

6.修改配置文件
vim /app/nginx/nginx.conf

user  nginx;
worker_processes  1;
error_log  /app/nginx/logs/error.log;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
	#error_page  404              /404.html;
	error_page   500 502 503 504  /50x.html;
		
	server {
		listen       80;
		server_name  www.test.com;
		root   /data/html/;
		location / {
			index  index.html index.htm index.php;
		}
		location ~ \.php$ {
			fastcgi_pass   127.0.0.1:9000;
			fastcgi_index  index.php;
			fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
			include        fastcgi_params;
		}
}

7.创建网页目录
mkdir /data/html
echot "Is work" > /data/html/index.html

8.修改权限
chown -R nginx.nginx /data/html

9.配置启动脚本设置开机启动
vim /usr/lib/systemd/system/nginx.service

[Unit]
Description=nginx service
After=network.target

[Service]
Type=forking
ExecStart=/app/nginx/sbin/nginx
ExecReload=/app/nginx/sbin/nginx -s reload
ExecStop=/app/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

systemctl enable nginx.service

10.防火墙开放80端口
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload 

nginx搭建完毕

编译安装php

源码上传和解压不再重复叙述

1.安装相关包组
yum -y groupinstall "Development Tools"
yum -y install bzip2-devel libxml2-devel libmcrypt-devel

2.配置与编译
./configure --prefix=/app/php \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-openssl \
--with-pdo-mysql=mysqlnd \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--enable-sockets \
--enable-fpm  \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--enable-maintainer-zts \
--disable-fileinfo && make -j 2 && make install

3.复制配置文件
cp php.ini-production /etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
cp /app/php/etc/php-fpm.conf.default /app/php/etc/php-fpm.conf
cp /app/php/etc/php-fpm.d/www.conf.default /app/php/etc/php-fpm.d/www.conf

4.修改启动用户为nginx
vim /app/php/etc/php-fpm.d/www.conf
找到
user = nginx
group = nginx

5.添加执行权限和开机启动
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on

启动服务
systemctl start php-fpm

6.编写测试页面

vim /data/html/test.php

<?php
phpinfo();
?>

7.确认目录文件权限是nginx
chown -R nginx.nginx /data/html
chown -R nginx.nginx /app/php

php fastcgi搭建完毕

PHP安装Redis扩展

编译redis扩展需要用到PHP的工具,通常在PHP的bin目录中,跟着上面安装下来的就在/app/php/bin

1.解压源码后进入目录,使用phpize生成configure文件
cd phpredis-5.3.4

在目录中运行命令
/app/php/bin/phpize

2.使用php-config进行配置
./configure --with-php-config=/app/php/bin/php-config

3.编译安装
make -j 2 && make install

安装完毕会提示一个文件路径
/app/php/lib/php/extensions/no-debug-zts-20180731

4.编辑配置文件
vim /etc/php.ini
extension_dir = "/app/php/lib/php/extensions/no-debug-zts-20180731"
extension = "redis.so"

保存后重启重启php-fpm,在刚才的test.php搜索到redis就是配置完成了

编译安装Redis

同样先解压源码包

由于自带的gcc版本太低,无法编译,需要先升级gcc
1.安装相关包
yum install -y centos-release-scl systemd-devel

2.安装gcc9,如果源里没有可以试试8或者7,改命令的数字即可
yum install -y devtoolset-9-gcc*

3.使用命令切换gcc版本
source /opt/rh/devtoolset-9/enable

把命令写入配置可设置自动切换
echo "source /opt/rh/devtoolset-9/enable" >> /etc/rc.local

4.进入redis源码包目录执行编译安装
make PREFIX=/app/redis USE_SYSTEMD=yes install

5.创建目录复制配置文件
mkdir -pv /app/redis/{etc,logs,data,run}
cp redis.conf /app/redis/etc/

6.创建用户
useradd redis -s /sbin/nologin

7.修改权限
chown -R redis.redis /app/redis

8.修改内核参数
vim /etc/sysctl.conf

net.core.somaxconn = 512
vm.overcommit_memory = 1

9.开启大页内存动态分配
vim /etc/rc.local
echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled

10.编辑启动脚本
vim /usr/lib/systemd/system/redis.service

[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/app/redis/bin/redis-server /app/redis/etc/redis.conf --supervised systemd
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target

配置完毕可以启动了
systemctl start redis

设置开机自启动
systemctl enable redis
如果出错注意检查目录权限问题
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值