声明:本文是个人学习中的操作记录,仅供参考。生产环境请慎重,如在生产环境使用出现问题与本人无关。
准备工作
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
如果出错注意检查目录权限问题