Ubuntu 18.04 rc.local systemd设置

ubuntu18.04不再使用initd管理系统,改用systemd。

然而systemd很难用,改变太大,跟之前的完全不同。

使用systemd设置开机启动
为了像以前一样,在/etc/rc.local中设置开机启动程序,需要以下几步:

1、systemd默认读取/etc/systemd/system下的配置文件,该目录下的文件会链接/lib/systemd/system/下的文件。一般系统安装完/lib/systemd/system/下会有rc-local.service文件,即我们需要的配置文件。
链接过来:

ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service  
cd /etc/systemd/system/  
cat rc-local.service  

rc-local.service内容

#  SPDX-License-Identifier: LGPL-2.1+  
#  
#  This file is part of systemd.  
#  
#  systemd is free software; you can redistribute it and/or modify it  
#  under the terms of the GNU Lesser General Public License as published by  
#  the Free Software Foundation; either version 2.1 of the License, or  
#  (at your option) any later version.  

# This unit gets pulled automatically into multi-user.target by  
# systemd-rc-local-generator if /etc/rc.local is executable.  
[Unit]  
Description=/etc/rc.local Compatibility  
Documentation=man:systemd-rc-local-generator(8)  
ConditionFileIsExecutable=/etc/rc.local  
After=network.target  

[Service]  
Type=forking  
ExecStart=/etc/rc.local start  
TimeoutSec=0  
RemainAfterExit=yes  
GuessMainPID=no  

[Install]  
WantedBy=multi-user.target  
Alias=rc-local.service  

1) [Unit] 区块:启动顺序与依赖关系。

2) [Service] 区块:启动行为,如何启动,启动类型。

3) [Install] 区块,定义如何安装这个配置文件,即怎样做到开机启动。

2、创建/etc/rc.local文件

touch /etc/rc.local  

3、赋可执行权限

chmod 755 /etc/rc.local  

4、编辑rc.local,添加需要开机启动的任务

#!/bin/bash  

echo "test rc " > /var/test.log  

5、执行reboot重启系统,然后查看test.log

Ubuntu下RabbitMQ的安装与配置

最近在研究RabbitMQ,本文简单记录了如何搭建与配置一个RabbitMQ服务器。

安装RabbitMQ

rabbitmq-server是可以在Ubuntu系统与Debian系统中使用的RabbitMQ服务器。在Ubuntu标准的repositories中,其实包含了rabbitmq-server,但是标准仓库中的版本往往非常的老旧,直接安装的话会得到的可能不是你想要的版本,所以想安装新版本,我们需要一些额外的工作。这里主要介绍了Ubuntu下通过apt-get的方法安装最新版本,如果想了解更多的安装方法,可以看这里

安装前提

由于RabbitMQ需要基于Erlang/OTP,所以在安装RabbitMQ之前需要先安装Erlang/OTP。同样的,在Ubuntu标准的repositories中,Erlang/OTP的版本很老,推荐不要直接安装在Ubuntu标准的repositories中Erlang/OTP,而是安装新版本。

安装Erlang

添加地址

首先执行下面两个命令,添加Erlang自己的仓库地址到你本地。

wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
sudo dpkg -i erlang-solutions_1.0_all.deb

或者你可以手动添加仓库地址至本地。 添加下面代码至你本地/etc/apt/sources.list中,注意把下面的{distribution}(包括大括号)替换成你自己系统的distribution。

deb https://packages.erlang-solutions.com/ubuntu {distribution} contrib

如果不知道自己系统的distribution是什么,可以输入lsb_release -c查看,我自己的系统是Ubuntu16.04,对应的distribution是xenial,所以我添加进/etc/apt/sources.list的命令是

deb https://packages.erlang-solutions.com/ubuntu xenial contrib

下一步用下面的命令来添加Erlang公钥

wget https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc
sudo apt-key add erlang_solutions.asc

开始安装Erlang

用下面的命令刷新本地apt-get仓库的缓存,然后安装Erlang。

sudo apt-get update
sudo apt-get install erlang

至此,Erlang安装完毕,如果想了解更多Erlang/OTP的安装方法,可以看这里

安装rabbitmq-server

添加rabbitmq仓库地址

同样的下面的像上文所说的一样将下面的{distribution}(包括大括号)替换成你自己系统的distribution。

echo "deb https://dl.bintray.com/rabbitmq/debian {distribution} main" | sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list

添加rabbitmq仓库公钥

wget -O- https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc | sudo apt-key add -

用下面的命令刷新本地apt-get仓库的缓存,然后安装rabbitmq-server。

sudo apt-get update
sudo apt-get install rabbitmq-server

至此rabbitmq-server安装完毕。

运行与配置RabbitMQ

运行RabbitMQ

在RabbitMQ安装包安装完后,服务器默认是会在后台通过一个没有特权的用户rabbitmq来运行的,想要手动启动或者停止重启服务器,只需要像系统中别的启动命令一样就可以了

service rabbitmq-server start

常用端口

以下是官网上常用端口的介绍:

  • 4369: epmd, a peer discovery service used by RabbitMQ nodes and CLI tools
    5672, 5671: used by AMQP 0-9-1 and 1.0 clients without and with TLS

  • 25672: used for inter-node and CLI tools communication (Erlang distribution server port) and is allocated from a dynamic range (limited to a single port by default, computed as AMQP port + 20000). See networking guide for details.

  • 35672-35682: used by CLI tools (Erlang distribution client ports) for communication with nodes and is allocated from a dynamic range (computed as Erlang dist port + 10000 through dist port + 10010). See networking guide for details.

  • 15672: HTTP API clients and rabbitmqadmin (only if the management plugin is enabled)

  • 61613, 61614: STOMP clients without and with TLS (only if the STOMP plugin is enabled)

  • 1883, 8883: (MQTT clients without and with TLS, if the MQTT plugin is enabled

  • 15674: STOMP-over-WebSockets clients (only if the Web STOMP plugin is enabled)

  • 15675: MQTT-over-WebSockets clients (only if the Web MQTT plugin is enabled)

其中5672, 5671为消息队列常用的端口,15672为网页可视化管理所用的端口。

开启网页可视化管理

开启网页可视化管理很简单,首先需要开启RabbitMQ可视化管理插件,通过如下命令开启

“`
rabbitmq-plugins enable rabbitmq_management
““

然后访问http://server-name:15672/可以进入管理页面,默认账号密码都为guest,里面可以管理像创建用户,维护队列之类的功能,非常好用。 详细信息可以看https://www.rabbitmq.com/management.html

Ubuntu Docker 配置 Tomcat 和 Nginx 使用 HTTPS 访问

安装 Docker

使用脚本自动安装

curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun

更改镜像地址

  • 修改或新建 /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}

启动 Docker

sudo systemctl daemon-reload
sudo systemctl enable docker
sudo systemctl start docker

配置 Tomcat

启动 Tomcat 容器

docker pull tomcat
docker run --name tomcat -d -p 8080:8080 tomcat

修改 Tomcat Manager 应用

docker exec -it tomcat /bin/bash
  • 修改 webapps/manager/META-INF/content.xml,允许需要的IP访问,这里运行所有的IP访问
<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="^.*$" />
  <Manager sessionAttributeValueClassNameFilter="java.lang.(?:Boolean|Integer|Long|Number|String)|org.apache.catalina.filters.CsrfPreventionFilter$LruCache(?:$1)?|java.util.(?:Linked)?HashMap"/>
</Context>

配置 Tomcat 用户

  • 修改 conf/tomcat-user.xml,添加用户
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>

配置 Nginx

配置目录

  • 新建目录 /home/ubuntu/hellowood/dev/nginx/conf, /home/ubuntu/hellowood/dev/nginx/log, /home/ubuntu/hellowood/dev/nginx/certs
  • 下载并解压相应的Nginx证书文件到 /home/ubuntu/hellowood/dev/nginx/conf

添加 Nginx 配置

  • nginx.conf
server {
      listen 80;
      listen 443 ssl;
      server_name hellowood.com.cn;
      ssl_certificate /etc/nginx/certs/hellowood.com.cn_bundle.crt;
      ssl_certificate_key /etc/nginx/certs/hellowood.com.cn.key;
      location / {
        proxy_pass http://tomcat:8080;
      }
}

http://tomcat:8080: 将所有请求都转发到 tomcat 容器的 8080端口

启动 Nginx 容器

docker pull nginx 
docker run --name nginx -d -p 80:80 -p 443:443 
  --link tomcat:tomcat 
  -v /home/ubuntu/hellowood/dev/nginx/conf:/etc/nginx/conf.d  
  -v /home/ubuntu/hellowood/dev/nginx/log:/var/log/nginx  
  -v /home/ubuntu/hellowood/dev/nginx/certs:/etc/nginx/certs nginx

此时,访问相应的域名:http://hellowood.com.cn和https://hellowood.com.cn会显示Tomcat 的首页,配置完成

Ubuntu 16.04 LTS ssh安装和配置

第一步:获取root权限

sudo -i

根据提示输入密码

第二步:更新源列表

sudo apt-get update

第三步:安装ssh

sudo apt-get install openssh-server

第四步:配置ssh

gedit /etc/ssh/ssh_config

注释掉 PermitRootLogin without-password
加入 PermitRootLogin yes

第五步:启动ssh服务

service ssh start

温馨提示:ssh默认端口号为22

如何在Ubuntu上安装MySQL / MariaDB

本教程面向Ubuntu服务器,适用于Ubuntu的任何LTS版本,包括Ubuntu 14.04,Ubuntu 16.04,Ubuntu 18.04,甚至非LTS版本(如Ubuntu 17.10和其他基于Ubuntu的发行版)。我们在Ubuntu 16.04服务器上测试了这个。

在我们开始安装MySQL / MariaDB之前

一些要求和其他说明:

当涉及LAMP堆栈中的基本用法时,MySQL和MariaDB几乎完全相同。大多数命令是相同的,即使安装也是如此。选择一个并将其安装到您的LAMP堆栈中,我们将包含两者的说明。

你需要一个Ubuntu服务器来运行MySQL/MariaDB。

您需要root用户或具有sudo访问权限的用户访问服务器。以下命令全部由root用户执行,所以我们不必为每个命令添加’sudo’。如果您使用非root用户,则可能必须执行此操作。
如果您使用的是Windows,则需要启用SSH,如果您使用Ubuntu或MobaXterm等SSH客户端。

MySQL / MariaDB可能已经安装在您的服务器上。您可以通过输入“mysql”或“mariadb”来检查它们是否已安装,并且您应该根据输出结果来了解它们。

现在就是这样。 我们来看看我们的教程。

如何在Ubuntu上安装MySQL

我们将从MySQL开始。 如果您想安装MariaDB,请跳至MariaDB说明。

更新Ubuntu
首先,像往常一样,在你做任何事之前,通过运行以下命令来更新你的Ubuntu服务器:

apt-get update && apt-get upgrade

安装MySQL
然后,通过运行以下命令安装MySQL:

apt-get install mysql-server

该命令将安装MySQL服务器和客户端。 你会得到一个提示,为你的root用户输入一个密码。

而已。 MySQL已安装。 现在,您需要保护并配置它。

安全的MySQL
你应该运行mysql_secure_installation脚本来帮助你保护你的MySQL。

使用以下命令启动脚本:

mysql_secure_installation

并回应提示。 您可以使用每个提示的默认响应。

优化MySQL(仅限高级用户)
要优化你的MySQL,你可以使用MySQLTuner脚本。 它不会为你做所有的工作。 该脚本仅向您提供如何改进和优化MySQL的建议。

使用以下命令下载并运行脚本:

curl -L http://mysqltuner.pl/ | perl

并检查建议。 做一些研究和使用谷歌每个建议。 如果你不知道自己在做什么,请联系其他人,让他们为你做,或者跳过这个。

你也可以使用mysqlcheck来修复你的数据库。 您可以使用单个命令修复所有数据库:

mysqlcheck -A –auto-repair -u root -p

还有其他的优化可以在你的服务器和数据库上完成,如果你想进一步优化MySQL,你也可以自己做一些研究。

如何在Ubuntu上安装MariaDB

现在来看我们的MariaDB安装说明。

更新Ubuntu
首先,更新你的Ubuntu服务器:

apt-get update && apt-get upgrade

添加MariaDB存储库
在您可以安装MariaDB之前,您需要添加MariaDB存储库。

根据您的Ubuntu发行版,您可能需要运行不同的命令,因此请前往官方的MariaDB存储库页面,选择您的发行版并选择离您的服务器位置最近的镜像。 然后,复制你在页面上得到的命令。 我们使用Ubuntu 16.04.1并选择了美国镜像,因此我们将运行以下命令来添加存储库:

apt-get install software-properties-common
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
add-apt-repository 'deb [arch=amd64,i386,ppc64el] https://mirrors.evowise.com/mariadb/repo/10.1/ubuntu xenial main'

接下来,您需要再次更新您的软件包列表:

apt-get update

并转到安装MariaDB。

安装MariaDB
添加MariaDB存储库后,可以通过运行以下命令来安装它:

apt-get install mariadb-server

就是这样。 你已经在服务器上安装了MariaDB。

保护MariaDB
这与MySQL的过程相同。 使用以下命令运行安全脚本:

mysql_secure_installation

并按照提示进行操作。 您可以输入每个提示的默认值。 当然,使用强密码。

优化MariaDB(仅限高级用户)
同样,与MySQL相同,您可以使用MySQLTuner检查您的MariaDB并获取有关如何改进它的建议。 它不会为你做所有的工作。 该脚本仅向您提供如何改进和优化MariaDB的建议。

运行脚本:

curl -L http://mysqltuner.pl/ | perl

并检查建议。 做一些研究和使用谷歌每个建议。 如果你不知道自己在做什么,请联系其他人,让他们为你做,或者跳过这个。

Mysqlcheck也适用于MariaDB,因此要一次优化所有MariaDB数据库,请运行以下命令:

mysqlcheck -A --auto-repair -u root -p

您可以在服务器和数据库上进行其他优化,因此如果您想进一步优化MariaDB,请自行研究.

ubuntu 使用apt-get install 安装php5.6–php7

使用ppa增加源:

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo apt-get install -y php7.0 php7.0-mysql php7.0-curl php7.0-json php7.0-cgi

然后可以查看php版本:

php -v

关于php5.4–php5.6版本

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo apt-get -y install php5.6 php5.6-mcrypt php5.6-mbstring php5.6-curl php5.6-cli php5.6-mysql php5.6-gd php5.6-intl php5.6-xsl php5.6-zip

查看php7的扩展

sudo apt-cache search php7-* 

或者可以源码安装

1、下载php7的源码包
2、tar -zxvf 解压
3、安装一些依赖

sudo apt-get install php5-mcrypt libmcrypt-dev
sudo apt-get install libxslt-dev libxml2-dev

4、

/configure --prefix=/zhou.data/php/php7 --enable-maintainer-zts -with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-xsl --enable-zip --with-pear --enable-session --enable-xml --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc

5、

make && make install

6、如果报错,缺少哪些依赖,就一次安装即可

配置ufw防火墙,守护你的Ubuntu

起因

  很久以来许许多多人催促着我赶快配置好防火墙规则以保护vps,但是。。。配置繁琐的iptables使我望而却步(其实就是懒

直到我发现了ufw这个神器

UFW 全称为 UncomplicatedFirewall[1],是 Ubuntu 系统上默认的防火墙组件, 为了轻量化配置 iptables 而开发的一款工具。UFW 提供一个非常友好的界面用于创建基于IPV4,IPV6的防火墙规则。
废话不多说,上教程

环境

Ubuntu 16.04

安装

apt install ufw

配置

首先先打开ssh端口

ufw allow ssh

如果你的ssh端口不是默认的22,就

ufw allow 你的ssh端口

打开53端口,使dns功能不受影响

ufw allow 53/tcp

ufw allow 53/udp

可选:打开80,443端口

ufw allow http/tcp

ufw allow https/tcp

然后

ufw default deny

阻断除上述规则外的外部连接(本机外发流量无影响)

ufw enable

启动防火墙,done!

操作指令

  • 启动防火墙 ufw enable
  • 关闭防火墙 ufw disable
  • 更新配置 ufw reload
  • 查看防火墙状态 ufw status

Ubuntu配置SVN,完成自动部署

下面简单记录设置SVN和部署的操作:

1. 安装

apt-get install subversion libapache2-svn

我的服务器上Apache老早就安装过了。如果你的服务器上还没有安装,可以执行:

apt-get install apache2

完成安装之后,Apache的mod_dav_svn默认就是已经启用的了。

2. 创建代码仓库文件夹

这里我把代码集中放在了/var/svn/,先创建这个文件夹:

cd /var/
mkdir svn

3. 修改dav_svn模块配置文件

cd /etc/apache2/mods-enabled/

编辑文件dav_svn.conf ,去掉一些注释符号,修改SVNParentPath路径为上面我们创建的/var/svn/:

vi dav_svn.conf

最终的内容大约是:

<Location /svn>
DAV svn
SVNParentPath /var/svn/
AuthType Basic
AuthName “Subversion Repository”
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>

4. 生成认证所需要的密钥文件

上面的AuthUserFile选项对应的文件需要我们自己创建。
我为自己和小连各创建一个账号:

sudo htpasswd -cm /etc/apache2/dav_svn.passwd someone
sudo htpasswd /etc/apache2/dav_svn.passwd someone-else

完成上面的操作之后,让apache重新读入一下配置:

service apache2 reload

这个时候,直接访问http://www.fachun.net/svn,就可以看到要求输入用户名、密码了。
认证之后,会出现一个403 Forbidden,因为我们还未创建repository。

5. 创建repository

cd切换到/var/svn/目录下,再执行:

svnadmin create musicapp

就会在目录下生成musicapp文件夹,这个文件夹下包含了.svn子文件夹。接着修改musicapp文件夹属主,让www-data可读写:

chown -R www-data musicapp
chmod -R g+rws musicapp

好了,现在已经可以开始使用svn了。

6. 安装客户端,checkout到本地

现在我的开发环境是windows,下载安装客户端:
http://tortoisesvn.net/downloads.zh.html
将 http://www.fachun.net/svn/musicapp/ checkout到 E:Pythondjangomusicmusicapp
结束后,添加原有的代码文件再commit。
如此,代码库中就拥有了我最新的完整源代码。

7. 简单的自动部署

我的要求不多,当有人修改或提交了文件,能立即在web上生效。
可以通过在版本库中创建post-commit脚本来实现。
每次我们提交了更改,post-commit脚本都会被自动执行。
比如在我的版本库中,该文件就应该位于 /var/svn/musicapp/hooks/文件夹下,它的内容是:

#!/bin/bash
svn export –force –no-auth-cache –username=someone –password=hispassword <a href="http://www.fachun.net/svn/musicapp" target="_blank">http://www.fachun.net/svn/musicapp</a> /var/www/somewhere/to/place/musicapp
exit 0

http://www.fachun.net/svn/musicapp是repository的地址。
/var/www/somewhere/to/place/musicapp是web应用的存放路径。
–no-auth-cache选项是必须的,否则脚本无法执行成功,svn命令会询问你是否保存密码。
在上传这个post-commit文件之后,请记得为其添加权限:

chmod +x post-commit
chown www-data post-commit

脚本中还可以添加其他内容,比如service apache2 reload,在部署django代码的时候,就可以让修改立即生效。

ubuntu下安裝nodejs最省心的方法

ubuntu的方法很多,apt里面非常旧里,还是4.x的;

源码解压编译其实并不省心,

我是这么安装

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

如果安装nodejs 9.x版本

curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
sudo apt-get install -y nodejs

1感觉这种方法还是非常ok的r;

首先需要下载WebStrom的Linux安装包,地址如下:

https://www.jetbrains.com/webstorm/download/
然后运行如下命令解压并安装并运行WebStorm:

1、解压缩

sudo tar xfz ~/Downloads/WebStorm-16.2.3.tar.gz

2、解压文件移动到/opt下

sudo mv ~/Downloads/WebStorm-162.2228.20 /opt/

3、进入到此文件夹中:

cd /opt/WebStorm-162.2228.20/bin/

4、启动webstorm:

sudo sh webstorm.sh

参考

注册时,在打开的License Activation窗口中选择“License server”,在输入框输入下面的网址:

http://idea.codebeta.cn

Ubuntu安装php curl扩展

1、使用apt-cache搜索curl

sudo apt-cache search curl

在搜索结果里找到类似:

php5.6-curl - CURL module for PHP
php7.1-curl - CURL module for PHP

2、使用apt-get安装

选择php对应版本的curl,使用apt-get安装:

sudo apt-get install php7.1-curl

3、安装完成后重启相关服务,如php,apache