-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall.sh
136 lines (112 loc) · 5.71 KB
/
install.sh
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/usr/bin/env bash
set -x
DOMAIN=project.local
PHP_VER=8.3
PHP_BUILD=20230831
PHALCON_VER=v5.8.0
IDE_KEY=PHPSTORM
VM_IP=192.168.56.37
VM_GW=192.168.56.1
sudo apt update
sudo apt upgrade
sudo apt install -y gcc
sudo apt install -y make
sudo apt install -y nginx
sudo adduser --system --no-create-home --shell /bin/false --group --disabled-login nginx
sudo update-alternatives --set php /usr/bin/php${PHP_VER}
sudo update-alternatives --set phar /usr/bin/phar${PHP_VER}
sudo update-alternatives --set phar.phar /usr/bin/phar.phar${PHP_VER}
sudo update-alternatives --set phpize /usr/bin/phpize${PHP_VER}
sudo update-alternatives --set php-config /usr/bin/php-config${PHP_VER}
sudo apt install -y php${PHP_VER}-fpm
sudo apt install -y php${PHP_VER}-cli
sudo apt install -y php${PHP_VER}-psr
sudo apt install -y php${PHP_VER}-bcmath
sudo apt install -y php${PHP_VER}-curl
sudo apt install -y php${PHP_VER}-dev
sudo apt install -y php${PHP_VER}-gd
sudo apt install -y php${PHP_VER}-intl
sudo apt install -y php${PHP_VER}-mbstring
sudo apt install -y php${PHP_VER}-mysql
sudo apt install -y php${PHP_VER}-sqlite3
sudo apt install -y php${PHP_VER}-xml
sudo apt install -y php${PHP_VER}-zip
sudo apt install -y php${PHP_VER}-xdebug
sudo apt-get install -y wget
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password admin'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password admin'
sudo debconf-set-selections <<< 'opensshd-server opensshd-server/PasswordAuthentication password admin'
sudo apt install -y mysql-server
sudo apt install -y mysql-client
sudo apt install -y htop
sudo apt install -y unzip
sudo apt install -y net-tools
cd /tmp || exit
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
wget http://pear.php.net/go-pear.phar
php go-pear.phar
sudo pecl channel-update pecl.php.net
sudo pecl -d php_suffix=${PHP_VER} install apcu
echo '; priority=20' | sudo tee -a /etc/php/${PHP_VER}/mods-available/apcu.ini
echo 'extension = apcu.so' | sudo tee -a /etc/php/${PHP_VER}/mods-available/apcu.ini
sudo phpenmod -v ${PHP_VER} apcu
wget https://github.com/phalcon/cphalcon/releases/download/${PHALCON_VER}/phalcon-pecl.tgz
pear install phalcon-pecl.tgz
echo '; priority=50' | sudo tee -a /etc/php/${PHP_VER}/mods-available/xdebug.ini
echo "zend_extension = /usr/lib/php/${PHP_BUILD}/xdebug.so" | sudo tee -a /etc/php/${PHP_VER}/mods-available/xdebug.ini
echo 'xdebug.mode = debug' | sudo tee -a /etc/php/${PHP_VER}/mods-available/xdebug.ini
echo 'xdebug.start_with_request = trigger' | sudo tee -a /etc/php/${PHP_VER}/mods-available/xdebug.ini
echo "xdebug.remote_host = \"${VM_GW}\"" | sudo tee -a /etc/php/${PHP_VER}/mods-available/xdebug.ini
echo "xdebug.idekey = \"${IDE_KEY}\"" | sudo tee -a /etc/php/${PHP_VER}/mods-available/xdebug.ini
sudo adduser --quiet --disabled-password --shell /bin/bash --home /home/project --gecos "project" project
echo "project:project" | chpasswd
sudo cp -r /vagrant/* /home/project/
sudo ln -s /home/project/config/php-fpm/project.conf /etc/php/${PHP_VER}/fpm/pool.d/project.conf
sudo cp /home/project/config/php-fpm/phalcon.ini /etc/php/${PHP_VER}/mods-available/
sudo phpenmod -v ${PHP_VER} phalcon
sudo mkdir -p /etc/nginx/sites-enabled
sudo rm -f /etc/nginx/nginx.conf
sudo cp /home/project/config/nginx/nginx.conf /etc/nginx/
sudo ln -s /home/project/config/nginx/project.conf /etc/nginx/sites-enabled/000.project.conf
sudo ln -s /home/project/www /home/project/public_html
sudo mkdir -p /home/project/logs
sudo mkdir -p /home/project/tmp/log
sudo mkdir -p /home/project/tmp/sessions
sudo mkdir -p /home/project/tmp/uploads
sudo mkdir -p /home/project/tmp/cache/i18n
sudo mkdir -p /home/project/tmp/cache/views
sudo chown -R project:project /home/project
sudo chmod 0777 /home/project/tmp
echo "${VM_IP} ${DOMAIN}" | sudo tee -a /etc/hosts
sudo sed -i "s/PasswordAuthentication.*/PasswordAuthentication yes/g" /etc/ssh/sshd_config
sudo systemctl restart sshd
sudo sed -i "s/bind-address.*/bind-address = 0.0.0.0/g" /etc/mysql/mysql.conf.d/mysqld.cnf
sudo sed -i "s/mysqlx-bind-address.*/mysqlx-bind-address = 0.0.0.0/g" /etc/mysql/mysql.conf.d/mysqld.cnf
sudo systemctl restart mysql
mysqladmin -uroot -padmin create project
mysql -uroot -padmin -e "create user 'project'@'localhost' identified by 'project';"
mysql -uroot -padmin -e "grant all privileges on *.* to 'project'@'localhost';"
mysql -uroot -padmin -e "create user 'project'@'%' identified by 'project';"
mysql -uroot -padmin -e "grant all privileges on *.* to 'project'@'%';"
mysql -uroot -padmin -e "flush privileges;"
mysql -uproject -pproject -e "use project; select version();"
mysql -uproject -pproject -e "source /home/project/db/install.sql"
mysql -uproject -pproject -e "source /home/project/db/seed.sql"
sudo mkdir /home/project/certs
sudo usermod -a -G project nginx
sudo openssl dhparam -out /etc/nginx/dhparam.pem 2048
sudo openssl req -x509 -newkey rsa:2048 -nodes -keyout /home/project/certs/${DOMAIN}.key -out /home/project/certs/${DOMAIN}.pem -days 365 -subj "/C=US/ST=Oregon/L=Portland/O=${DOMAIN}/OU=Org/CN=${DOMAIN}"
sudo apt autoremove -y
cp /vagrant/composer.json /tmp
composer install
sudo cp -r vendor /home/project
sudo chown -R project:project /home/project/vendor
sudo phpenmod -v ${PHP_VER} xdebug
sudo systemctl daemon-reload
sudo systemctl restart php${PHP_VER}-fpm
sudo systemctl restart nginx
sudo systemctl enable nginx