Yalda

哈库呐玛塔塔

嗨,我是张志方,一名 iOS 开发者。


nginx部署应用

首先需要在云服务器平台购买一台云服务器,然后使用ssh登录,在terminal中安装相应的软件与架构。

以下是在Ubuntu服务器上从头开始部署一个Go应用程序并使用Nginx进行反向代理的具体步骤:

  1. 安装Go语言: 首先,确保在Ubuntu服务器上安装了Go语言。你可以使用包管理器或官方安装包进行安装。这是一个示例安装步骤: bash

​ 更新系统包列表 sudo apt update

​ 安装Go语言 sudo apt install golang

  1. 编写和构建Go应用程序: 在服务器上编写和构建你的Go应用程序,确保它监听一个端口,例如8080。你可以在应用程序目录中创建一个Go文件(例如,main.go): ```go go

package main import ( “fmt” “net/http” ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, “Hello, World!”) } func main() { http.HandleFunc(“/”, handler) http.ListenAndServe(“:8080”, nil) }

然后使用以下命令构建应用程序:
bash

- [x] `go build -o myapp`
3. 安装Nginx:
如果你的服务器上尚未安装Nginx,可以使用以下命令安装:
bash

- [x] `sudo apt install nginx`
4. 配置Nginx反向代理:
* 创建一个Nginx Server Block配置文件,用于反向代理到Go应用程序。创建一个新的配置文件(例如,myapp.conf):
bash

- [x] `sudo nano /etc/nginx/sites-available/myapp.conf`
* 在配置文件中添加以下内容,确保替换your_domain.com为你的域名:
nginx
```json
server { 
	listen 80;  #监听端口
	server_name your_domain.com;  #代理域名地址(或者服务器ip)
	location / { 
		proxy_pass http://127.0.0.1:8080;  #本地服务器地址
		 proxy_set_header Host $host; 
		proxy_set_header X-Real-IP $remote_addr; 
	}
 }
  • 创建一个符号链接以启用该配置文件: bash

  • sudo ln -s /etc/nginx/sites-available/myapp.conf /etc/nginx/sites-enabled/

  1. 测试Nginx配置并重新加载:
    • 使用以下命令测试Nginx配置文件是否正确: bash
  • sudo nginx -t
  • 如果没有错误,重新加载Nginx以应用新的配置: bash

  • sudo systemctl reload nginx
  1. 运行Go应用程序:
    • 在应用程序目录中运行你的Go应用程序,确保它在端口8080上运行: bash
  • ./myapp
  1. 防火墙设置: 如果有防火墙,确保打开Nginx所使用的HTTP(80)端口以允许外部访问。你可以使用ufw来管理防火墙规则。 bash
  • sudo ufw allow 80/tcp
  1. 域名解析: 确保你的域名已正确解析到你的服务器的公共IP地址,这通常在你的域名注册商或DNS服务提供商的控制面板中完成。

  2. 测试: 现在,你的Go应用程序应该通过Nginx从外部网络访问。用户可以通过域名或服务器的IP地址来访问你的应用程序。 这就完成了在Ubuntu服务器上部署Go应用程序并使用Nginx进行反向代理的过程。如果你需要更高级的功能,如SSL/TLS支持、负载均衡等,你可以进一步配置Nginx Server Block来满足你的需求。

配置ssl证书

要配置SSL证书以启用HTTPS,以下是一般的步骤。这些步骤假设你已经获得了SSL证书,可以是自签名证书或由受信任的证书颁发机构(CA)签发的证书。证书的类型和获得方式会影响配置的具体步骤。

步骤 1:获取SSL证书

如果你使用自签名证书,请确保你已经生成了SSL证书和私钥。你可以使用工具如OpenSSL来生成自签名证书。示例命令:bash

  • openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout yourdomain.key -out yourdomain.crt 请替换 yourdomain.key 和 yourdomain.crt 为你的证书文件名。 如果你使用由受信任的CA签发的证书,确保你已经从CA获取了证书文件。

步骤 2:配置Web服务器

配置你的Web服务器以使用SSL证书。以下是一些常见Web服务器的配置示例: * Nginx:nginx

     server {
        listen 443 ssl;
        server_name yourdomain.com; 
        ssl_certificate /path/to/yourdomain.crt; 
        ssl_certificate_key /path/to/yourdomain.key; # 其他 SSL 配置选项
        location / {
            # 这里包含网站功能的配置
            # 例如代理请求到后端应用程序、静态文件服务等
        }
     } 
  • 确保替换 yourdomain.com、/path/to/yourdomain.crt 和 /path/to/yourdomain.key 为你的域名和证书文件的实际值。你还可以配置其他SSL选项,如SSL协议和加密套件。
  • Apache:apache Copy code<VirtualHost *:443> ServerName yourdomain.com DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /path/to/yourdomain.crt SSLCertificateKeyFile /path/to/yourdomain.key 其他 SSL 配置选项 </VirtualHost> 同样, 请替换 yourdomain.com、/path/to/yourdomain.crt 和 /path/to/yourdomain.key 为你的域名和证书文件的实际值。你还可以配置其他SSL选项。

步骤 3:重启Web服务器

一旦配置了SSL,重启你的Web服务器,以便应用新的配置。

  • 对于Nginx,使用 sudo systemctl restart nginx(或 sudo service nginx restart)来重启Nginx。
  • 对于Apache,使用 sudo systemctl restart apache2(或 sudo service apache2 restart)来重启Apache。

步骤 4:验证HTTPS

访问你的网站的HTTPS版本(https://yourdomain.com)并检查浏览器是否显示了SSL锁定图标,这表示连接是安全的。还可以使用在线SSL检查工具来验证SSL证书的配置。 注意:配置SSL证书时,请确保保护私钥文件,因为私钥对于加密通信的安全至关重要。确保你的私钥文件具有适当的权限,只有具有必要权限的用户能够访问它。 这些是一般配置SSL证书的步骤。具体步骤可能因使用的Web服务器和操作系统而异。如果你使用的是特定的托管服务,该服务提供商可能还提供了关于如何配置SSL的文档和工具。如果你有自签名证书,访问者在首次访问时可能会看到安全性警告,因为自签名证书未由受信任的CA签发。如果需要更高级的SSL证书,可以考虑购买商业SSL证书。

如果外网不能访问,去云服务器控制台查看网络方向规则是否添加了tcp:80 或者tcp:443

nahup命令可以使应用程序在终端断开后继续运行, 后台运行你的应用程序,并将输出写入一个名为 nohup.out 的文件

  • nohup ./app & 或者 nohup go run main.go &
  • 也可以使用tmux、screen、systemd等 部署web服务器、数据库最好使用systems

可以使用ps pgrep pname查看进程,然后使用kill杀死某个进程。

最近的文章

剖析Swift性能优化

简介2014年,苹果公司在WWDC上发布Swift这一新的编程语言。经过几年的发展,Swift已经成为iOS开发语言的“中流砥柱”,Swift提供了非常灵活的高级别特性,例如协议、闭包、泛型等,...…

继续阅读

更早的文章

六、中间件token鉴权和app升级功能

本篇文章主要为项目添加中间件token的授权、app升级功能。Middleware中间件使用中间件可以对api接口访问前后做处理。例如token校验。接下来使用gin框架的中间件功能。middl...…

继续阅读
-->