NGINX is a small and efficient web server software that can be used to build an LNMP web service environment. LNMP is an acronym of the names of its original four open source components: Linux operating system, NGINX web server, MySQL relational database management system, and PHP programming language. This topic describes how to manually build an LNMP environment on an Elastic Compute Service (ECS) instance that runs a CentOS 7 operating system.
Prerequisites
- An ECS instance is created and a public IP address is assigned to the instance. For more information, see Creation method overview. In this example, an ECS instance with the following configurations is used. We recommend that you do not change the operating system during deployment. Otherwise, errors may be reported when commands are run.
- Instance type: ecs.c6.large
- Operating system: CentOS 7.8 64-bit public image
- Network type: Virtual Private Cloud (VPC)
- IP address: a public IP address
- An inbound rule is added to a security group of the ECS instance to allow traffic on ports 22, 80, and 443. For more information, see Add a security group rule. Note For security purposes, this topic describes only the ports on which traffic must be allowed to deploy and test an LNMP environment. You can configure security group rules to allow traffic on more ports based on your needs. For example, if you want to connect to a MySQL database on an ECS instance, you must configure an inbound rule in a security group of the instance to allow traffic on port 3306, which is the default port used for MySQL.
Background information
This topic is intended for individual users who are familiar with Linux operating systems but new to using Alibaba Cloud ECS to build websites.
You can also purchase an LNMP image in Alibaba Cloud Marketplace and create an ECS instance from the image to build websites.
- NGINX 1.20.1
- MySQL 5.7.36
- PHP 7.0.33
Step 1: Prepare the compilation environment
- Connect to the ECS instance on which you want to deploy an LNMP environment. For more information, see Connection methods .
- Disable the firewall.
- Disable Security-Enhanced Linux (SELinux).
Step 2: Install NGINX
- Run the following command to install NGINX:
sudo yum -y install nginx
- Run the following command to check the version of NGINX:
nginx -v
The following command output indicates that NGINX is installed:nginx version: nginx/1.20.1
Step 3: Install MySQL
- Run the following command to update the YUM repository:
sudo rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
- Run the following command to install MySQL. Note If you are using an operating system whose kernel version is el8, you may receive the No match for argument error message. If the issue occurs, run the sudo yum module disable mysql command to disable the default MySQL module before you install MySQL.
sudo yum -y install mysql-community-server --nogpgcheck
- Run the following command to check the version of MySQL:
mysql -V
The following command output indicates that MySQL is installed:mysql Ver 14.14 Distrib 5.7.36, for Linux (x86_64) using EditLine wrapper
- Run the following command to start MySQL:
sudo systemctl start mysqld
- Run the following commands in sequence to configure MySQL to start on system startup:
sudo systemctl enable mysqld sudo systemctl daemon-reload
Step 4: Install PHP
- Update the YUM repositories.
- Run the following command to install PHP:
sudo yum -y install php70w-devel php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64 php70w-pdo.x86_64 php70w-mysqlnd php70w-fpm php70w-opcache php70w-pecl-redis php70w-pecl-mongodb
- Run the following command to check the version of PHP:
php -v
The following command output indicates that PHP is installed:PHP 7.0.33 (cli) (built: Dec 6 2018 22:30:44) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.0.33, Copyright (c) 1999-2017, by Zend Technologies
Step 5: Configure NGINX
- Run the following command to back up the NGINX configuration file:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
- Modify the NGINX configuration file to add support for PHP. Note If you do not add support for PHP, PHP pages cannot be displayed when you access them by using a browser.
- Run the following command to start NGINX:
sudo systemctl start nginx
- Run the following command to configure NGINX to start on system startup:
sudo systemctl enable nginx
Step 6: Configure MySQL
- Run the following command to view the /var/log/mysqld.log file and obtain and record the initial password of the root user:
sudo grep 'temporary password' /var/log/mysqld.log
A command output similar to the following one is displayed, in whichARQTRy3+n8*W
is the initial password of the root user. This initial password will be used when you reset the password of the root user.2021-11-10T07:01:26.595215Z 1 [Note] A temporary password is generated for root@localhost: ARQTRy3+n8*W
- Run the following command to configure the security settings of MySQL:
sudo mysql_secure_installation
For more information, see the official MySQL documentation.
Step 7: Configure PHP
- Create and edit the phpinfo.php file to show PHP information.
- Run the following command to start PHP-FPM:
sudo systemctl start php-fpm
- Run the following command to configure PHP-FPM to start on system startup:
sudo systemctl enable php-fpm
Step 8: Test the connection to the LNMP environment
- Open a browser on your Windows computer or another Windows host that can access the Internet.
- In the address bar, enter
http://<public IP address of the ECS instance>/phpinfo.php
.The following page indicates that the LNMP environment is deployed.
What to do next
sudo rm -rf <Website root directory>/phpinfo.php
Replace <website root directory> with the website root directory that you configured in the nginx.conf file. sudo rm -rf /usr/share/nginx/html/phpinfo.php
FAQ
Question 1: How do I install other NGINX versions?
- Use a browser to visit the NGINX open source community to obtain the download URLs of NGINX versions.
Select the NGINX version that you want to install. In this example, NGINX 1.8.1 is used.
- Connect to the ECS instance on which you want to build an LNMP environment.
- Run the wget command to download NGINX 1.8.1. You can obtain the URL of the NGINX installation package for the required version from the NGINX open source community. Then, run the
wget URL
command to download the NGINX installation package to the ECS instance. For example, you can download NGINX 1.8.1 by running the following command:sudo wget http://nginx.org/download/nginx-1.8.1.tar.gz
- Run the following commands to install NGINX dependencies:
sudo yum install -y gcc-c++ sudo yum install -y pcre pcre-devel sudo yum install -y zlib zlib-devel sudo yum install -y openssl openssl-devel
- Run the following commands to decompress the NGINX 1.8.1 installation package and go to the folder in which NGINX resides:
sudo tar zxvf nginx-1.8.1.tar.gz cd nginx-1.8.1
- Run the following commands in sequence to compile the source code:
sudo ./configure \ --user=nobody \ --group=nobody \ --prefix=/usr/local/nginx \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-http_realip_module \ --with-http_sub_module \ --with-http_ssl_module
sudo make && make install
- Run the following commands to go to the sbin directory of NGINX and then start NGINX:
cd /usr/local/nginx/sbin/ sudo ./nginx
- Use a browser to access
<Public IP address of the ECS instance>
.If the following page appears, it indicates that NGINX is installed and started.
Question 2: How do I grant sudo permissions to a regular user?
- Connect to a Linux instance as the
root
user.For more information, see Connect to a Linux instance by using a password.
- Run the following command to create a regular user named
test
and set a password for the user:useradd test passwd test
- Run the following command to set permissions on the /etc/sudoers file:
chmod 750 /etc/sudoers
- Run the following command to edit the /etc/sudoers file:
Press the I key to enter the edit mode and add the following configuration:vim /etc/sudoers
Enter :wq to save and close the file.test ALL=(ALL) NOPASSWD: ALL
- Run the following command to switch to the
test
user:su - test
- Run the following command to check sudo permissions:
A command output similar to the following one indicates that sudo permissions are granted to the test user:sudo cat /etc/redhat-release
[test@iZbp1dqulfhozse3jbp**** ~]$ sudo cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)
Was this helpful?