Tôi đang trong quá trình cài đặt lại HĐH trên máy sẽ được sử dụng để lưu trữ một vài ứng dụng cho doanh nghiệp của chúng tôi. Các ứng dụng sẽ chỉ cục bộ; truy cập từ các máy khách bên ngoài sẽ chỉ thông qua VPN.
Thiết lập trước đó đã sử dụng bảng điều khiển lưu trữ (Plesk) cho hầu hết quản trị viên và tôi đang xem xét sử dụng một phần mềm tương tự khác để cài đặt lại - nhưng tôi nghĩ rằng cuối cùng tôi cũng nên tìm hiểu cách thức hoạt động của nó. Tôi có thể làm hầu hết những điều mà phần mềm sẽ làm cho tôi, nhưng tôi không rõ về sự cộng sinh của tất cả. Đây hoàn toàn là một nỗ lực để tạo khoảng cách xa hơn với vùng đất của Lập trình viên / Lập trình viên Cấu hình , nếu có thể.
Tôi không thể tìm thấy hướng dẫn đầy đủ ở bất cứ đâu cho những gì tôi đang tìm kiếm, vì vậy tôi nghĩ rằng tôi đã đưa ra câu hỏi này và nếu mọi người có thể giúp tôi trên đường tôi sẽ chỉnh sửa câu trả lời này và ghi lại tiến trình của tôi / cạm bẫy. Hy vọng một ngày nào đó điều này sẽ giúp ai đó xuống dòng.
Các chi tiết:
- CentOS 5.5 x86_64
- httpd: Apache / 2.2.3
- MySQL: 5.0.77 (sẽ được nâng cấp)
- PHP: 5.1 (sẽ được nâng cấp)
Những yêu cầu:
- BẢO VỆ!!
- Chuyển tập tin an toàn
- Truy cập khách hàng an toàn (SSL Certs và CA)
- Lưu trữ dữ liệu an toàn
- Kết nối an toàn với một máy cục bộ khác (MySQL)
- Virtualhost / nhiều tên miền phụ
- Email địa phương sẽ tốt, nhưng không quan trọng
Các bước:
Trong khi thực hiện cài đặt, tôi đã kiểm tra tùy chọn Cấu phần máy chủ với suy nghĩ rằng tôi sẽ sử dụng một quản trị viên giống như Plesk khác. Nhìn nhận lại, xem xét tôi đã quyết định cố gắng đi theo con đường của riêng mình, đây có lẽ không phải là ý tưởng tốt nhất.
Thiết lập người dùng, địa chỉ mạng / IP, v.v. Cập nhật / nâng cấp Yum.
Để nâng cấp PHP và MySQL lên các phiên bản mới nhất, tôi đã phải tìm đến một repo khác ngoài CentOS. IUS trông thật tuyệt và tôi rất vui vì đã tìm thấy nó!
Thêm kho IUS vào trình quản lý gói của chúng tôi
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
Xóa phiên bản cũ của PHP và cài đặt phiên bản mới hơn khỏi 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)
Nâng cấp MySQL từ kho IUS
/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
Hướng dẫn nâng cấp lịch sự của wiki IUS: http://wiki.iuscommunity.org/Doc/ClientUsageGuide .
scp
và sftp
truy cập, mà không cho phép ssh
đăng nhậpcd /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
Chỉnh sửa /etc/rssh.conf
để cấp quyền truy cập vào SFTP cho người dùng rssh.
vi /etc/rssh.conf
Bỏ ghi chú hoặc thêm:
allowscp
allowsftp
Điều này cho phép tôi kết nối với máy thông qua giao thức SFTP trong Transmit (chương trình FTP mà tôi chọn; tôi chắc chắn nó tương tự với các ứng dụng FTP khác).
hướng dẫn rssh chiếm đoạt (với sự đánh giá cao!) từ 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 | sửa đổi để nó trông như thế này:
DEVICE = eth1: 1
IPADDR = 192.168.1.3
NETMASK = 255.255.255.0
NETWORK = 192.168.1.0
ONBOOT = yes
NAME = eth1: 1
Thêm nhiều giao diện ảo khi cần bằng cách lặp lại. Do ONBOOT=yes
dòng trong tệp ifcfg-eth1: 1, giao diện này sẽ được đưa lên khi hệ thống khởi động hoặc mạng khởi động / khởi động lại.
service network restart
Tắt giao diện eth0: [OK]
Tắt giao diện eth1: [OK]
Tắt giao diện loopback: [OK]
Đưa giao diện loopback: [OK]
Đưa giao diện eth0: [OK]
Đưa giao diện eth1: [OK]
ping 192.168.1.3
64 byte từ 192.168.1.3: icmp_seq = 1 ttl = 64 time = 0.105 ms
Trong phần rssh ở trên tôi đã thêm một người dùng để sử dụng cho SFTP. Trong thư mục chính của người dùng này, tôi đã tạo một thư mục có tên 'https'. Đây là nơi các tài liệu cho trang web này sẽ sống, vì vậy tôi cần thêm một máy chủ ảo sẽ trỏ đến nó. Tôi sẽ sử dụng giao diện ảo ở trên cho trang web này (ở đây được gọi là dev.site.local).
vi /etc/http/conf/httpd.conf
Thêm phần sau vào cuối 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>
Tôi đặt một tệp index.html giả trong thư mục https chỉ để kiểm tra mọi thứ. Tôi đã thử duyệt nó và đã gặp phải sự cho phép từ chối lỗi. Nhật ký chỉ đưa ra một tham chiếu mơ hồ cho những gì đang diễn ra:
[Thứ hai 17 tháng 5 14:57:11 2010] [lỗi] [máy khách 192.168.1.100] (13) Quyền bị từ chối: quyền truy cập vào /index.html bị từ chối
Tôi đã thử chmod 777 et. al., nhưng vô ích. Hóa ra, tôi cần chmod + x thư mục https và thư mục mẹ của nó.
chmod +x /home
chmod +x /home/dev
chmod +x /home/dev/https
Điều này đã giải quyết vấn đề đó.
Tôi đang xử lý DNS thông qua hộp Windows Server 2003 cục bộ của chúng tôi. Tuy nhiên, tài liệu CentOS cho BIND có thể được tìm thấy ở đây: http://www.centos.org/docs/5/html/Deployment_Guide-en-US/ch-bind.html
Để SSL hoạt động, tôi đã thay đổi như sau trong 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>
Thật không may, tôi liên tục gặp lỗi (Mã lỗi: ssl_error_rx_record_too_long) khi cố gắng truy cập một trang có SSL. Như JamesHannah duyên dáng chỉ ra bên dưới , tôi đã không thiết lập vị trí của các certs trong httpd.conf, và do đó, việc trang bị ném vào broswer là chứng chỉ khiến trình duyệt chùn bước.
Vì vậy, trước tiên, tôi cần thiết lập CA và tạo các tệp chứng chỉ. Tôi tìm thấy một hướng dẫn tuyệt vời (nếu cũ) về quy trình ở đây: http .
Dưới đây là các bước có liên quan tôi đã thực hiện từ bài viết đó:
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
Tạo một openssl.cnf
tệp trong /home/CA/
thư mục và chỉnh sửa nó theo hướng dẫn được liên kết ở trên. (Để tham khảo, tệp openssl.cnf đã hoàn thành của tôi trông như thế này: 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)
Sửa đổi openssl.cnf
một lần nữa theo hướng dẫn hướng dẫn.
#generates certificate request, and key.pem which I renamed dev.key.pem.
openssl req -sha1 -new -nodes -out dev.req.pem -config ./openssl.cnf
Sửa đổi openssl.cnf
một lần nữa theo hướng dẫn hướng dẫn.
#create and sign certificate.
openssl ca -out dev.cert.pem -md sha1 -config ./openssl.cnf -infiles dev.req.pem
QUAN TRỌNG!
Di chuyển các tệp và tham chiếu chúng từ httpd.conf ở vị trí mới
cp dev.cert.pem /home/dev/certs/cert.pem
cp dev.key.pem /home/certs/key.pem
Tôi đã cập nhật httpd.conf để phản ánh các certs và bật SSLEngine:
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>
Đặt CA cert.pem ở nơi có thể truy cập web và tải xuống / nhập nó vào trình duyệt của tôi. Bây giờ tôi có thể truy cập https: //dev.site.local mà không có lỗi hoặc cảnh báo.
Và đây là nơi tôi đang ở. Tôi sẽ tiếp tục chỉnh sửa điều này khi tôi tiến bộ. Bất kỳ mẹo nào về cách định cấu hình email SSL và / hoặc định cấu hình kết nối an toàn với Hộp khác sẽ là máy chủ MySQL sẽ được đánh giá cao.