우리 사업을 위해 몇 가지 응용 프로그램을 호스팅하는 데 사용할 컴퓨터에 OS를 다시 설치하는 중입니다. 응용 프로그램은 로컬 전용입니다. 외부 클라이언트로부터의 액세스는 VPN을 통해서만 이루어집니다.
이전 설정에서는 대부분의 관리자가 호스팅 제어판 (Plesk)을 사용했으며 다시 설치하는 데 비슷한 소프트웨어를 사용하는 것을보고 있었지만 결국 모든 작동 방식을 배워야한다는 것을 알았습니다. 나는 소프트웨어가 나를 위해 할 수있는 대부분의 일을 할 수 있지만, 그 모든 것의 공생에 대해서는 확실하지 않다. 이것은 가능한 경우 Configuration Programmer / Programmer 의 땅에서 멀어 지려고 시도하는 것 입니다.
나는 내가 찾고있는 곳 어디에서나 전체 연습을 찾을 수 없으므로이 질문을 넣을 것이라고 생각했고 사람들이 나를 도울 수 있다면 대답으로 편집하고 진행 상황을 문서화 할 것입니다. 함정. 바라건대 언젠가 이것이 누군가를 도울 수 있기를 바랍니다.
세부 사항 :
- CentOS 5.5 x86_64
- httpd : 아파치 /2.2.3
- MySQL : 5.0.77 (업그레이드 예정)
- PHP : 5.1 (업그레이드 예정)
요구 사항:
- 보안!!
- 안전한 파일 전송
- 안전한 클라이언트 액세스 (SSL 인증서 및 CA)
- 안전한 데이터 저장
- 다른 로컬 컴퓨터 (MySQL)에 안전하게 연결
- 가상 호스트 / 여러 하위 도메인
- 로컬 이메일은 좋지만 중요하지는 않습니다.
단계들:
진행하는 동안 다른 Plesk와 유사한 관리자를 사용한다고 생각하는 서버 구성 요소 옵션을 확인했습니다. 내 생각에, 나는 내 자신의 길을 가기로 결정했다는 것을 고려할 때, 이것은 아마도 최고의 아이디어는 아니 었습니다.
설정 사용자, 네트워킹 / IP 주소 등 Yum 업데이트 / 업그레이드.
업그레이드 : PHP와 MySQL을 최신 버전으로 업그레이드하려면 CentOS 외부의 다른 리포지토리를 찾아야했습니다. IUS는 멋져 보이고 그것을 발견해서 기쁘다!
패키지 관리자에 IUS 저장소 추가
cd /tmp
wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-1-1.ius.el5.noarch.rpm
rpm -Uvh epel-release-1-1.ius.el5.noarch.rpm
wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1-4.ius.el5.noarch.rpm
rpm -Uvh ius-release-1-4.ius.el5.noarch.rpm
yum list | grep -w \.ius\. # list all the packages in the IUS repository; use this to find PHP/MySQL version and libraries you want to install
이전 버전의 PHP를 제거하고 IUS에서 최신 버전을 설치하십시오.
rpm -qa | grep php # to list all of the installed php packages we want to remove
yum shell # open an interactive yum shell
remove php-common php-mysql php-cli #remove installed PHP components
install php53 php53-mysql php53-cli php53-common #add packages you want
transaction solve #important!! checks for dependencies
transaction run #important!! does the actual installation of packages.
[control+d] #exit yum shell
php -v
PHP 5.3.2 (cli) (built: Apr 6 2010 18:13:45)
IUS 저장소에서 MySQL 업그레이드
/etc/init.d/mysqld stop
rpm -qa | grep mysql # to see installed mysql packages
yum shell
remove mysql mysql-server #remove installed MySQL components
install mysql51 mysql51-server mysql51-devel
transaction solve #important!! checks for dependencies
transaction run #important!! does the actual installation of packages.
[control+d] #exit yum shell
service mysqld start
mysql -v
Server version: 5.1.42-ius Distributed by The IUS Community Project
IUS 위키의 업그레이드 지침 사의 씨 http://wiki.iuscommunity.org/Doc/ClientUsageGuide .
scp
및 제공sftp
ssh
cd /tmp
wget http://dag.wieers.com/rpm/packages/rssh/rssh-2.3.2-1.2.el5.rf.x86_64.rpm
rpm -ivh rssh-2.3.2-1.2.el5.rf.x86_64.rpm
useradd -m -d /home/dev -s /usr/bin/rssh dev
passwd dev
/etc/rssh.conf
rssh 사용자에게 SFTP에 대한 액세스 권한을 부여하도록 편집하십시오 .
vi /etc/rssh.conf
주석 해제 또는 추가 :
allowscp
allowsftp
전송에서 SFTP 프로토콜을 통해 컴퓨터에 연결할 수 있습니다 (FTP 프로그램 선택; 다른 FTP 응용 프로그램과 유사하다고 확신합니다).
rssh 지침에서 (감사와!) 충당 http://www.cyberciti.biz/tips/linux-unix-restrict-shell-access-with-rssh.html .
ifconfig eth1:1 192.168.1.3 up #start up the virtual interface
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth1 ifcfg-eth1:1 #copy default script and match name to our virtual interface
vi ifcfg-eth1:1 #modify eth1:1 script
# ifcfg-eth1 : 1 | 다음과 같이 수정하십시오 :
DEVICE = eth1 : 1
IPADDR = 192.168.1.3
NETMASK = 255.255.255.0
NETWORK = 192.168.1.0
ONBOOT = yes
NAME = eth1 : 1
필요한만큼 반복하여 가상 인터페이스를 추가하십시오. ONBOOT=yes
ifcfg-eth1 : 1 파일 의 행으로 인해 시스템이 부팅되거나 네트워크가 시작 / 재시작 될 때이 인터페이스가 나타납니다.
service network restart
인터페이스 eth0 종료 : [OK]
인터페이스 eth1 종료 : [OK]
루프백 인터페이스 종료 : [OK]
루프백 인터페이스 시작 : [OK]
인터페이스 eth0 가져 오기 : [OK]
인터페이스 eth1 가져 오기 : [OK]
ping 192.168.1.3
192.168.1.3에서 64 바이트 : icmp_seq = 1 ttl = 64 시간 = 0.105ms
위의 rssh 섹션에서 SFTP에 사용할 사용자를 추가했습니다. 이 사용자의 홈 디렉토리에 'https'라는 폴더를 만들었습니다. 이 사이트에 대한 문서가있는 곳이므로 가상 호스트를 추가해야합니다. 이 사이트에 대해 위의 가상 인터페이스를 사용합니다 (여기서는 dev.site.local이라고 함).
vi /etc/http/conf/httpd.conf
httpd.conf 끝에 다음을 추가하십시오.
<VirtualHost 192.168.1.3:80>
ServerAdmin dev@site.local
DocumentRoot /home/dev/https
ServerName dev.site.local
ErrorLog /home/dev/logs/error_log
TransferLog /home/dev/logs/access_log
</VirtualHost>
나는 모든 것을 체크 아웃하기 위해 더미 index.html 파일을 https 디렉토리에 넣었다. 탐색을 시도했지만 권한 거부 오류가 발생했습니다. 로그는 진행중인 작업에 대한 명확한 참조 만 제공했습니다.
[월 5 월 17 일 14:57:11 2010] [오류] [클라이언트 192.168.1.100] (13) 권한 거부 : /index.html에 대한 액세스가 거부되었습니다.
나는 chmod 777 등을 시도했다. al., 그러나 아무 소용이 없습니다. https 디렉토리와 그 부모 디렉토리를 chmod + x해야했습니다.
chmod +x /home
chmod +x /home/dev
chmod +x /home/dev/https
이것은 그 문제를 해결했다.
로컬 Windows Server 2003 상자를 통해 DNS를 처리하고 있습니다. 그러나 BIND에 대한 CentOS 문서는 http://www.centos.org/docs/5/html/Deployment_Guide-en-US/ch-bind.html 에서 찾을 수 있습니다 .
SSL을 작동시키기 위해 httpd.conf에서 다음을 변경했습니다.
NameVirtualHost 192.168.1.3:443 #make sure this line is in httpd.conf
<VirtualHost 192.168.1.3:443> #change port to 443
ServerAdmin dev@site.local
DocumentRoot /home/dev/https
ServerName dev.site.local
ErrorLog /home/dev/logs/error_log
TransferLog /home/dev/logs/access_log
</VirtualHost>
불행히도 SSL로 페이지에 액세스하려고 할 때 (오류 코드 : ssl_error_rx_record_too_long) 오류가 계속 발생합니다. JamesHannah가 아래 에서 정상적으로 지적했듯이 , 나는 httpd.conf에 인증서의 위치를 설정하지 않았으므로 브라우저가 엉뚱한 인증서를 만들 때 브라우저에서 페이지를 가져 왔습니다.
먼저 CA 를 설정하고 인증서 파일을 만들어야했습니다. http://www.debian-administration.org/articles/284 에서 프로세스에 대한 훌륭한 연습이 발견되었습니다 .
이 기사에서 취한 관련 단계는 다음과 같습니다.
mkdir /home/CA
cd /home/CA/
mkdir newcerts private
echo '01' > serial
touch index.txt #this and the above command are for the database that will keep track of certs
디렉토리에 openssl.cnf
파일을 작성하고 /home/CA/
위에 링크 된 연습 에 따라 파일을 편집하십시오. (참고로 완성 된 openssl.cnf 파일은 다음과 같습니다. http://pastebin.com/raw.php?i=hnZDij4T )
openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -days 3650 -config ./openssl.cnf #this creates the cacert.pem which gets distributed and imported to the browser(s)
openssl.cnf
연습 지침에 따라 다시 수정 되었습니다.
#generates certificate request, and key.pem which I renamed dev.key.pem.
openssl req -sha1 -new -nodes -out dev.req.pem -config ./openssl.cnf
openssl.cnf
연습 지침에 따라 다시 수정 되었습니다.
#create and sign certificate.
openssl ca -out dev.cert.pem -md sha1 -config ./openssl.cnf -infiles dev.req.pem
중대한!
파일을 이동하고 새 위치의 httpd.conf에서 참조하십시오
cp dev.cert.pem /home/dev/certs/cert.pem
cp dev.key.pem /home/certs/key.pem
인증서를 반영하고 SSLEngine을 켜도록 httpd.conf를 업데이트했습니다.
NameVirtualHost 192.168.1.3:443
<VirtualHost 192.168.1.3:443>
ServerAdmin dev@site.local
DocumentRoot /home/dev/https
SSLEngine on
SSLCertificateFile /home/dev/certs/cert.pem
SSLCertificateKeyFile /home/dev/certs/key.pem
ServerName dev.site.local
ErrorLog /home/dev/logs/error_log
TransferLog /home/dev/logs/access_log
</VirtualHost>
CA cert.pem을 웹에 액세스 할 수있는 장소에 넣고 브라우저로 다운로드 / 가져 오기하십시오. 이제 오류나 경고없이 https : //dev.site.local 을 방문 할 수 있습니다 .
그리고 내가있는 곳입니다. 진행하면서 계속 편집하겠습니다. SSL 이메일을 구성하고 MySQL 서버가 될 다른 Box에 대한 보안 연결을 구성하는 방법에 대한 팁을 주시면 감사하겠습니다.