yum安装LNMP+PHPmyadmin环境
部署环境:
[root@web ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
配置yum源
CentOS 7 的 默认 YUM 源里的软件包版本可能不是最新的,如果要安装最新的软件包就得配置下 YUM 源。
配置 YUM 源可以通过直接安装 RPM (Red Hat Package Manager) 包,或者修改 Repository,本文讲解通过安装 RPM 方式。
首先需要安装 EPEL ( Extra Packages for Enterprise Linux ) YUM 源,用以解决部分依赖包不存在的问题:
yum install -y epel-release
接着是 MySQL YUM 源,MySQL 官网给出了配置教程,因为本文章讲解的是 CentOS 7,我们只需要安装对应的 RPM 包就行了。
安装 RPM 包前需要导入 RPM-GPG-KEY 文件,不然安装过程会出错。
将 MySQL RPM-GPG-KEY 另存为 mysql_pubkey.asc 并导入 :
rpm --import mysql_pubkey.asc 说明,如果这一步出错可以略过,不影响下面的安装
导入后安装 CentOS 7 的 MySQL RPM 包:
rpm -Uvh http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
然后是 PHP YUM 源,PHP 最新的 RPM 包,可以使用 Remi's RPM repository。
导入 PHP RPM-GPG-KEY (remi):
rpm --import http://rpms.remirepo.net/RPM-GPG-KEY-remi
安装 PHP RPM (remi) 包:
rpm -Uvh http://remi.mirrors.arminco.com/enterprise/remi-release-7.rpm
最后是 Nginx YUM 源,Nginx 官网也给出了配置教程。
导入 Nginx RPM-GPG-KEY:
rpm --import http://nginx.org/packages/keys/nginx_signing.key
安装 Nginx RPM 包:
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
到目前为止,YUM 源已经安装好了 ,接着进行下一步的配置。
MySQL YUM 源默认是启用的 MySQL-5.6,PHP YUM 源默认都没有启用,Nginx YUM 源默认是启用的 Nginx-1.8。
定位到 /etc/yum.repos.d/,对 后缀为 .repo 的文件进行编辑,修改 enabled 为 1 以启用。
启用 PHP-7.0 :
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
到这一步 YUM 配置就算完成了,清除并生成 YUM 缓存使之生效:
yum clean all yum makecache
安装 MySQL + PHP + Nginx + phpMyAdmin
YUM 源已经配置好了,现在直接安装 MySQL + PHP + Nginx + phpMyAdmin:
yum install -y mysql-community-server nginx php php-bcmath php-fpm php-gd php-json php-mbstring php-mcrypt php-mysqlnd php-opcache php-pdo php-pdo_dblib php-pgsql php-recode php-snmp php-soap php-xml php-pecl-zip phpMyAdmin
安装完成后,进行下一步的环境配置,MySQL 配置文件在 /etc/my.cnf.d/,PHP 配置文件在 /etc/php-fpm.d/,Nginx 配置文件在 /etc/nginx/ ,phpMyAdmin 的配置文件在 /etc/phpMyAdmin/。
配置MySQL
MySQL 配置文件保持默认,运行一次安全配置即可。
启动 MySQL:
systemctl start mysqld.service
安全配置 MySQL:
设置 root 密码、删除匿名用户、禁止 root 远程登录、删除 test 数据库、重新加载权限表,一路 Y 下去
[root@web ~]# mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MySQL to secure it, we'll need the current password for the root user. If you've just installed MySQL, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MySQL root user without the proper authorisation. Set root password? [Y/n] 123456 New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] y ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] y ... Success! By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] y - Dropping test database... ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist ... Failed! Not critical, keep moving... - 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? [Y/n] y ... Success! All done! If you've completed all of the above steps, your MySQL installation should now be secure. Thanks for using MySQL! Cleaning up... 翻译如下: [root @ web~] #mysql_secure_installation 注意:建议为所有MySQL运行此脚本的所有部分 生产中使用的服务器!请仔细阅读每一步! 为了登录MySQL以保护它,我们需要当前的 root用户的密码。如果你刚刚安装了MySQL,那么 你还没有设置root密码,密码是空白的, 所以你应该在这里按Enter键。 输入root的当前密码(输入none): 好的,成功使用密码,继续...... 设置root密码可确保没有人可以登录MySQL 没有适当授权的root用户。 设置root密码? [是/否] 086530 新密码: 重新输入新的密码: 密码更新成功! 重新加载权限表.. ......成功! 默认情况下,MySQL安装具有匿名用户,允许任何人 无需创建用户帐户即可登录MySQL 他们。这仅用于测试和进行安装 走得更顺一些。你应该在进入之前删除它们 生产环境。 删除匿名用户? [是/否] y ......成功! 通常,只允许root用户从'localhost'连接。这个 确保有人无法猜测来自网络的root密码。 禁止远程登录? [是/否] y ......成功! 默认情况下,MySQL附带一个名为“test”的数据库,任何人都可以 访问。这也仅用于测试,应该删除 在进入生产环境之前。 删除测试数据库并访问它? [是/否] y - 删除测试数据库...... ERROR 1008(HY000)第1行:无法删除数据库'test';数据库不存在 ......失败了!不重要,继续前进...... - 删除测试数据库的权限... ......成功! 重新加载权限表将确保到目前为止所做的所有更改 将立即生效。 现在重新加载权限表? [是/否] y ......成功! 全做完了!如果您已完成上述所有步骤,请使用MySQL 安装现在应该是安全的。 感谢您使用MySQL! 清理干净...
配置 PHP
PHP 默认配置文件使用的是监听 9000 端口进行通信,针对小型单一、没有做负债均衡的服务器,可以使用 unix sock 方式通信。
使用 unix sock 方式需要修改 PHP 配置文件(配置文件位置为:/etc/php-fpm.d/www.conf):
#更换监听方式
#更换监听方式 listen = /dev/shm/php-fpm-default.sock #监听队列最大长度为不限 listen.backlog = -1 #指定监听用户和用户组(需存在) listen.owner = www listen.group = www 启动 PHP-FPM: systemctl start php-fpm.service
配置 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; } 按下 Esc,输入 :wq保存并退出。 防火墙放行 HTTP 端口访问: firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --reload 启动 Nginx: systemctl start nginx.service
这时,在浏览器地址栏输入当前服务器 IP 就会看到一个 400 的提示页面了。
进阶!绑定域名+站点目录+保存日志+运行 PHP的配置文件:
server { listen 80; #监听80端口 server_name default.com www.default.com; #绑定域名 default.com 和 www.default.com index index.html index.htm index.php; #设置首页文件,越前优先级越高 charset utf-8; #设置网页编码 root /home/wwwroot/default; #设置站点根目录 #运行 PHP location ~ .*\.php$ { fastcgi_pass 127.0.0.1:9000 #默认使用9000端口和PHP通信 #fastcgi_pass unix:/dev/shm/php-fpm-default.sock; #使用 unix sock 和PHP通信 fastcgi_index index.php; fastcgi_param DOCUMENT_ROOT /home/wwwroot/default; #PHP 文档根目录 fastcgi_param SCRIPT_FILENAME /home/wwwroot/default$fastcgi_script_name; #PHP 脚本目录 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; }
配置 phpMyAdmin
# 编辑配置文件 vim /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-<span class="pl-k">*</span>/html /home/wwwroot/default/phpMyAdmin/doc/
一键安装脚本
上面已经讲解了如何配置和安装,但是不能每次都这么一步一步来吧?为了节省时间,麦葱写了一个一键安装管理脚本,可选择安装 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) <domain> <server_name> <index_name> <rewrite_file> <host_subdirectory> start 启动 stop 停止 list 列出 add 添加 edit 编辑 del 删除 exit 什么都不做 <domain>: 配置名称,例如:domain <server_name>: 域名列表,例如:domain.com,www.domain.com <index_name>: 首页文件,例如:index.html,index.htm,index.php <rewrite_file>: 伪静态规则文件,保存在 /etc/nginx/rewrite/ 例如:nomal.conf <host_subdirectory>: 是否支持子目录绑定,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) <delete name.tar.gz> start 添加 list 列出 del 删除 示例: #添加一个新的备份 service vbackup start #列出备份文件 service vbackup list #删除一个备份 service vbackup del name.tar.gz
本文转至:http://www.luoxiao123.cn/centos-yum-lnmp.html