本脚本基于mysql-5.6.48版本数据库,只需要提前准备好mysql-5.6.48-linux-glibc2.12-x86_64.tar.gz的安装包即可。
其他几项使用wget的包可以提前进行下载,然后再把本脚本中的wget注释掉即可。
(本脚本算是一个LAMP架构的总结,全部都是原命令)
#!/bin/bash install_httpd(){ yum -y install gcc make pcre-devel openssl-devel expat-devel wget bzip2 wget https://downloads.apache.org//apr/apr-1.7.0.tar.bz2 wget https://downloads.apache.org//apr/apr-util-1.6.1.tar.bz2 wget https://downloads.apache.org//httpd/httpd-2.4.46.tar.bz2 tar xvf apr-1.7.0.tar.bz2 tar xvf apr-util-1.6.1.tar.bz2 tar xvf httpd-2.4.46.tar.bz2 mv apr-1.7.0 httpd-2.4.46/srclib/apr mv apr-util-1.6.1 httpd-2.4.46/srclib/apr-util cd httpd-2.4.46/ ./configure --prefix=/apps/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork make && make install useradd -s /sbin/nologin -r apache sed -ri ‘s#(.*) daemon$#\1 apache#g‘ /apps/httpd/conf/httpd.conf ln -s /apps/httpd/bin* /usr/bin/ echo "MANDATORY_MANPATH /apps/httpd/man" >> /etc/man_db.conf cat > /usr/lib/systemd/system/httpd.service << EOF [Unit] Description=The Apache HTTP Server After=network.target remote-fs.target nss-lookup.target Documentation=man:httpd(8) Documentation=man:apachectl(8) [Service] Type=forking #EnvironmentFile=/etc/sysconfig/httpd ExecStart=/apps/httpd/bin/apachectl start #ExecStart=/apps/httpd24/bin/httpd $OPTIONS -k start ExecReload=/apps/httpd/bin/apachectl graceful #ExecReload=/apps/httpd24/bin/httpd $OPTIONS -k graceful ExecStop=/apps/httpd/bin/apachectl stop KillSignal=SIGCONT PrivateTmp=true [Install] WantedBy=multi-user.target EOF sed -ir -e ‘s/^#LoadModule proxy_module modules\/mod_proxy.so/LoadModule proxy_module modules\/mod_proxy.so/‘ -e ‘s/^\#LoadModule proxy_fcgi_module modules\/mod_proxy_fcgi.so/LoadModule proxy_fcgi_module modules\/mod_proxy_fcgi.so/‘ -e ‘s/DirectoryIndex.*/DirectoryIndex index.php index.html/‘ /apps/httpd/conf/httpd.conf echo "AddType application/x-httpd-php .php" >> /apps/httpd/conf/httpd.conf cat >> /apps/httpd/conf/httpd.conf <<EOF <virtualhost *:80> servername blog.magedu.org documentroot /data/wordpress <directory /data/wordpress> require all granted </directory> ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/wordpress/$1 ProxyPassMatch ^/(pm_status|ping)$ fcgi://127.0.0.1:9000/$1 CustomLog "logs/access_wordpress_log" common </virtualhost> EOF systemctl daemon-reload systemctl enable --now httpd cd /root } install_mysqld(){ groupadd -r -g 306 mysql useradd -r -g 306 -u 306 -d /data/mysql mysql echo "开始安装依赖包......" yum -y install libaio perl-Data-Dumper &>/dev/null mkdir /data/mysql && chown -R mysql.mysql /data/mysql echo "开始解压mysql-5.6.48-linux......" tar xf mysql-5.6.48-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ echo "解压完成" ln -s /usr/local/mysql-5.6.48-linux-glibc2.12-x86_64 /usr/local/mysql chown -R mysql.mysql /usr/local/mysql echo "授权完成,开始准备相关文件......" mv /etc/my.cnf /etc/my.cnf.back cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf cat > /etc/my.cnf <<EOF [mysqld] datadir=/data/mysql innodb_file_per_table=on skip_name_resolve=on EOF cd /usr/local/mysql ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql &>/dev/null cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld service mysqld start &>/dev/null ln -s /usr/local/mysql/bin/* /usr/bin/ systemctl start mysqld cd - &>/dev/null echo "安装完成。" mysql -e ‘create database wordpress‘ mysql -e ‘create database discuz‘ mysql -e ‘grant all on wordpress.* to wordpress@"10.0.0.%" identified by "123456"‘ mysql -e ‘grant all on discuz.* to discuz@"10.0.0.%" identified by "123456"‘ cd /root } install_php(){ yum install -y gcc libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel wget https://www.php.net/distributions/php-7.4.12.tar.xz tar xf php-7.4.12.tar.xz cd php-7.4.12 ./configure --prefix=/apps/php74 --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-openssl--with-zlib --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-mbstring --enable-xml --enable-sockets --enable-fpm --enable-maintainer-zts --disable-fileinfo make && make install ln -s /apps/php74/bin/* /usr/bin/ cp /root/php-7.4.12/php.ini-production /etc/php-ini sed -ir -e ‘s/;date.timezone =/date.timezone = Asia\/Shanghai/g‘ -e ‘s/upload_max_filesize = 2M/upload_max_filesize = 20M/g‘ /etc/php-ini cp /root/php-7.4.12/sapi/fpm/php-fpm.service /usr/lib/systemd/system/ systemctl daemon-reload cp /apps/php74/etc/php-fpm.conf.default /apps/php74/etc/php-fpm.conf cp /apps/php74/etc/php-fpm.d/www.conf.default /apps/php74/etc/php-fpm.d/www.conf sed -ir -e ‘s/^user = nobody/user = apache/‘ -e ‘s/group = nobody/group = apache/‘ /apps/php74/etc/php-fpm.d/www.conf mkdir /etc/php.d cat > /etc/php.d/opcache.ini <<EOF [opcache] zend_extension=opcache.so opcache.enable=1 EOF systemctl daemon-reload systemctl enable --now php-fpm.service cd /root } install_wordpress(){ tar xf wordpress-5.4.2-zh_CN.tar.gz -C /data/ chown -R apache.apache /data/ } install_mysqld install_httpd install_php install_wordpress
本脚本由于中间采用了多虚拟机的设置,因此若是运行之后在网页上打不开,请将"/apps/httpd/conf/httpd.conf"配置文件中的家目录指定为/data/wordpress即可
sed -ir ‘s/DocumentRoot "\/apps\/httpd.*"/DocumentRoot "\/data\/wordpress"/‘ /apps/httpd/conf/httpd.conf
sed -ir ‘s@<Directory "\/apps\/httpd\/htdocs">@<Directory "\/data\/wordpress">@‘ /apps/httpd/conf/httpd.conf
原文:https://www.cnblogs.com/shang-b/p/13912401.html