نصب و پیکربندی ISPConfig 3 روی سرور لینوکس Centos 7
این آموزش نحوه آماده سازی یک سرور لینوکس CentOS 7 x86_64 برای نصب و راه اندازی ISPConfig 3 و همچنین نحوه نصب ISPConfig 3 بر روی این سرور را نشان می دهد. ISPConfig 3 یک کنترل پنل وب هاستینگ است که اجازه می دهد سرویس های زیر را از طریق یک مرورگر وب، پیکربندی کنید: وب سرور nginx ، میل سرور Postfix ، MySQL ، BIND nameserver ، PureFTPd ، SpamAssassin ، ClamAV ، Mailman و … .
از آنجایی که نسخه ۳٫۰٫۴ ISPConfig علاوه بر آپاچی به طور کامل از وب سرور nginx پشتیبانی میکند ، این آموزش، راه اندازی سروری را پوشش می دهد که از nginx استفاده میکند .
به منظور یادگیری نحوه استفاده از ISPConfig 3، توصیه میشود که ISPConfig 3 Manual را دانلود کنید .
نکات مقدماتی :
لطفا قبل از انجام این آموزش لینوکس ۷ را نصب و راه اندازی کنید.
اطلاعات این آموزش به شرح زیر می باشد :
Hostename: server1.example.com
IP address: 192.168.0.100
Gateway: 192.168.0.1
این تنظیمات ممکن است برای شما متفاوت باشد، بنابراین باید با موارد مناسب جایگزین کنید . با استفاده از آموزش زیر سرور CentOS 7 minimal را نصب کنید :
https://www.howtoforge.com/centos-7-server
نصب ویرایشگر نانو و تنظیم /etc/hosts
1
|
yum –y install nano wget
|
با اجرای دستور زیر /etc/hosts را ویرایش کرده و hostname را به server1.example.com تغییر دهید :
1
|
nano /etc/hosts
|
1
2
3
4
|
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.0.100 server1.example.com server1
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
|
1
|
echo ‘server1.example.com’ > /etc/hostname
|
پیکربندی فایروال و نصب برخی نرم افزار های شبکه :
در پایان این آموزش، ISPConfig همراه با فایروال نصب خواهد شد بنابراین در این مرحله میتوانید فایروال پیش فرض CentOS را با استفاده از دستورات زیر غیر فعال کنید .
1
2
|
systemctl stop firewalld.service
systemctl disable firewalld.service
|
1
2
3
4
|
[root@server1 ~]# systemctl disable firewalld.service
rm ‘/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service’
rm ‘/etc/systemd/system/basic.target.wants/firewalld.service’
[root@server1 ~]#
|
برای بررسی غیر فعال شدن فایروال دستور زیر را اجرا کنید :
1
|
firewall–cmd —state
|
1
2
3
|
[root@server1 ~]# firewall-cmd –state
not running
[root@server1 ~]#
|
1
|
yum –y install net–tools NetworkManager–tui
|
غیر فعال کردن SELinux
SELinux یک افزونه ی امنیتی لینوکس CentOS است ، که شما در این آموزش برای پیکربندی یک سیستم امن به آن نیاز ندارید چون معمولا مشکلات آن بیشتر از مزایای آن است . بنابراین با اجرای دستورات زیر فایل /etc/selinux/config را ویرایش کرده و SELinux را غیر فعال کنید :
1
|
nano /etc/selinux/config
|
1
2
3
4
5
6
7
8
9
10
|
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing – SELinux security policy is enforced.
# permissive – SELinux prints warnings instead of enforcing.
# disabled – No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted – Targeted processes are protected,
# mls – Multi Level Security protection.
SELINUXTYPE=targeted
|
سپس سیستم را ریبوت کنید :
1
|
Reboot
|
فعال کردن مخازن دیگر و نصب برخی نرم افزارها:
برای نصب مخازن EPEL بر روی سیستم CentOS دستورات زیر را اجرا کنید :
1
|
yum –y install epel–release
|
1
|
yum –y install yum–priorities
|
پس از باز کردن فایل /etc/yum.repos.d/epel.repo ، در بخش [epel] خط priority=10 را اضافه کرده و سپس پکیج های موجود در سیستم را آپدیت کنید :
1
|
nano /etc/yum.repos.d/epel.repo
|
1
2
3
4
5
6
7
8
9
10
11
|
[epel]
name=Extra Packages for Enterprise Linux 7 – $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[...]
|
1
|
yum update
|
اکنون برخی از پکیج های نرم افزار مورد نیاز را نصب کنید :
1
|
yum –y groupinstall ‘Development Tools’
|
نصب Quota
برای نصب quota دستور زیر را اجرا کنید:
1
|
yum –y install quota
|
سپس چک کنید که quota در حال حاضر در فایل های سیستمی که وب سایت ((/var/www و اطلاعات maildir ذخیره شده است فعال شده یا خیر … .
1
|
mount | grep ‘ / ‘
|
1
2
3
|
[root@server1 ~]# mount | grep ‘ / ‘
/dev/mapper/centos–root on / type xfs (rw,relatime,attr2,inode64,noquota)
[root@server1 ~]#
|
اگر یک پارتیشن /var جداگانه دارید ، دستور زیر را اجرا کنید:
1
|
mount | grep ‘ /var ‘
|
اگر خط شامل کلمه “noquota” باشد با مراحل زیر quota را فعال کنید :
فعال کردن quota روی پارتیشن روت :
به طور معمول شما باید quota را از فایل / etc / fstab فعال کنید، اما اگر فایل های سیستمی، فایل های سیستمی ریشه “/” باشد، quota باید توسط یک boot parameter از هسته لینوکس فعال شود. فایل پیکربندی grub را ویرایش کنید :
1
|
nano /etc/default/grub
|
خطی که با GRUB_CMDLINE_LINUX شروع میشود را پیدا کنید و مطابق زیر، rootflags=uquota,gquotaرا به انتهای خط اضافه کنید :
1
2
3
4
|
[...]
GRUB_CMDLINE_LINUX=“rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos/root crashkernel=auto vconsole.keymap=us rhgb quiet rootflags=uquota,gquota”
[...]
|
سپس با اجرای دستورات زیر تغییرات را اعمال و سرور را ریبوت کنید :
1
2
|
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg_bak
grub2–mkconfig –o /boot/grub2/grub.cfg
|
1
|
reboot
|
اکنون فعال بودن quota را چک کنید، در صورتی که فعال باشد در خروجی، “usrquota,grpquota” را مشاهده خواهید کرد.
1
|
mount | grep ‘ / ‘
|
1
2
3
|
[root@server1 ~]# mount | grep ‘ / ‘
/dev/mapper/centos–root on / type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)
[root@server1 ~]#
|
فعال کردن quota روی یک پارتیشن /var جداگانه :
اگر یک پارتیشن /var جداگانه دارید ، فایل /etc/fstab را ویرایش کرده و ,uquota,gquota را به /dev/mapper/centos-var اضافه کنید :
1
|
nano /etc/fstab
|
1
2
3
4
5
6
7
8
9
10
11
|
#
# /etc/fstab
# Created by anaconda on Sun Sep 21 16:33:45 2014
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk’
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos–root / xfs defaults 1 1
/dev/mapper/centos–var /var xfs defaults,uquota,gquota 1 2
UUID=9ac06939–7e43–4efd–957a–486775edd7b4 /boot xfs defaults 1 3
/dev/mapper/centos–swap swap swap defaults 0 0
|
سپس برای فعال کردن quota دستور زیر را اجرا کنید :
1
|
mount –o remount /var
|
1
2
|
quotacheck –avugm
quotaon –avug
|
آموزش نصب و کانفیگ ISPConfig 3 روی سرور لینوکس Centos 7
تنظیم ساعت سیستم :
برای همزمان سازی ساعت سیستم با سرور NTP یا network time protocol دستور زیر را اجرا کنید :
1
|
yum –y install ntp
|
راه اندازی MariaDB
برای نصب MariaDB و کلاینت دستور زیر را اجرا کنید :
1
|
yum –y install mariadb mariadb–server
|
برای اجرای MariaDB بعد از بوت شدن دستور زیر را اجرا کنید :
1
2
|
systemctl enable mariadb.service
systemctl start mariadb.service
|
برای اکانت روت، MySQL تعیین کنید :
1
|
mysql_secure_installation
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
[root@server1 ~]# mysql_secure_installation
/usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we‘ll need the current
password for the root user. If you’ve just installed MariaDB, and
you haven‘t set the root password yet, the password will be blank,
so you should just press enter here.<–ENTER
Enter current password for root (enter for none): <–ENTER
OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n]<–ENTER
New password: <–yourmariadbpassword
Re-enter new password: <–yourmariadbpassword
Password updated successfully!
Reloading privilege tables..
… Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] <–ENTER
… Success!
Normally, root should only be allowed to connect from ‘localhost‘. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n]<–ENTER
… Success!
By default, MariaDB comes with a database named ‘test‘ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n]<–ENTER
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] <–ENTER
… Success!
Cleaning up…
All done! If you’ve completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
[root@server1 ~]#
|
نصب و راه اندازی Dovecot :
برای نصب Dovecot ، ایجاد یک فایل خالی dovecot-sql.conf ، ایجاد پیوند نمادی و ایجاد لینک های startup سیستم و در نهایت اجرای Dovecot دستورات زیر را اجرا کنید:
1
|
yum –y install dovecot dovecot–pigeonhole dovecot–mysql
|
1
2
|
touch /etc/dovecot/dovecot–sql.conf
ln –s /etc/dovecot/dovecot–sql.conf /etc/dovecot–sql.conf
|
1
2
|
systemctl enable dovecot.service
systemctl start dovecot.service
|
نصب و راه اندازی Postfix
برای نصب Postfix ، خاموش کردن یا غیر فعال کردن Sendmail و اجرای Postfix دستورات زیر را اجرا کنید :
1
|
yum –y install postfix
|
1
2
3
4
5
6
|
systemctl enable mariadb.service
systemctl start mariadb.service
systemctl stop sendmail.service
systemctl disable sendmail.service
systemctl enable postfix.service
systemctl restart postfix.service
|
نصب و راه اندازی Getmail
برای نصب Getmail می توانید از دستور زیر استفاده کنید :
1
|
yum –y install getmail
|
نصب و راه اندازی Amavisd-new ، SpamAssassin و ClamAV
برای نصب و راه اندازی Amavisd-new ، SpamAssassin و ClamAV دستور زیر را اجرا کرده و سپس فایل پیکربندی /etc/freshclam.conf را ویرایش کنید :
1
|
yum –y install amavisd–new spamassassin clamav clamd clamav–update unzip bzip2 unrar perl–DBD–mysql
|
1
|
nano /etc/freshclam.conf
|
در این فایل خط “Example” را از حالت کامنت خارج کرده و سپس freshclam، amavisd و clamd.amavisd را اجرا کنید :
1
2
3
|
[....]
# Example
[....]
|
1
2
3
|
sa–update
freshclam
systemctl enable amavisd.service
|
نصب و راه اندازی Nginx ، PHP5 (PHP-FPM) و Fcgiwrap
Nginx به عنوان یک پکیج برای لینوکس ۷٫۰ (از EPEL) در دسترس است که ما می توانیم آن را به شرح زیر نصب کنیم:
1
|
yum –y install nginx
|
اگر در حال حاضر Apache2 روی سیستم نصب شده ، آن را متوقف کرده و لینک های راه اندازی سیستم آپاچی را حذف کنید:
1
|
systemctl stop httpd.service
|
1
|
systemctl disable httpd.service
|
سپس لینک راه اندازی سیستم nginx را ایجاد و اجرا کنید :
1
2
|
systemctl enable nginx.service
systemctl start nginx.service
|
(اگر apache2 و nginx باهم روی سیستم نصب شده باشند ، اینستالر ISPConfig 3 از شما میخواهد بین این دو، یکی را انتخاب کنید که شما در این آموزش باید nginx را انتخاب نمایید. اما اگر فقط یکی از این دو نصب شده باشد، ISPConfig تنظیمات لازم را به صورت خودکار انجام خواهد داد.)
شما میتوانید php-fpm را همراه با php-cli و چند ماژول PHP5 مانند php-mysql ، به شرح زیر نصب کنید :
1
|
yum –y install php–fpm php–cli php–mysql php–gd php–imap php–ldap php–odbc php–pear php–xml php–xmlrpc php–pecl–apc php–magickwand php–mbstring php–mcrypt php–mssql php–snmp php–soap php–tidy
|
سپس فایل /etc/php.ini… را باز کرده و error reporting را تغییر دهید ، همچنین cgi.fix_pathinfo را مساوی ۰ قرار دهید :
1
|
nano /etc/php.ini
|
1
2
3
4
|
[...]
;error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
error_reporting = E_ALL & ~E_NOTICE
[...]
|
1
|
nano /etc/php.ini
|
1
2
3
4
5
6
7
8
9
10
|
[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP‘s
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting
; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo
cgi.fix_pathinfo=0
[...]
|
برای کسب اطلاعات بیشتر به لینک زیر مراجعه کنید :
http://wiki.nginx.org/Pitfalls
علاوه بر این، هنگامی که میخواهید یک اسکریپت php را در مرورگرتان فراخوانی کنید به منظور جلوگیری از خطاهایی مانند:
1
|
[08–Aug–2011 18:07:08] PHP Warning: phpinfo(): It is not safe to rely on the system‘s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Europe/Berlin‘ for ‘CEST/2.0/DST‘ instead in /usr/share/nginx/html/info.php on line 2
|
در /var/log/php-fpm/www-error.log ، ، باید تنظیمات date.timezone را در /etc/php.ini تغییر دهید :
1
2
3
4
5
6
|
[...]
[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone = “Europe/Berlin”
[...]
|
در مرحله بعد، لینک های راه اندازی سیستم PHP-FPM را ایجاد و اجرا کنید:
1
2
|
systemctl enable php–fpm
systemctl restart php–fpm
|
برای دریافت پشتیبانی CGI در nginx، شما باید Fcgiwrap را نصب کنید و از آنجایی که پکیجی با عنوان fcgiwrap در CentOS 7 وجود ندارد ، باید ابتدا پیش نیاز های زیر را نصب و سپس fcgiwrap را ایجاد کنید:
1
|
yum –y install fcgi–devel
|
1
2
3
4
5
6
7
|
cd /usr/local/src/
git clone git://github.com/gnosek/fcgiwrap.git
cd fcgiwrap
autoreconf –i
./configure
make
make install
|
با این دستور fcgiwrap در /usr/local/sbin/fcgiwrap نصب خواهد شد ، اکنون باید پکیج spawn-fcgi را که اجازه میدهدfcgiwrap به عنوان یک daemon اجرا شود را نصب کنید:
1
|
yum –y install spawn–fcgi
|
فایل /etc/sysconfig/spawn-fcgi… را باز کرده و آن را به شرح زیر تغییر دهید:
1
|
nano /etc/sysconfig/spawn–fcgi
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# You must set some working options before the “spawn-fcgi” service will work.
# If SOCKET points to a file, then this file is cleaned up by the init script.
#
# See spawn-fcgi(1) for all possible options.
#
# Example :
#SOCKET=/var/run/php-fcgi.sock
#OPTIONS=”-u apache -g apache -s $SOCKET -S -M 0600 -C 32 -F 1 -P /var/run/spawn-fcgi.pid — /usr/bin/php-cgi”
FCGI_SOCKET=/var/run/fcgiwrap.socket
FCGI_PROGRAM=/usr/local/sbin/fcgiwrap
FCGI_USER=apache
FCGI_GROUP=apache
FCGI_EXTRA_OPTIONS=“-M 0770”
OPTIONS=“-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid — $FCGI_PROGRAM”
|
اکنون یوزر nginx را به گروه Apache اضافه کنید:
1
|
usermod –a –G apache nginx
|
سپس لینک های راه اندازی سیستم spawn-fcgi را ایجاد و اجرا کنید :
1
|
chkconfig spawn–fcgi on
|
1
|
systemctl start spawn–fcgi
|
شما باید سوکت fcgiwrap را در /var/run/fcgiwrap.socket, ، متعلق به کاربر و گروه apache پیدا کنید. (انتظار می رود برخی از اسکریپت ها، به عنوان مثال Mailman، توسط کاربر / گروه apache اجرا شود، به همین دلیل ما spawn-fcgi را به عنوان کاربر / گروه nginx اجرا نمی کنیم، بلکه در عوض، nginx را به گروه apache اضافه میکنیم)