赞
踩
搭建LNMP(Linux + Nginx + MySQL + PHP)或LAMP(Linux + Apache + MySQL + PHP)集群
创建ECS实例:
安装和配置软件:
配置负载均衡:
设置数据库集群:
配置监控和告警:
优化性能和安全:
备份和灾难恢复:
测试和监控:
运行以下命令,检查防火墙当前状态。
$ sudo status ufw
如果防火墙状态为Status: inactive,则表示防火墙为关闭状态。
如果防火墙状态为Status: active,则表示防火墙为开启状态。
可选:关闭防火墙。
$ sudo stop ufw
$ sudo disable ufw //开机不自启
如果您的防火墙为开启状态,需要运行以下命令,关闭防火墙并关闭开机自启动防火墙。
在linux上安装Nginx、MySQL、配置PHP
$ sudo apt update //更新镜像源
运行以下命令,安装Nginx。
$ sudo apt -y install nginx
运行以下命令,查看Nginx版本。
$ sudo nginx -v
返回结果如下所示,查看到Nginx的版本信息为1.18.0。同时也表示Nginx已成功安装。
nginx version: nginx/1.18.0 (Ubuntu)
运行以下命令,安装MySQL。
$ sudo apt -y install mysql-server
运行以下命令,查看MySQL版本。
查看mysql版本
$ sudo mysql -V
返回结果如下所示,表示MySQL已成功安装,MySQL的版本为8.0.27。
mysql Ver 8.0.27-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
$ sudo mysql
运行以下命令,设置root用户密码。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';
本示例中密码以Mysql@1234为例,示例命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'Mysql@1234';
运行以下命令,退出MySQL数据库。
exit;
$ sudo mysql_secure_installation 根据命令行提示,依次完成以下配置项。 输入root用户的密码。本示例中输入Mysql@1234。 root@iZbp19jsi7s0g7m4zgc****:~# sudo mysql_secure_installation Securing the MySQL server deployment. Enter password for user root: VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component?
说明:
在输入密码时,系统为了最大限度地保证数据安全,命令行将不做任何回显。您只需要输入正确的密码信息,然后按Enter键即可。
输入Y,设置密码验证策略。 Press y|Y for Yes, any other key for No: Y 根据提示,选择密码验证策略。 本示例输入0。 Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0 输入Y,更改root用户密码。 Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y 输入root用户密码。 New password: Re-enter new password: Estimated strength of the password: 100 输入Y,确认使用已设置的密码。 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y 输入Y删除MySQL自带的匿名用户。 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? (Press y|Y for Yes, any other key for No) : Y 输入Y,禁止MySQL的root用户的远程登录权限。 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? (Press y|Y for Yes, any other key for No) : Y 输入Y,移除test数据库。 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? (Press y|Y for Yes, any other key for No) : 输入Y,重新加载授权表。
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
当命令行回显All done!时,表示配置完成。
运行以下命令,登录MySQL数据库。
$ sudo mysql -uroot -p
在命令行回显的Enter password:后输入已设置的数据库密码。
成功登录MySQL数据库后,命令行信息如下所示。
运行以下命令,退出MySQL数据库。
exit;
运行以下命令,安装PHP。
$ sudo apt -y install php-fpm
运行以下命令,查看PHP版本。
$ sudo php -v返回结果如下所示,表示PHP已成功安装,可查看到PHP版本为8.1.2。
运行以下命令,打开Nginx默认的配置文件。
$ sudo vim /etc/nginx/sites-enabled/default
按i进入编辑模式,修改Nginx配置文件。
在server{}内,找到index开头的配置行,在该行中添加index.php。
在server{}内找到location ~ \.php$ {},去除以下配置行的注释符号。
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
按Esc退出编辑模式,然后输入:wq并按Enter键,保存并退出文件。
运行以下命令,在Nginx网站根目录中,新建phpinfo.php文件。
运行命令为:
$ sudo vim /var/www/html/phpinfo.php
按i进入编辑模式,添加以下配置信息。
phpinfo()函数会展示PHP的所有配置信息。
<?php echo phpinfo(); ?>
按Esc退出编辑模式,然后输入:wq并按Enter键,保存并退出文件。
运行以下命令,启动PHP。
$ sudo systemctl start php8.1-fpm
运行以下命令,重启Nginx服务。
$ sudo systemctl restart nginx.service
在本地Windows主机或其他具有公网访问能力的Windows主机中,打开浏览器。在浏览器的地址栏输入http://8.138.98.140/phpinfo.php进行访问。访问结果如下图所示,成功查看到PHP配置信息页面,表示LNMP环境部署成功。
(在lnmp的基础上关闭nginx服务,安装并启动apache)成功部署lamp
- 成功搭建LNMP环境后,建议您删除phpinfo.php测试文件,消除数据泄露风险。
$ sudo rm -rf /var/www/html/phpinfo.php
停止nginx服务
$ systemctl stop nginx
运行以下命令,更新Ubuntu系统内的软件包。 $ sudo apt update 运行以下命令,安装Apache。 $ sudo apt-get -y install apache2 运行以下命令,查看Apache版本。 $ apache2 -v 查看Apache版本。 运行以下命令,启动Apache服务并设置服务开机自启动。 $ sudo systemctl start apache2 $ sudo systemctl enable apache2 运行以下命令,查看Apache服务状态。 $ sudo systemctl status apache2 返回结果类似如下所示,表示Apache已启动。
$ sudo apt -y install libapache2-mod-php
运行以下命令,查看PHP版本。
$ php -v
返回结果类似如下所示,表示PHP已成功安装,PHP的版本为8.1。
运行以下命令,查看Apache网站根目录的路径信息。
$ sudo cat /etc/apache2/sites-available/000-default.conf
命令行返回结果中的DocumentRoot /var/www/html一行,即表示网站根目录为/var/www/html。
运行以下命令,在网站根目录创建测试网页,并把phpinfo()函数添加至网页内容中。
phpinfo()函数会展示PHP的所有配置信息。
$ sudo sh -c 'echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php'
运行以下命令,重启Apache服务。
$ sudo systemctl restart apache2
输入8.138.98.140
$ cd /var/www/html
$ ls
$ cd /etc/apache2
$ ls
$ vim ports.conf
将Listen 80 改成Listen 88 ,后退出vim编辑模式
$ vim /etc/nginx/sites-enabled/default
将原端口80改成99
错误是apache2抢占了99端口,在apache2中删除99端口,重启apache2并重启nginx
而在ubuntu中的浏览器中访问nginx的端口,出现的却是apache的欢迎页
原因:apache与nginx是共用同一个站点目录的,即在apache和nginx中部署的网页文件都放在同一个目录下—/var/www/html
因此访问nginx的端口时本应该调用第三个文件作为欢迎页,却调用了apache的欢迎页文件(第二个)
修改:vim /etc/nginx/sites-available/default
根据所排列的顺序调用站点目录里的网页文件作为自己的欢迎页(解决一开始的问题只需把index.nginx-debian.html放在index.html前就行了)
systemctl start apache2
systemctl start nginx
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。