这个学期讲授web开发课程,发现大部分同学对服务器,web服务等知识了解很少,要完成整个web服务的安装和部署还是很困难。所以这里写个完整的教程吧。
-
什么是LEMP?
LEMP 是指 Linux 操作系统,Nginx Web服务器,MySQL/MariaDB 数据库, 和PHP 这样一个常见的组合。 整个组合中的所有部分都是开源的。
2. 阿里云服务器环境
配置一台服务器,最快捷和简单的方法就是使用云服务器,比如阿里云,腾讯云等。我们这里以阿里云为例来说明如何创建一台云主机。 注册/登录阿里云平台,创建一个ECS实例: 我这里选择阿里云的 共享计算型ECS主机, 1vCPU, 2GB内存, 镜像CentOS 7.5 , 40GB的系统盘, 带宽选择按使用流量计费。安全组选择默认的安全组就可以,确保开放TCP 22, 80, 443这几个端口。
在登录设置部分,尽管从安全的角度,使用自己生产的密钥对更好,但作为Linux的新手,为了方便,大家可以选择自定义密码,为root用户设置登录密码。 其他的选项可以直接跳过。 设置完毕后,点击 创建实例 即可创建一台云主机。
3. 登录阿里云主机
如果你使用的是Linux或是Mac,直接用SSH登录即可:
ssh root@11.22.33.44
如果使用的是Windows, 可以下载Putty之类的软件来进行SSH登录。
4. 安装Nginx
因为阿里云的CentOS上已经有EPEL库了,所以直接用yum安装就可以了:
sudo yum install nginx
安装完毕后,启动nginx服务:
sudo systemctl start nginx
运行下面的命令,来保证nginx服务每次重启服务器的时候会自行启动:
sudo systemctl enable nginx
现在nginx服务器应该已经正常运行了,在你的电脑上输入阿里云主机的ip地址,http://<阿里云ECS ip>, 应该可以看到这样的网页,说明Nginx安装成功。
5. 安装MariaDB
MariaDB 是从MySQL出来的一个分支,和MySQL 兼容,也是MySQL原来核心团队维护的一个分支,基本上你可以认为MariaDB和MySQL是一样的, 事实上,几乎所有的操作和命令就是一样的。由于MySQL被纳入Oracle旗下,所以基本上开源社区都从MySQL转向了MariaDB。
安装MariaDB:
sudo yum install mariadb-server
启动MariDB 服务,并使其开机自启动:
sudo systemctl start mariadb
sudo systemctl enable mariadb
安装 MariaDB-PHP :
sudo yum install php-mysql
执行MySQL/MariaDB 的安全强化脚本:
sudo mysql_secure_installation
这个脚本会让你设置MySQL/MariaDB数据库的root用户的密码:
Enter current password for root (enter for none):
因为初始密码为空,直接回车就可以了。
Set root password? [Y/n]
输入Y并设置root的密码
对下面的问题都回答Y:
Remove anonymous users? Disallow root login remotely? Remove test database and access to it? Reload privilege tables now?
现在MariaDB 数据库已经安装配置完毕,我们可以创建一个数据库试一下:
mysql -u root -p
show databases; create database test; use test; create table users( id int(4) not null primary key auto_increment, name char(20)); ...... 输入exit可以退出 mysql command 环境, 回到Linux shell。
6. 安装并配置PHP
- 安装PHP
sudo yum install php-fpm
这个命令安装了PHP的 FastCGI解析服务。 现在需要修改PHP的一些配置。
- 加强安全性配置修改:
sudo vim /etc/php.ini
打开php.ini这个文件后,找到cgi.fix_pathinfo=1 这句话,把前面的注释 ;去掉,然后把1改成0。 也就是说应该是:
cgi.fix_pathinfo=0
保存并退出。
- 修改php-fpm配置:
sudo vim /etc/php-fpm.d/www.conf
这个文件中的缺省配置是面向Apache的,现在要修改为面向Nginx的2
在这个文件中,把 listen = 127.0.0.1:9000 修改为:
listen = /var/run/php-fpm/php-fpm.sock
然后,找到listen.owner 和 listen group这两个语句,去掉前面的注释符 “;”
listen.owner= nobody listen.group = nobody
找到 user = apache和 group = apache这两句话,改成:
user = nginx group = nginx
保存并退出。
- 需要启动PHP-fpm服务,并使之开机自启动:
sudo systemctl start php-fpm sudo systemctl enable php-fpm
7. 配置NGINX网站
如果你规划的网站的域名为 mywebsite.com, 你可以把网站的内容放到 /var/www/mywebsite.com/这个目录下,首先创建这个目录:
sudo mkdir -p /var/www/mywebsite.com/
如果目前你只准备在该服务器上放一个网站,可以直接修改/etc/nginx/nginx.conf文件。,也可以创建自己的网站配置,比如mywebsite.conf.
sudo vim /etc/nginx/conf.d/mywebsite.conf
该文件的内容为:
server { listen 80 default_server; listen [::]:80 default_server; server_name mywebsite.com www.mywebsite.com; root /var/www/mywebsite.com; index index.php index.htm index.html; location / { try_files $uri $uri/ =404; } location ~* \.php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; } }
这里需要注意的是要看一下/etc/nginx/nginx.conf的配置,如果两者有冲突,最简单的方法是注释掉 nginx.conf中的server部分,
当然你也可以直接在/etc/nginx/nginx.conf文件中修改,不需要创建 /etc/nginx/conf.d/mywebsite.conf.
该文件保存并退出后, 重启Nginx服务:
sudo systemctl restart nginx
8. 测试整个配置
在网站的根目录创建一个test.php的文件:
sudo vim /var/www/mywebsite.com/test.php
该php文件的内容只有一句话:
<?php phpinfo(); ?>
保存并退出。
现在回到你自己的计算机,输入 http://<阿里云主机的公网IP>/test.php
如果出现下面的页面,说明配置都是正确的。