最近做一个银行的项目,银行的服务器是鲲鹏ARM架构的服务器,并且是麒麟v10的系统,这里记录一下在无法访问外网安装 Nginx 的方法。
下载nginx和关联的库
下载 nginx nginx-1.24.0.tar.gz https://nginx.org/en/download.html
选择 Stable version 的 nginx-1.24.0,这个是稳定版本,不会有太多的 bug
下载 pcre pcre2-10.43.tar.gz
官方:https://www.pcre.org/
github:https://github.com/PCRE2Project/pcre2/releases
选择 Latest release 的 pcre2-10.43
下载 zlib zlib-1.3.1.tar.gz
官方:https://zlib.net/
github:https://github.com/madler/zlib/releases
选择 Latest release 的 zlib-1.3.1.tar.gz
下载 OpenSSL openssl-3.2.1.tar.gz
官方:https://www.openssl.org/
github:https://github.com/openssl/openssl/releases
选择 Latest release 的 openssl-3.2.1.tar.gz
把下载的压缩包都上传到服务器root目录下
安装nginx和相关库
安装 PCRE 库,用于支持 Nginx 的 Rewrite 模块,因为 Nginx 使用 PCRE 来解析正则表达式
tar -zxvf pcre2-10.43.tar.gz
cd pcre2-10.43
./configure
make
make install
安装 zlib 库,用于支持 Nginx 的 Gzip 模块,因为 Nginx 使用 zlib 来压缩和解压缩数据
tar -zxvf zlib-1.3.1.tar.gz
cd zlib-1.3.1
./configure
make
make install
安装 OpenSSL 库,用于支持 Nginx 的 SSL 模块,因为 Nginx 使用 OpenSSL 来加密和解密数据
这个make时间会比较长,耐心等待
tar -zxvf openssl-3.2.1.tar.gz
cd openssl-3.2.1
./config
make
make install
安装 Nginx 并指定安装路径,确保替换 nginx-version, pcre-version, zlib-version, 和 openssl-version 为实际的版本号
这个make时间会比较长,耐心等待
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
./configure --sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--with-pcre=../pcre2-10.43 \
--with-zlib=../zlib-1.3.1 \
--with-openssl=../openssl-3.2.1 \
--with-http_ssl_module
make
make install
配置Nginx服务
配置 PATH 环境变量
echo 'export PATH=$PATH:/usr/local/nginx/sbin' >> ~/.bashrc
source ~/.bashrc
创建网站根目录
mkdir -p /home/www/wwwroot/baswei
创建测试页面
vi /home/www/wwwroot/baswei/index.html
写入以下内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试页面</title>
</head>
<body>
<h1>欢迎来到鲲鹏服务器上的 Nginx 测试页面!</h1>
<p>这是一个简单的测试页面,用于验证 Nginx 是否正确配置。</p>
</body>
</html>
启动 Nginx
nginx
验证 Nginx 是否启动成功
ps -ef | grep nginx
确认nginx是以哪个用户运行的,一般主进程是以root用户启动的,工作进程是以nobody用户启动的
ps -eo user,group,comm | grep nginx
设置网站根目录权限,确保工作进程用户(nobody)可以读取和执行
将网站根目录及其子目录和文件的所有权更改为 nobody 用户和组。
sudo chown -R nobody:nobody /home/
对所有目录设置权限为 755(即目录所有者和组可以读取、写入和执行,其他用户可以读取和执行)。
sudo find /home/ -type d -exec chmod 755 {} \;
对所有文件设置权限为 644(即文件所有者可以读取和写入,文件所有组可以读取,其他用户可以读取)。
sudo find /home/www/wwwroot/baswei -type f -exec chmod 644 {} \;
验证权限设置是否成功
ls -ld /home /home/www /home/www/wwwroot /home/www/wwwroot/baswei/ /home/www/wwwroot/baswei/index.html
# 如果输出结果如下,则表示权限设置成功
# drwxr-xr-x 3 nobody nobody 4096 4月 15 16:00 /home
# drwxr-xr-x 3 nobody nobody 4096 4月 15 16:00 /home/www
# drwxr-xr-x 3 nobody nobody 4096 4月 15 16:00 /home/www/wwwroot
# drwxr-xr-x 2 nobody nobody 4096 4月 15 16:00 /home/www/wwwroot/baswei/
# -rw-r--r-- 1 nobody nobody 228 4月 15 16:00 /home/www/wwwroot/baswei/index.html
设置网站目录权限,允许其他用户访问 (可选,不是安全的)
chmod o+x /home /home/www /home/www/wwwroot /home/www/wwwroot/baswei/ /home/www/wwwroot/baswei/index.html
备份 Nginx 配置文件
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
# 编辑 Nginx 配置文件
vi /usr/local/nginx/conf/nginx.conf
# 添加以下内容
server {
listen 80;
# server_name 替换为自己的域名或 IP 地址
server_name 123.60.220.94;
location / {
root /home/www/wwwroot/baswei;
index index.html index.htm;
}
}
验证 Nginx 配置是否正确
nginx -t
重启 Nginx
nginx -s reload
清空 Nginx 的错误日志
echo "" > /usr/local/nginx/logs/error.log
查看 Nginx 的错误日志
more /usr/local/nginx/logs/error.log
设置 Nginx 开机自启
创建 Nginx 的 systemd 服务文件
vi /etc/systemd/system/nginx.service
添加以下内容
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重新加载 systemd 配置
systemctl daemon-reload
启动 Nginx 服务
systemctl start nginx
验证 Nginx 服务是否启动成功
systemctl status nginx
设置 Nginx 服务开机自启
systemctl enable nginx