Docker中运行DCM4CHEE-arc-light
在Docker中安装DCM4CHEE-arc-light项目。
因为需要进行测试所以使用了DCM4CHEE, 但是DCM4CHEE现在的版本已经很古老了, 从而我接触了两个古老的PACS程序, 一个是Windows平台上有名的ClearCanvas, 还有一个就是DCM4CHEE。在安装的过程中遇到了很多的麻烦。 看到官方有把项目放在docker上, 所以决定直接使用。直接记录了所有的组件启动的方式和命令, 方便今后的查阅。
DCM4CHEE-arc-light是目前比较新项目了,我这里写下了最小的安装模式, 基本上足够我日常测试使用了。
这几个Docker容器是:
Docker
docker网桥
DAOCloud加速器
OpenLDAP
PostgreSQL数据库
DCM4CHEE-arc-light本体
DCM4CHEE_Docker_Command
Install Docker component:
dnf install -y docker
Create the dcm4chee bridge network:
docker network create dcm4chee_default
DAOCloud加速器配置docker:
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1dac9f0.m.daocloud.io
Start OpenLDAP Server:
docker run --network=dcm4chee_default --name ldap \
-p 389:389 \
-v /etc/localtime:/etc/localtime:ro \
-v /var/local/dcm4chee-arc/ldap:/var/lib/ldap \
-v /var/local/dcm4chee-arc/slapd.d:/etc/ldap/slapd.d \
-d dcm4che/slapd-dcm4chee:2.4.44-13.2
Start PostgreSQL:
docker run --network=dcm4chee_default --name db \
-p 5432:5432 \
-e POSTGRES_DB=pacsdb \
-e POSTGRES_USER=pacs \
-e POSTGRES_PASSWORD=pacs \
-v /etc/localtime:/etc/localtime:ro \
-v /var/local/dcm4chee-arc/db:/var/lib/postgresql/data \
-d dcm4che/postgres-dcm4chee:10.0-13
Start Wildfly With DCM4CHEE Archive 5:
docker run --network=dcm4chee_default --name arc \
-p 8080:8080 \
-p 8443:8443 \
-p 9990:9990 \
-p 11112:11112 \
-p 2575:2575 \
-e POSTGRES_DB=pacsdb \
-e POSTGRES_USER=pacs \
-e POSTGRES_PASSWORD=pacs \
-e WILDFLY_WAIT_FOR="ldap:389 db:5432" \
-v /etc/localtime:/etc/localtime:ro \
-v /var/local/dcm4chee-arc/wildfly:/opt/wildfly/standalone \
-d dcm4che/dcm4chee-arc-psql:5.13.2
Start the three applications use on command:
docker start ldap db arc
Stop the three application:
docker stop ldap db arc
附加说明:Host 说明:dcm4chee_docker: 11.11.11.209/dcm4chee-arc/ui2
Github Project DCM4CHEE-arc-light Note
HL7 Relative Features
Weasis Integrationhttps://github.com/dcm4che/dcm4chee-arc-light/wiki/Weasis-Viewer-Integration
安装Maven教程
安装Maven过程,备忘。
下载安装包
Maven Download Links
解压安装包:tar xzvf apache-maven-3.5.4-bin.tar.gz
设置环境变量: vim /etc/profile export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.5 export M2=$M2_HOME/bin export MAVEN_OPTS=-Xms256m -Xmx512m
添加环境变量到PATH: export PATH=M2:PATH
Docker基本命令说明
docker基础命令的说明。
Docker常用命令的说明Docker Pull\ 下载一个Image
[root@localhost ~]# docker pull nginx:lastest
Using default tag: latest
Trying to pull repository docker.io/library/nginx ...
sha256:0fb320e2a1b1620b4905facb3447e3d84ad36da0b2c8aa8fe3a5a81d1187b884: Pulling from docker.io/library/nginx
Digest: sha256:0fb320e2a1b1620b4905facb3447e3d84ad36da0b2c8aa8fe3a5a81d1187b884
Status: Image is up to date for docker.io/nginx:latest
Docker Push\ 上传一个Image
Docker Run\ 启动一个Container
[root@localhost ~]# docker run nginx
Docker Kill\ 结束一个Container
[root@localhost ~]# docker kill flamboyant_thompson
Docker System Prune\ 清理Docker的无用文件,包括未使用的容器和不具有Dangling的镜像(不具有启动能力的Image)
Docker Images\ 列出所有的docker images
[root@localhost ~]# docker images
ONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1cca834eb80c nginx "nginx -g 'daemon ..." 57 seconds ago Up 56 seconds 80/tcp flamboyant_thompson
769aefe85e29 achabill/lh-toolkit "dockerize -wait t..." 3 hours ago Up 3 hours 0.0.0.0:8080->8080/tcp sad_payne
93431e5f2f66 achabill/lh-mysql:latest "docker-entrypoint..." 3 hours ago Up 3 hours 0.0.0.0:3308->3306/tcp brave_mcclintock
Docker search\ 搜索特定名称的image
[root@localhost ~]# docker search nginx
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/nginx Official build of Nginx. 8564 [OK]
docker.io docker.io/nginx Official build of Nginx. 8564 [OK]
docker.io docker.io/jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 1334 [OK]
docker.io docker.io/jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 1334 [OK]
docker.io docker.io/richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 547 [OK]
docker.io docker.io/richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 547 [OK]
docker.io docker.io/jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as... 367 [OK]
docker.io docker.io/jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as... 367 [OK]
docker.io docker.io/kong Open-source Microservice & API Management ... 187 [OK]
docker.io docker.io/kong Open-source Microservice & API Management ... 187 [OK]
docker.io docker.io/webdevops/php-nginx Nginx with PHP-FPM 103 [OK]
docker.io docker.io/webdevops/php-nginx Nginx with PHP-FPM 103 [OK]
docker.io docker.io/kitematic/hello-world-nginx A light-weight nginx container that demons... 98
docker.io docker.io/kitematic/hello-world-nginx A light-weight nginx container that demons... 98
docker.io docker.io/bitnami/nginx Bitnami nginx Docker Image 50 [OK]
docker.io docker.io/bitnami/nginx Bitnami nginx Docker Image 50 [OK]
docker.io docker.io/zabbix/zabbix-web-nginx-mysql Zabbix frontend based on Nginx web-server ... 50 [OK]
docker.io docker.io/zabbix/zabbix-web-nginx-mysql Zabbix frontend based on Nginx web-server ... 50 [OK]
docker.io docker.io/1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 35 [OK]
docker.io docker.io/1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 35 [OK]
docker.io docker.io/linuxserver/nginx An Nginx container, brought to you by L ...
Systemd 关闭 Firewalld
如何彻底关闭 Fedora27 的 Firewalld,防止每次重启自动开启。
如何彻底关闭 Fedora27 的 FirewalldFedora 的 Firewalld,每次重启都会自动启动,不会彻底关闭,我们需要特殊的方式来关闭。
直接移除 dnf remove firewalld
指向不存在的设备 systemctl mask firewalld
# 表示直接将这个服务指向了/dev/null,无法启动也无法被其他的程序直接调用。
systemctl disable firewalld
# 开机的时候不会自动启动,但是接受其他的服务调用并启动。
配置 rc.local 服务
新建rc.local文件。 vim /etc/rc.d/rc.local
写入需要开机启动的命令或者脚本。 #!/bin/bash
echo "Autostart..."
/usr/bin/firefox
启动服务,配置开机自启。systemctl enable --now rc-local.service
Orthanc的安装
记录了Orthanc的安装过程。只有简单的安装,复杂没研究,待补全。Orthanc是一个开源的DICOM Server,支持RESTful API,是轻量级的DICOM Server,默认基于数据库SQLlite,同时也支持PostgreSQL。
准备工作 平台:Fedora OR Windows
安装Orthanc快速部署Fedora集成的RPM包Fedora提供的BuildVersion下载到本地之后:执行
dnf install -y orthanc*
systemctl enable orthanc
systemctl start orthanc
iptables -A INPUT -p tcp --dport 8042 -j ACCEPT
iptables -A INPUT -p tcp --dport 4242 -j ACCEPT
iptables-save
安装结束。
Windows一键安装包Windows安装包下载地址直接下载之后运行即可。
DISM的备份与还原
DISM的备份与还原主要是用了Win8之后微软同步发行的系统映像管理工具.之前维护 Windows Server 的时候有用到这些东西, 这些都是之前记录的笔记。已经很久没有更新了,可能内容会过时。
DISM 命令选项和用法/Append-Image
进行映像的附加,更新,对比原有的文件内容进行增量更新。
*示例:*
对映像的增量更新 Dism /Append-Image /ImageFile:install.wim /CaptureDir:D:\ /Name:Drive-D
/Apply-Image
将映像应用于指定的驱动器。
*示例:*
单一wim文件的恢复 Dism /apply-image /imagefile:install.wim /index:1 /ApplyDir:D:\
拆分多个映像文件的恢复 Dism /apply-image /imagefile:install.swm /swmfile:install*.swm /index:1 /applydir:D:\
/Capture-Image
将某个驱动器的映像捕捉到新的 .wim 文件。捕捉的目录包括所有子文件夹和数据。不能捕捉空目录。目录必须至少包含一个文件。
*示例:*
生成.wim备份文件到当前目录下 Dism /Capture-Image /ImageFile:install.wim /CaptureDir:D:\ /Name:Drive-D
/Commit-Image
对已经装载的映像进行确认提交。
*示例:*
对已经挂载的镜像文件进行确认 Dism /Commit-Image /MountDir:C:\test\offline
/Delete-Image
从包含多个映像卷的.wim文件中删除指定的映像。
*示例:*
删除指定的映像卷 Dism /Delete-Image /ImageFile:install.wim /Index:1
/List-Image
显示指定卷映像中的文件和文件夹列表。
*示例:*
列出镜像中文件夹列表 Dism /List-Image /ImageFile:install.wim /Index:1
/Split-Image
将现有的 .wim 文件拆分为多个只读的拆分 .wim 文件。
*示例:*
分割并指定分卷大小 Dism /Split-Image /ImageFile:install.wim /SWMFile:split.swm /FileSize:650
/Mount-Image
将wim映像挂载到某个目录下
*示例:*
可读写模式 Dism /Mount-Image /ImageFile:C:\test\images\myimage.wim /index:1 /MountDir:C:\test\offline
只读模式 Dism /Mount-Image /ImageFile:C:\test\images\myimage.vhd /index:1 /MountDir:C:\test\offline /ReadOnly
只读更改为可读写 Dism /Remount-Image /MountDir:C:\test\offline
常规处理流程
捕捉影像并且保存为.wim文件
列出.wim .vhd .vhdx文件中的所有文件
准备一个winPE
进行备份镜像的还原
Cacti的安装教程
当时记录Cacti的安装记录。
安装环境OS : CentOS 7 Server Everything – Minimal VersionRequired Packages : LAMP, RRDTool
部署基础组件
安装Apache命令如下:
yum install -y httpd httpd-devel
dnf install -y httpd httpd-devel
安装MySQL命令如下:
yum install -y mysql mysql-server
dnf install -y mysql mysql-server
OR
yum install -y Mariadb-server
dnf install -y Mariadb-server
安装PHP命令如下:
yum install -y php-mysql php-pear php-common php-gd php-devel php php-mbstring php-cli
dnf install -y php-mysql php-pear php-common php-gd php-devel php php-mbstring php-cli
安装PHP-SNMP命令如下:
yum install -y php-snmp
dnf install -y php-snmp
安装NET-SNMP命令如下:
yum install -y net-snmp-utils net-snmp-libs net-snmp
dnf install -y net-snmp-utils net-snmp-libs net-snmp
如果需要安装Spine,需要安装net-snmp-devel
yum install -y net-snmp-devel
dnf install -y net-snmp-devel
安装RRDTool命令如下:
yum install -y rrdtool
dnf install -y rrdtool
开始所有的服务:命令如下:
service httpd start
service mysqld start OR service mariadb start
service snmpd start
OR
systemctl start httpd.service
systemctl start mariadb.service
systemctl start snmpd.service
调整服务开机启动:
chkconfig httpd on
chkconfig mysqld on
chkconfig snmpd on
OR
systemctl enable httpd.service
systemctl enable mariadb.service
systemctl enable snmpd.service
开启EPEL REPO & 安装Cacti
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
yum makecache
所有的安装内容已经部署完毕。
进行配置
配置MySQL的root密码
mysqladmin -u root password YOURSELF_PASSWORD
创建Cacti的数据库
mysql -u root -p
mysql> create database cacti;
mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTITFIED BY 'YOURSELF_PASSWORD';
mysql> FLUSH PRIVILEGES;
mysql> quit;
MySQL-数据库初始化
rpm -ql cacti | grep cacti.sql
mysql -u cacti -p cacti < /usr/share/doc/cacti/cacti.sql
命令发起后需要进行密码的输入
Cacti-读取数据库配置
vim /etc/cacti/db.php
需要编辑的内容如下:
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "YOURSELF_PASSWORD";
$database_port = "3306";
$database_ssl = false;
Firewall-配置放行防火墙
iptables -A INPUT -p udp -m state --state NEW --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT
iptables save
OR
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload
Apache- 配置Cacti根目录
vim /etc/httpd/conf.d/cacti.conf
配置文件内的内容修改如下:
<Directory /usr/share/cacti/>
Order Deny,Allow
Deny from all
Allow from all
</Directory>
重启服务:
service httpd restart
OR
systemctl restart httpd.service
Crond-配置Poller的计划任务
vim /etc/cron.d/cacti
*/5 * * * * cacti /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1 \\ 去掉注释
启动Broswer,进入Cacti安装界面,http://IPADDRESS/Cacti, 之后按照说明继续即可。
Default Username : adminDefault Password : admin
补充安装SPINE过程
下载源文件,安装程序。
安装CentOS,Development Tool,yum group install。
在Spine的目录下,执行./configure && make && make install。NOTE: 这里出现了的问题,提示找不到net-snmp header file—>没有安装net-snmp-devel
进入控制台进行Spine是否安装成功。
Linux-电话面试
就在刚刚经历了电话面试,快速回忆问我的问题,记下:
linux中top命令的用途?top命令中load参数的详细概念问题问的我当时没反应过来,说的是top命令中第一行的那个load average,一共有三个值,三个值分别显示了一分钟,五分钟,十五分钟的系统负载情况,一般不会超过1,超过5认为是超负荷运转。
邮件服务器使用的协议?使用SMTP协议,IMAP协议
发送邮件的协议和端口号:SMTP协议端口号为:25和465
接受邮件的协议和端口号:POP3协议端口号为:110和995IMAP协议端口号为:143和993
windows的故障转移集群是否用过?keepalived使用什么协议实现检测心跳?keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
keepalived主从服务器的选举细节?Keepalived是一个基于VRRP协议来实现的WEB 服务高可用方案,可以利用其来避免单点故障。一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
keepalived原理?脑裂问题使用ping网关的方式不能完美解决?设置主从ping网关,如果没有ping通认为自己的网络出问题,重启服务。面试官提示我正确的处理方式应该是,如果ping不通应该主服务器重启服务,从服务器直接关闭自己的对外服务。
LVS的负载均衡模式,和转发请求模式?目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR)八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。
web服务器如何将不同站点配置在同一个IP上?虚拟主机配置多个站点的区分方式?ip和端口
free命令中cache和buffer的区别?
A buffer is something that has yet to be “written” to disk. A cache is something that has been “read” from the disk and stored for later use.
对于计算机来讲cache 和 buffer的区别:
Cache:高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache。
Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。
*Free中的buffer和cache:(它们都是占用内存)
buffer: 作为buffer cache的内存,是块设备的读写缓冲区
cache: 作为page cache的内存, 文件系统的cache
如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO 必会非常小。
windows中手动计算的内存使用值,和任务管理器中显示出来的值相差巨大?windows隐藏了类似linux中的cache和buffer,windows10在任务管理器中已经开始显示cache了
Linux-进程管理笔记
进程的优先级说明
优先级越高的进程就能够获得更多的CPU运行时间
能够更优先的获得运行的机会
优先级的调整
用户可以调整的优先级(priority)范围是100-139每一个进程都有一个nice值, nice值是从-20到19,分别对应100-139
可以调整进程自己的nice值,来调整优先级
nice值越小,优先级越高
默认情况下每个进程的优先级都是0
如果有进程的优先级是3,就说明该进程降低了自己的优先级,普通用户只能调大nice值,管理员可以随意调整
PID(process ID):进程号Init进程每一个进程都有父进程,除了init,init是所有进程的父进程init的进程号永远为1
其他进程进程的相关属性信息在/proc目录下,每一个目录对应一个进程每一个进程的进程号都是唯一的,即使进程退出了,进程的号码一般不会被占用访问到的都是内核的映射。不是文件,是内核参数进程号文件夹中的文件记载了进程运行的命令,内存,使用的cpu等等
进程的分类
与终端有关的进程
与终端无关的进程
进程状态表
标识符
描述
D
不可中断的睡眠
R
运行或就绪
S
可中断的睡眠
T
停止
Z
僵死
<
高优先级的进程
N
低优先级的进程
+
前台进程组中的进程
l
表示多线程进程
s
会话进程的首进程(领导者进程)
进程查看命令ps命令 显示进程状态,多种使用风格,unix的两大阵营,BSD风格(不加-),SYSV风格(加-)
Example: ps -aux
参数说明-BSD风格a:BSD风格,显示所有与终端有关的进程,与x一起用显示所有u:能够显示详细的信息x:BSD风格,显示所有与终端无关的进程
Ps命令输出信息的说明单独查看Firefox进程的例子
[root@localhost Liarlee]# ps -aux | grep firefox
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1915 5.7 6.9 9324108 570096 tty2 Sl+ 11:23 2:00 /usr/lib64/firefox/firefox
说明表格
USER
PID
%CPU
%MEM
RSS
VSZ
TTY
START
STAT
TIME
COMMAND
进程发起者
进程号
使用cpu百分比
使用内存的百分比
常驻内存集
虚拟内存集
控制台关联
启动时间
状态
运行时间
哪一个命令启动的进程
[]表示是一个内核线程,不是一个用户进程
另一个风格-SYSV风格-e SYSV风格,显示所有的进程-F 额外的完全格式,显示更多的字段-l 长格式
PRI:优先级NI:nice值SZ:sizePSR:正在运行在那个CPU
ps -o 指定显示的字段,ps 不加参数只显示前台进程,一般使用ps -axo例:ps -axo comm,pid,niman文档中有单独的说明-o可以指定那些字段
Pstree进程树pgrep 查找符合某种特性的进程 例: pgrep bash pgrep -u root bash 以root用户为属主运行的bash进程 只显示进程号,不显示进程的名称 -u euid 有效ID -U uid 进程发起者ID
pidof 查看某一个进程名字对应得进程号 pidof init | pidof sshd | pidof crond
Top关于top显示信息的说明 当前系统时间 , up运行时长,登陆用户,平均负载(平均队列长度,队列长度越小cpu负载越低)。
所有的进程数量,正在运行的进程数量,多少个睡眠进程,多少个僵尸进程
每个cpu负载,默认是多颗cpu平均负载,数字1,表示展开查看。
us : 用户空间占用的
sy: 运行在系统占据了多少
ni:nice值影响的cpu比例
id: 空闲的百分比
wa: 等待IO完成的百分比,占据的时间
hi :中断占据的百分比
si : 软中断的时间
st : 被偷走的时间
内存的使用
交换的使用
默认使用cpu百分比排序
Top交互式的子命令 M:使用内存百分比排序
P: 使用cpu百分比排序
T: 占用cpu时间排序
l:不显示平均负载启动时间
t:不显示进程和cpu负载
m:不显示关于内存和交换的信息
c: 是否显示完整的命令行
q: 退出top
k: 杀死某个进程
更改top命令的选项: -d 更改刷新是时常
-b 批处理模式 会刷新一次,刷新出一屏
-n 3 : 批处理模式只显示多少次
进程间通信:进程之间彼此不能感受到彼此的存在,因此进程间的通信有几种机制:
IPC进程间通信,unix中非常常用的机制,inter process Communication 共享内存 信号:signal semaphore
手动控制进程间通信: Kill kill -l 显示所有的kill信号
1 sighup 让一个进程不重启,重读配置文件,让文件的新配置生效
2 sigint 中断一个进程,ctrl c 就是发送了 2 信号
9 sigkill 杀死一个进程 , 强行关闭 , 没有任何余地
15 sigterm 中止一个进程
指定发送信号: kill -1 kill -sigkill kill -kill
杀死所有某个名字的进程:killall command
调整运行中进程的优先级 renice 进程优先级 进程号
renice 3 3704
nice -n nice值 命令
其他vmstat vmstat 1 每一秒显示一次
pkill 类似于 pgrep
bg 把前台的作业放入后台 bg 【%】jobid 可以指定执行某一个作业 默认执行+ 作业jobs 查看后台的所有作业 作业号不同于进程号 如果进程上有+ 号 说明接下来将要继续操作的作业 如果进程上有-好 说明执行完+的作业之后再执行-号作业
fg 将后台的作业放入前台 ,用法类似于bg
如果杀死某些作业 , kill %2 杀死作业2
Nginx编译安装
很久之前的笔记了,发出来,做编译安装Nginx的时候记录的……包括安装命令和脚本……
安装nginx服务器
下载zlib,pcre,nginx
安装zlib[root@localhost Liarlee]# cd zlib-[version][root@localhost Liarlee]# ./configure --prefix=/usr/local/zlib
安装pcre[root@localhost Liarlee]# cd pcre-[version][root@localhost Liarlee]# ./configure --prefix=/usr/local/pcre
安装nginx[root@localhost Liarlee]# cd nginx-[version][root@localhost Liarlee]# ./configure --prefix=/usr/local/nginx
安装完成
配置Sys V 脚本:#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
sleep 1
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
补充一些
在编译安装的nginx中,可能没有conf.d目录,只要自己的nginx的配置文件中, http字段下添加include /etc/nginx/conf.d/*.conf 就可以使用conf.d目录进行不同站点独立配置文件的配置了。
Nginx可以支持同样使用80端口, 但是使用不同域名进行站点的发布。之前没有确切的试过,今天确实碰到了这个问题,记录下来。 在配置文件中,使用不同的server {}字段,定义不同的server_name , 两个站点可以同时listen在80 端口上。访问的时候不同的域名会直接访问到不同的目录。Over.