原创

如何在ubuntu中安装配置sendmail,以实现发邮件发送(还可在php中发送,也可发匿名邮件)

如何在ubuntu中安装配置sendmail,以实现发邮件发送(还可在php中发送,也可发匿名邮件)

一.安装sendmail

sudo apt install sendmail

二.修改/etc/hosts文件,添加localhost.localdomain项(全限定域名)

sudo vim /etc/hosts

修改后如下:

127.0.0.1 localhost.localdomain localhost lenix-Swift-SF314-512
127.0.1.1 lenix-Swift-SF314-512

三.修改sendmail.mc配置

cd /etc/mail
sudo vim sendmail.mc

找到以下2行:

DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl
DAEMON_OPTIONS(`Family=inet, Name=MSP-v4, Port=submission, M=Ea, Addr=127.0.0.1')dnl

在前面加dnl代表注释掉这2行,以使能够进行外网访问 .

修改后如下:
dnl DAEMON_OPTIONS(`Family=inet,

            

linux Ubuntu通过systemd 添加开机自动启动程序方法

本文介绍如何在Linux 系统中自行建立一个web服务器,并设定让Systemd 自动启动与管理web服务器的运作。

建立Echo 服务器

首先以Python 写一个简单的echo 服务器,将其储存在/opt/echo_server.py

#!/usr/bin/env python3 
import socket

# 建立socket
serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定本机9000 连接端口
serv.bind(( ' 0.0.0.0 ' , 9000 ))

# 开始接受client 连接
serv.listen()

while  True :

    # 接受client 
        

写给后端程序员的前端开发流程与正确姿势.

写给后端程序员的前端开发流程与正确姿势.

关键词:node.js,npm,webpack,laravel mix,package.json,js代码压缩.

一直以来,后端程序员可能出于对前端的不太熟悉,尤其对于现代的前端工程化更不太熟悉.一看到nodejs,npm等名词就发懵.但后端程序员在实践中还是多多少少会接触前端的.可能你需要修改别人的前端代码,或自己开发前端代码(您可能是全栈程序员了).

想必你修改或写前端代码,也和我以前一样,直接从网上找模板(包括html,css.js)修改成自己样式.或自己从头写html.css.js.

不管是哪种类型,你一般是直接修改Html页面里引入的css.js吧:).

你可能也有些困惑 ,怎么别人的js代码看着像加密过似的,不知如何下手修改?

而你自己从头写的css,js则会直接被引入到Html页面里.

css,js代码里有一些注释,还有一些空格,空行等内容 ,直接在html页里引用是其实是没有经过压缩(去空格,去空行,去注释)的代码.会加大网络传输量,导致加载会慢一些.

而且,你写的js.没有经过压缩(去空格,注释,变量,函数重命名为短名称等),导致别人可能会偷盗你的代码.

如果你压缩了js后,再发布你的代码 ,而你的js看起来像经过加密一样,别人也基本看不懂你的代码了.

而你要做的就是开发代码与发布代码相分离.

本教程教你使用laravel-mix进行正确前端开发(注:laravel-mix最初是用于php框架laravel的前端资源编译工作 ,现在可用于任何语言的任何前端项目).

 

你项目的目录结构应该如下:

my-app/

----------index.html

-----------src/

----------------app.css

----------------app.js

-----------dist/

-----------------app.js

-----------------app.css

 

其中…

                    

解决socket.io不能使用websocket长连接,一直轮询请求的问题

参考:https://socket.io/docs/v4/troubleshooting-connection-issues/#a-proxy-in-front-of-your-servers-does-not-accept-the-WebSocket-connection

可能的解释:

服务器前面的代理不接受 WebSocket连接

请在此处查看文档。

 

在Nginx代理上,修改nginx配置

如下.

http {
  server {
    listen 80;
    server_name example.com;

    location / {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $host;

      proxy_pass http://localhost:3000;

      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      

使用Advanced Installer打包安装包-制作windows安装程序

使用Advanced Installer打包安装包-制作windows安装程序

1.下载AdvancedInstaller 19  下载地址

2.下载AdvancedInstaller 19 解压后 双击 AdvancedInstallerPortable.exe,选择Generic 为 Enterprise,language :Chiness Simplified(PRC),点击Create Project。

3.在“Product Details”页面中填写Name、Version、Publisher。设置Control Panel ioc。设置完成后ctrl+s 保存 xxx.aip

4.接下来添加需要打包的文件内容。选择“Files and Folders”->Target Computer->Application Folder->右键->Add Folder,(添加安装目录下的文件夹) Add Files是添加安装目录下的文件(可多选)。 注意:如果是在 ->Add Folder 添加安装目录的外层文件夹的话,安装好的目录会多一层文件夹。

 

 5.添加桌面快捷 ,选中Desktop->右侧空白处右键->New Shortcut To ->Installed File->选择.exe文件->点击Ok…

如何在 Ubuntu 上安装和配置 Supervisor

如何在 Ubuntu 上安装和配置 Supervisor

介绍

在许多服务器环境中,通常情况下,您将拥有许多要持久运行的小程序,无论这些程序是小型shell脚本,Node.js应用程序还是任何大型软件包。

通常,外部包随单元文件一起提供,允许它们由 init 系统(如 systemd)管理,或者打包为可由容器引擎管理的 docker 映像。但是,对于未很好地打包的软件,或者对于不希望与服务器上的低级 init 系统交互的用户,拥有轻量级替代方案是有帮助的。

Supervisor是一个进程管理器,它提供了一个单一的界面来管理和监视许多长时间运行的程序。在本教程中,您将在 Linux 服务器上安装 Supervisor,并学习如何管理多个应用程序的 Supervisor 配置。

以下是 Supervisor 的主要优势:

  • 方便:为所有单流程实例编写 rc.d 很不方便。同样,Rc.d 脚本不会自动重新启动崩溃的进程。但是,可以将 Supervisor 配置为在进程崩溃时自动重启进程。
  • 准确性:  在 UNIX 中,通常很难获得进程的准确启动/停止状态。Supervisor 将进程作为子进程启动,因此它知道其子进程的 up/down 状态。这很容易为最终用户查询。

Nativefier——快速将网站打包成桌面程序

Nativefier简介

Nativefier是一个命令行工具,仅仅通过一行代码就可以轻松地为任何的网站创建桌面应用程序,应用程序通过Electron打包成系统可执行文件(如.app, .exe等),可以运行在Windows,Mac和Linux系统上。

Github地址:https://github.com/jiahaog/nativefier ,目前有1.8万的Star,是一个非常赞的开源项目。…

node 调用php接口,node.js 怎么访问一个php接口?

可以的,以GET请求为例

var http = require('http'); //调用 https接口,请用require('https');

var qs = require('querystring');

var data = {

a: 123,

time: new Date().getTime()};//这是需要提交的数据

var content = qs.stringify(data);

var options = {

hostname: '127.0.0.1',

port: 10086,

path: '/pay/pay_callback?' + content,

method: 'GET'

};

var …