Guide to Porting and Configuring Nginx on OKMX6ULx Embedded Linux (Kernel 4.1.15)

by yir65681 in Circuits > Electronics

2 Views, 0 Favorites, 0 Comments

Guide to Porting and Configuring Nginx on OKMX6ULx Embedded Linux (Kernel 4.1.15)

1.jpg

Nginx (engine x) is an open-source, high-performance Web server, reverse proxy server, load balancer, and HTTP cache server. It is characterized by low memory usage and strong concurrency ability. In fact, Nginx performs well in terms of concurrency among web servers of the same type. It is developed using the C programming language.

Nginx is specifically developed for performance optimization. Performance is an important consideration in its design. It focuses highly on efficiency in implementation and can withstand high-load tests, supporting up to 50,000 concurrent connections.

Compilation and Porting

1.1 Compile nginx-1.8 in Yocto

Execute the following commands for compilation:

$ DISTRO=fsl-imx-x11 MACHINE=imx6ull14x14evk source fsl-setup-release.sh -b build_x11
$ bitbake nginx

During the compilation process, the following errors appeared:

Yocto compilation error for Nginx packageSolution:

Modify the build_x11/conf/bblayers.conf file and add the source code path of Nginx to the file. build_x11 is the installation and compilation path defined by yourself.

Modify the content as follows:

Modifying bblayers.conf to include Nginx source pathAfter adding, execute bitbake nginx again for compilation.

1.2 Package the Image

After compilation, go to the

build_x11/tmp/work/cortexa7hf-neon-poky-linux-gnueabi/nginx/1.8.1-r0/image

path to package the image.


$ cd tmp/work/cortexa7hf-neon-poky-linux-gnueabi/nginx/1.8.1-r0/image
$ tar -cjvf nginx-1.8.1.tar.bz2 *

1.3 Transplant

Extract the image packaged in the previous step to the root path of the system.

tar -xvf nginx-1.8.1.tar.bz2 -C /


Test

2.1 Reverse Proxy

2.1.1 Tomcat Installation

① Install the JDK environment

Download address: Oracle JDK 8 Downloads

Download the following two files:

jdk-8u151-linux-arm32-vfp-hflt.tar.gz

and

jdk-8u151-linux-arm32-vfp-hflt-demos.tar.gz


Extract them to the development board:

Extract the above two compressed packages to /home/root/jdk1.8.0_151.

Modify the environment variables:

Add the following content at the end of the /etc/profile file:

JAVA_HOME=/home/root/jdk1.8.0_151
CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

Execute the following command to make the environment variables take effect immediately:

$ source /etc/profile

Verify whether the installation is successful:

Enter the following command to check the Java version:

$ java -version

Java version verification output on ARM board② Install Tomcat

Download the source code: Tomcat 9.0 Downloads. Here, download version 9.0.108.

Extract the downloaded

apache-tomcat-9.0.108.tar.gz

to the

/home/root

path on the development board.


tar -xvf apache-tomcat-9.0.108.tar.gz -C /home/root

Start the Tomcat service:

cd /home/root/apache-tomcat-9.0.108/bin
./startup.sh

After starting, enter 192.168.1.13:8080 in the browser, and the Tomcat interface will be displayed.

Tomcat default welcome page2.1.2 Modify Nginx Configuration

Modify the /etc/nginx/nginx.conf file:

server {
listen 80;
server_name www.123.com;
location / {
proxy_pass http://192.168.1.13:8080/;
index index.html index.htm;
}
}
  1. listen: It indicates that the port 80 is monitored.
  2. server_name: The access domain name is defined here.
  3. proxy_pass: It is a proxy forwarding module. Its main function is to forward www.123.com requests to http://192.168.1.13:8080/.

Start the Nginx service:

mkdir /run/nginx
nginx -c /etc/nginx/nginx.conf

Modify the hosts file in Windows:

Press Win + S, run Notepad as an administrator, open the hosts file under C:\Windows\System32\drivers\etc, and add the mapping.

Test:

Enter www.123.com in the browser, and you can access the Tomcat interface via Nginx.

Accessing Tomcat via Nginx Reverse Proxy2.2 Load Balancing

1. Setup Service 8080:

Rename the above-mentioned apache-tomcat to apache-tomcat8080, and create a test file:

mv apache-tomcat-9.0.108/ apache-tomcat8080/
cd apache-tomcat8080/webapps
mkdir test
vi test.html
<!--apache8080-->
<html>
<body>welcome to service 8080</body>
</html>

2. Setup Service 8081:

Extract another Tomcat package and rename it as apache-tomcat8081. Modify its server.xml port settings:

mv apache-tomcat-9.0.108/ apache-tomcat8081/
cd apache-tomcat8081/conf
vi server.xml

Configuring server.xml for second Tomcat instanceSetting port 8081 in Tomcat configurationCreate the test page for 8081:

<!--apache8081-->
<html>
<body>welcome to service 8081</body>
</html>

3. Modify Nginx for Load Balancing:

Add the upstream block to nginx.conf:

upstream myserver {
server 192.168.1.13:8080;
server 192.168.1.13:8081;
}
server {
listen 80;
server_name www.123.com;
location / {
proxy_pass http://myserver;
index index.html index.htm;
}
}

Result:

Restart the nginx service. When accessing www.123.com/test/test.html and opening multiple web pages, you will find that the page content alternates between the services on ports 8080 and 8081. This realizes load balancing.

Load balancing result showing service 8080Load balancing result showing service 8081